目录
Centos7下Hadoop完全分布式集群Hive安装
- 电脑系统:macOS 10.15.4
- 虚拟机软件:Parallels Desktop14
- Hadoop各节点节点操作系统:CentOS 7
- JDK版本:jdk1.8.0_162
- Hive版本:hive-0.13.1-cdh5.3.9.tar.gz
Hive的下载源地址:
第一步:安装软件
(1)上传文件
将本机的安装包上传到虚拟机node1,上传方式:
scp 本机的文件绝对路径 caizhengjie@10.211.55.59:/opt/Hadoop
(2)解压文件
上传成功之后需要对文件赋予权限
chmod u+x hive-0.13.1-cdh5.3.9.tar.gz
解压文件:
tar -zxvf hive-0.13.1-cdh5.3.9.tar.gz
创建软链接:
ln -s hive-0.13.1-cdh5.3.9 hive
第二步:配置环境变量
vim ~/.bashrc
然后添加以下内容,注意三台虚拟机都需要配置环境变量
export HIVE_HOME=/opt/Hadoop/hive
export PATH=$HIVE_HOME/bin:$PATH
最后使之生效
source ~/.bashrc
第三步:修改配置文件
(1)修改文件名称
进入/opt/Hadoop/hive/conf
目录下:
需要将hive-env.sh.template和hive-log4j.properties.template两个文件修改名称
mv hive-env.sh.template hive-env.sh
mv hive-log4j.properties.template hive-log4j.properties
(2)配置hive-env.sh文件
第一处:修改HADOOP_HOME
HADOOP_HOME=/opt/Hadoop/hadoop
第二处:修改HIVE_CONF_DIR
export HIVE_CONF_DIR=/opt/Hadoop/hive/conf
(3)在HDFS上创建Hive的目录
通过查看Hive的官方文档:https://cwiki.apache.org/confluence/display/Hive/GettingStarted
意思是需要在HDFS里面创建/tmp和/user/hive/warehouse两个文件,并且赋予权限
hdfs dfs -mkdir /tmp
hdfs dfs -chmod g+w /tmp
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -chmod g+w /user/hive/warehouse
第四步:启动测试
启动Hive的命令:
[caizhengjie@node1 hive]$ bin/hive
如果出现:
Logging initialized using configuration in file:/opt/Hadoop/hive-0.13.1-cdh5.3.9/conf/hive-log4j.properties
hive>
表示启动成功
如果出现这样的报错信息
Exception in thread "main" java.lang.NoSuchMethodError: jline.Terminal.getTerminal()Ljline/Terminal;
at jline.ConsoleReader.<init>(ConsoleReader.java:191)
at jline.ConsoleReader.<init>(ConsoleReader.java:186)
at jline.ConsoleReader.<init>(ConsoleReader.java:174)
at org.apache.hadoop.hive.cli.CliDriver.getConsoleReader(CliDriver.java:815)
at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:763)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:694)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:633)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
原因可能是Hive中jline.jar与Hadoop中的jline.jar版本不同,启动hive出错
则解决方案是:在$HADOOP_HOME/share/hadoop/yarn/lib中把jline jar删除,把/opt/Hadoop/hive/lib中的jline-0.9.94.jar包替换
scp jline-0.9.94.jar /opt/Hadoop/hadoop/share/hadoop/yarn/lib
重新启动Hive就不会报错了。
第五步:Hive与MySQL集成
(1)配置hive-site.xml文件
在conf文件中是默认没有hive-site.xml文件的,需要自己创建:
vim hive-site.xml
添加如下内容:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node1/metastore?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<property>
<name>javax.jdo.otion.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>199911</value>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
</configuration>
(2)设置用户的链接
查询用户的信息:
show databases;
use mysql;
show tables;
select host,user,authentication_string from user;
更新用户信息:
update user set Host='%' where User = 'root' and Host = 'localhost';
删除用户信息:
delete from user where host = 'localhost';
刷新信息:
flush privileges;
(3)拷贝驱动包到hive的lib目录下
mysql-connector-java-5.1.48.jar ( 在mysql-connector-java-5.1.48.文件中)
scp mysql-connector-java-5.1.48-bin.jar caizhengjie@10.211.55.59:/opt/Hadoop/hive/lib
(4)启动测试
在/opt/datas目录下新建一个test.txt文件
vim test.txt
0001 java
0002 python
0003 c
0004 hadoop
0005 php
0006 linux
0007 spark
通过Hive服务创建表
create table text(id int,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
hive (default)> create table text(id int,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
OK
Time taken: 0.046 seconds
加载test.txt数据到hive表中
load data local inpath '/opt/datas/test.txt' into table text;
hive (default)> load data local inpath '/opt/datas/test.txt' into table text;
Loading data to table default.text
Table default.text stats: [numFiles=1, numRows=0, totalSize=72, rawDataSize=0]
OK
Time taken: 0.173 seconds
查看数据
select * from text;
hive (default)> select * from text;
OK
text.id text.name
1 java
2 python
3 c
4 hadoop
5 php
6 linux
7 spark
查看mysql中的metastore
show databases;
use metastore;
show tables;
select * from TBLS;
图中可以看到hive中的text表。由此说明hive与mysql的集成配置成功!
格式化Hive元数据:
bin/schematool -dbType mysql -initSchema
如果出现格式化失败,就把mysql中元数据库删除掉,再次格式化
以上内容仅供参考学习,如有侵权请联系我删除!
如果这篇文章对您有帮助,左下角的大拇指就是对博主最大的鼓励。
您的鼓励就是博主最大的动力!