目录

  • Centos7下Hadoop完全分布式集群Hive安装
  • 第一步:安装软件
  • (1)上传文件
  • (2)解压文件
  • 第二步:配置环境变量
  • 第三步:修改配置文件
  • (1)修改文件名称
  • (2)配置hive-env.sh文件
  • (3)在HDFS上创建Hive的目录
  • 第四步:启动测试
  • 第五步:Hive与MySQL集成
  • (1)配置hive-site.xml文件
  • (2)设置用户的链接
  • (3)拷贝驱动包到hive的lib目录下
  • (4)启动测试


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的下载源地址:

  • https://archive.cloudera.com/cdh5/cdh/5/

第一步:安装软件

(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

cdh装完hive之后hive再hdfs中的权限 cdh安装hive步骤_hadoop


意思是需要在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;

cdh装完hive之后hive再hdfs中的权限 cdh安装hive步骤_hive_02


更新用户信息

update user set Host='%' where User = 'root' and Host = 'localhost';

删除用户信息

delete from user where host = 'localhost';

cdh装完hive之后hive再hdfs中的权限 cdh安装hive步骤_java_03


刷新信息

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;

cdh装完hive之后hive再hdfs中的权限 cdh安装hive步骤_java_04


图中可以看到hive中的text表。由此说明hive与mysql的集成配置成功!

格式化Hive元数据:

bin/schematool -dbType mysql -initSchema

cdh装完hive之后hive再hdfs中的权限 cdh安装hive步骤_big data_05


如果出现格式化失败,就把mysql中元数据库删除掉,再次格式化