前期准备:
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、刷新:
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,问题即解决。