Bootstrap

Hadoop 与 Hive 兼容性问题(一)部署Hadoop与Hive

部署 Hadoop 和 Hive

组件下载地址:https://archive.apache.org/dist/

版本选择

框架HiveHadoop
版本3.1.33.1.3

Hadoop 部署

集群规划

主机hadoop102hadoop103hadoop104
服务NameNode
DataNodeDataNodeDataNode
ResourceManager
NodeManagerNodeManagerNodeManager

集群安装:https://blog.csdn.net/weixin_45417821/article/details/115268740 只看Hadoop集群安装部分即可

Hive 部署

集群规划

主机hadoop102
服务Hivesever2
Metastore

Hive 安装

1)把 apache-hive-3.1.3-bin.tar.gz上传到 linux 的/opt/software 目录下

2)解压 apache-hive-3.1.3-bin.tar.gz 到/opt/module目录下面

[root@hadoop102 hive]# tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /opt/module/

3)修改 apache-hive-3.1.2-bin.tar.gz 的名称为 hive

[root@hadoop102 module]# mv apache-hive-3.1.3-bin/ hive

4)修改/etc/profile,添加环境变量

[root@hadoop102 hive]# vim /etc/profile.d/my_env.sh 

添加内容
#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin

5)解决日志 Jar 包冲突,进入/opt/module/hive/lib 目录(有冲突再做)

[root@hadoop102 lib]$ mv log4j-slf4j-impl-2.10.0.jar log4j-slf4j-impl-2.10.0.jar.b

Hive 元数据配置到 MySQL

拷贝驱动

将 MySQL 的 JDBC 驱动拷贝到 Hive 的 lib 目录下

[root@hadoop102 lib]$ cp /opt/software/mysql/mysql-connector-java-5.1.27-bin.jar /opt/module/hive/lib/

配置 Metastore 到 MySQL

在$HIVE_HOME/conf 目录下新建 hive-site.xml 文件

[root@hadoop102 conf]$ vim hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
 <property>
 	<name>javax.jdo.option.ConnectionURL</name>
	<value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value>
 </property>
 <property>
 	<name>javax.jdo.option.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>000000</value>
 </property>
 <property>
 	<name>hive.metastore.warehouse.dir</name>
 	<value>/user/hive/warehouse</value>
 </property>
 <property>
 	<name>hive.metastore.schema.verification</name>
 	<value>false</value>
 </property>
 <property>
 	<name>hive.server2.thrift.port</name>
 	<value>10000</value>
 </property>
 <property>
 	<name>hive.server2.thrift.bind.host</name>
 	<value>hadoop102</value>
 </property>
 <property>
	<name>hive.metastore.event.db.notification.api.auth</name>
 	<value>false</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>

启动 Hive

初始化元数据库

1)登陆MySQL

[root@hadoop102 conf]$ mysql -uroot -p000000

2)新建 Hive 元数据库

mysql> create database metastore;
mysql> quit;

3)初始化 Hive 元数据库

[root@hadoop102 conf]$ schematool -initSchema -dbType mysql -verbose

会报如下异常:暂且搁置

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V

测试

测试 Hadoop

1)启动 Hadoop

[root@hadoop102 ~]$ start-dfs.sh
[root@hadoop103 ~]$ start-yarn.sh

2)运行 Hadoop 自带的测试任务

[root@hadoop102 ~]$ hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 1 1

测试 Hive

1)启动 Hive CLI 客户端

[root@hadoop102 ~]$ hive

此时控制台会出现如下报错信息:

java.lang.NoSuchMethodError: 
com.google.common.base.Preconditions.checkArgument(ZLjava/lang/St
ring;Ljava/lang/Object;)V
;