zoukankan      html  css  js  c++  java
  • 搭建Hive环境

    前期准备:

      1、默认已经搭好了hadoop环境(我的hadoop版本是2.5.0)

      2、这里我用的hive版本是0.13.1

    一、安装Hive

      1、上传hive安装包,将/opt/software下的hive安装包解压到/opt/app目录下

        

      2、进入hive目录下,修改配置文件

        (1)将hive-env.sh.template文件重命名为hive-env.sh,并修改里面的部分内容

        

        (2)在HDFS上创建tmp目录和warehouse目录,并赋予相应的权限

          

       (3)在hive的目录下输入:bin/hive,查看数据库的基本信息

        

    二、安装Mysql

       1、上传mysql安装包,并将/opt/software下的mysql安装包进行解压

        

        

       2、切换到root用户,卸载系统自带的mysql,然后安装我们的mysql的server端

        

        安装成功后,查看登录密码,密码在/root/.mysql_secret文件中,启动mysql,并安装mysql的client端,最后登录进去

        

       登录成功后,进行密码的修改:set password=password(‘’你想用的密码‘’)

       3、进入mysql数据库,配置用户信息

        

        将user表改成下面这样

        

      4、创建hive配置文件hive-site.xml,拷贝mysql驱动jar包到hive/lib目录下,参考链接https://cwiki.apache.org/confluence/display/Hive/AdminManual+MetastoreAdmin

        在hive-site.xml里面加入如下内容:

        

        

          说明:hadoop.test.com是主机名,3306是端口号,root是用户名,centos是密码

       5、修改存放hive日志的路径

         进入hive/conf目录下,将hive-log4j.properties.template重命名成hive-log4j.properties,并修改部分内容如下:

          

          说明:logs目录需要我们手动创建

        至此,Hive环境搭建成功!

    三、补充

      问题1.

      在hive目录下,执行bin/hive时,有时候会抛出这个异常

        java.sql.SQLException: Unable to open a test connection to the given database. JDBC url = jdbc:mysql://hadoopNumber01.medal.com:3306/metastore?createDatabaseIfNotExist=true, username = APP. Terminating connection pool (set lazyInit to true if you     expect to start your database after your app). Original Exception: ------
        java.sql.SQLException: Access denied for user 'APP'@'hadoopNumber01.medal.com' (using password: YES)

      解决方案:

        1、 以root进入mysql

        2、赋予root权限:     

          mysql> GRANT  ALL  PRIVILEGES ON *.* TO 'APP'@'master'

          ->     IDENTIFIED   BY  'some_pass'  WITH GRANT OPTION; 

          这里的master是你的mysql所在的主机名,没有配置ip地址映射的话,这里就是ip地址

          这里的some_pass改成你登录mysql时,所用的密码,我root密码是centos,所以我改成centos

        3、刷新:

                   flush privileges;
      问题2.
      在hive目录下,执行bin/hive时,有时候会抛出这个异常
      Logging initialized using configuration in file:/opt/modules/cdh/hive-0.13.1-cdh5.3.6/conf/hive-log4j.properties
      Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
      ....
      Caused by: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient

      经过报错信息提示分析,可以看出是因为metastore的原因,解决方案有两种:

      1、由于配置好以后,metastore服务没有启动。启动metastore:

        bin/hive --service metastore &

      2、如果没有用到hive的metastore服务,可以先注释掉,注释代码如下:

    <!--<property>
            <name>hive.metastore.uris</name>
            <value>thrift://bigdata-study-104:9083</value>
            <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
    </property>-->

      按照以上步骤处理后,重新启动hive,问题即解决。

  • 相关阅读:
    android.os.NetworkOnMainThreadException的解决方案
    一些LinuxC的小知识点(一)
    一些LinuxC的小知识点(二)
    <assert.h>库学习
    <string.h>的学习
    Java异常的中断和恢复
    Java Collection或Map的同步
    Java经典实例:按字符颠倒字符串
    Java 经典实例: Unicode字符和String之间的转换
    Java经典实例:处理单个字符串
  • 原文地址:https://www.cnblogs.com/medal-li/p/7382273.html
Copyright © 2011-2022 走看看