搭建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,问题即解决。

原文地址:https://www.cnblogs.com/medal-li/p/7382273.html