在上一篇《hadoop的安装总结(一)--hadoop集群基础安装》环境基础上,增加一台mysql主机,作为hive的元数据的存储数据库,配置如下:
四、在hadoop集群上安装hive(安装hive只需要在一台机器上安装就可以)
1.拷贝hive到其中一台机器上
[hadoop@hdp-01~]$ll
总用量90676
-月2123:52
月520:04apps
月521:39hdpdata
-月611:22
2.解压hive到apps/目录
[hadoop@hdp-01~]$/
进入apps/后,将改名为hive
[hadoop@hdp-01apps]$/hive/
3.进入hive的安装目录
[hadoop@hdp-01hive]$ll
总用量476
月623:02bin
月623:02conf
月623:02examples
月623:02hcatalog
月623:02lib
-月302015LICENSE
-月192015NOTICE
-月192015
-月192015RELEASE_
月623:02scripts
修改配置文件进入conf/
[hadoop@hdp-01hive]$cdconf
[hadoop@hdp-01conf]$ll
总用量188
-月302015
-月192015
-月302015
-月302015
-月302015
-月302015
现在就可以直接启动hive了,但是hive默认使用的是单机版的数据库,我们需要另外提供一台mysql数据库(192.168.33.5)
4.配置元数据库信息,新增一个xml配置文件
[hadoop@hdp-01conf]$
在这个配置文件中编辑
configuration
property
/name
valuejdbc:mysql://192.168.33.5:3306/hive?createDatabaseIfNotExist=true/value
descriptionJDBCconnectstringforaJDBCmetastore/description
/property
property
/name
/value
descriptionDriverclassnameforaJDBCmetastore/description
/property
property
/name
valueroot/value
descriptionusernametouseagainstmetastoredatabase/description
/property
property
/name
value123456/value
descriptionpasswordtouseagainstmetastoredatabase/description
/property
/configuration
5.进入到hive目录下的lib目录,将mysql的驱动包拷贝过去
sftpcd/home/hadoop/apps/hive/lib
sftplcdD:/大数据资料/6.hive/
/home/hadoop/apps/hive/lib/
100%937KB937KB/s00:00:00
D:/大数据资料/6.hive/:960372bytestransferredin0seconds(937KB/s)
6.安装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下
如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)
mysql-uroot-p
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
7.Jline包版本不一致的问题,需要拷贝hive的lib目录中的jar包替换掉hadoop中的
/home/hadoop/apps//share/hadoop/yarn/lib/
先删除hadoop的jline
[hadoop@hdp-01lib]$rm/home/hadoop/apps//share/hadoop/yarn/lib/
再拷贝hive的lib目录中的jar包拷贝到hadoop中的
/home/hadoop/apps//share/hadoop/yarn/lib目录下
[hadoop@hdp-01~]cp/home/hadoop/apps/hive/lib/
/home/hadoop/apps//share/hadoop/yarn/lib
8.启动hive
第一种方式:在hive的安装目录下运行bin/hive
第二种方式:
1.先将hive启动为服务:bin/hiveserver2
2.启动符合thrift协议的客户端(另外一台机器或者重开一个bash):
beeline!connectjdbc:hive2://hdp-01:10000
Connectingtojdbc:hive2://hdp-01:10000
Enterusernameforjdbc:hive2://hdp-01:10000:hadoop
Enterpasswordforjdbc:hive2://hdp-01:10000:
Connectedto:ApacheHive()
Driver:HiveJDBC()
Transactionisolation:TRANSACTION_REPEATABLE_READ
(hdp-01是hiveserver2所启动的那台主机名,端口默认是10000)
由于没有配置hive的用户名和密码(没有意义),所以输入用户的时候,就是启动hive的用户hadoop密码是空就OK
总结心得:hive依赖于一台mysql作为元数据存储,但是mysql与hive结合,不知为什么要求mysql的编码集必须为latin1,如果是uft-8的编码集,在hive中drop表等一些update的语句是没有响应的(阻塞),因此,不能忽略mysql的编码集。下一篇将分享hadoop的HA集群的安装文档