大家好,欢迎来到IT知识分享网。
在上一篇《hadoop的安装总结(一)–hadoop集群基础安装》环境基础上,增加一台mysql主机,作为hive的元数据的存储数据库,配置如下:
四、在hadoop集群上安装hive(安装hive只需要在一台机器上安装就可以)
1. 拷贝hive到其中一台机器上
[hadoop@hdp-01 ~]$ ll 总用量 90676 -rw-rw-r–. 1 hadoop hadoop 92834839 9月 21 23:52 apache-hive-1.2.1-bin.tar.gz drwxrwxr-x. 3 hadoop hadoop 4096 1月 5 20:04 apps drwxrwxr-x. 3 hadoop hadoop 4096 1月 5 21:39 hdpdata -rw-rw-r–. 1 hadoop hadoop 4101 1月 6 11:22 wc.jar |
2. 解压hive到apps/目录
[hadoop@hdp-01 ~]$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C apps/ |
进入apps/后,将apache-hive-1.2.1-bin改名为hive
[hadoop@hdp-01 apps]$ mv apache-hive-1.2.1-bin/ hive/ |
3. 进入hive的安装目录
[hadoop@hdp-01 hive]$ ll 总用量 476 drwxrwxr-x. 3 hadoop hadoop 4096 1月 6 23:02 bin drwxrwxr-x. 2 hadoop hadoop 4096 1月 6 23:02 conf drwxrwxr-x. 4 hadoop hadoop 4096 1月 6 23:02 examples drwxrwxr-x. 7 hadoop hadoop 4096 1月 6 23:02 hcatalog drwxrwxr-x. 4 hadoop hadoop 4096 1月 6 23:02 lib -rw-rw-r–. 1 hadoop hadoop 24754 4月 30 2015 LICENSE -rw-rw-r–. 1 hadoop hadoop 397 6月 19 2015 NOTICE -rw-rw-r–. 1 hadoop hadoop 4366 6月 19 2015 README.txt -rw-rw-r–. 1 hadoop hadoop 421129 6月 19 2015 RELEASE_NOTES.txt drwxrwxr-x. 3 hadoop hadoop 4096 1月 6 23:02 scripts |
修改配置文件进入conf/
[hadoop@hdp-01 hive]$ cd conf [hadoop@hdp-01 conf]$ ll 总用量 188 -rw-rw-r–. 1 hadoop hadoop 1139 4月 30 2015 beeline-log4j.properties.template -rw-rw-r–. 1 hadoop hadoop 168431 6月 19 2015 hive-default.xml.template -rw-rw-r–. 1 hadoop hadoop 2378 4月 30 2015 hive-env.sh.template -rw-rw-r–. 1 hadoop hadoop 2662 4月 30 2015 hive-exec-log4j.properties.template -rw-rw-r–. 1 hadoop hadoop 3050 4月 30 2015 hive-log4j.properties.template -rw-rw-r–. 1 hadoop hadoop 1593 4月 30 2015 ivysettings.xml |
现在就可以直接启动hive了,但是hive默认使用的是单机版的数据库,我们需要另外提供一台mysql数据库(192.168.33.5)
4. 配置元数据库信息,新增一个xml配置文件
[hadoop@hdp-01 conf]$ vi hive-site.xml |
在这个配置文件中编辑
<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.33.5:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> <description>password to use against metastore database</description> </property> </configuration> |
5. 进入到hive目录下的lib目录,将mysql的驱动包拷贝过去
sftp> cd /home/hadoop/apps/hive/lib sftp> lcd D:/大数据资料/6.hive/ sftp> put mysql-connector-java-5.1.34.jar Uploading mysql-connector-java-5.1.34.jar to /home/hadoop/apps/hive/lib/mysql-connector-java-5.1.34.jar 100% 937KB 937KB/s 00:00:00 D:/大数据资料/6.hive/mysql-connector-java-5.1.34.jar: 960372 bytes transferred in 0 seconds (937 KB/s) |
6. 安装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下
如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)
mysql -uroot -p
#(执行下面的语句 *.*:所有库下的所有表 %:任何IP地址或主机都可以连接)
GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘root’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
Hive连接mysql数据库的时候,数据库不要使用utf-8的编码,应该使用latin1的编码,下面是配置mysql的字符编码的过程
vi /etc/my.cnf |
编辑内容
[client] default-character-set=latin1 [mysql] no-auto-rehash default-character-set=latin1 [mysqld] datadir=/data/mysql socket=/var/lib/mysql/mysql.sock character-set-server=latin1 #sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES |
7. Jline包版本不一致的问题,需要拷贝hive的lib目录中jline.2.12.jar的jar包替换掉hadoop中的
/home/hadoop/apps/hadoop-2.6.4/share/hadoop/yarn/lib/jline-0.9.94.jar
先删除hadoop的jline
[hadoop@hdp-01 lib]$ rm /home/hadoop/apps/hadoop-2.6.4/share/hadoop/yarn/lib/jline-0.9.94.jar |
再拷贝hive的lib目录中jline.2.12.jar的jar包拷贝到hadoop中的
/home/hadoop/apps/hadoop-2.6.4/share/hadoop/yarn/lib目录下
[hadoop@hdp-01 ~] cp /home/hadoop/apps/hive/lib/jline-2.12.jar /home/hadoop/apps/hadoop-2.6.4/share/hadoop/yarn/lib |
8. 启动hive
第一种方式:在hive的安装目录下运行 bin/hive
第二种方式:
1. 先将hive启动为服务: bin/hiveserver2
2. 启动符合thrift协议的客户端(另外一台机器或者重开一个bash):
beeline> !connect jdbc:hive2://hdp-01:10000 Connecting to jdbc:hive2://hdp-01:10000 Enter username for jdbc:hive2://hdp-01:10000: hadoop Enter password for jdbc:hive2://hdp-01:10000: Connected to: Apache Hive (version 1.2.1) Driver: Hive JDBC (version 1.2.1) Transaction isolation: 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集群的安装文档
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/6194.html