说明:本篇开始主要是对前面的Hadoop2.x大数据组件搭建博文做Hadoop3.x集群搭建方法的升级,不过只会设计到将Hadoop升级为3.x后,受影响的组件,其他的如果没发生变动则不会再写一遍,毕竟没有必要,不过如果搭建中发现前面2.x其他组件受到了影响,且本篇开始没有提供搭建升级,则给博主留言,因为本人也要上班,大厂牛马加班太多。反正总体上来讲较新的版本和老版本只是在搭建要求上有些地方不一样,使用上差别不大。本篇用于搭建的3.x集群为了防止影响,使用了一套新的环境,节点任然是三台,大家如果是从原来的2.x升级,则对照着节点安装就行

192.168.239.181 node001
192.168.239.182 node002
192.168.239.183 node003

本篇安装软件版本

JAVAJDK1.8 这里不再演示,直接准备就行
mysql5.6 安装步骤见 https://blog.csdn.net/dudadudadd/article/details/110874570
hadoop3.1.3 安装步骤见 https://blog.csdn.net/dudadudadd/article/details/139547748
hive3.1.3


Hive

第一步:去官网下载Hive的安装包,直接搜索apache hive就行,下载好之后上传服务器解压,并配置环境变量

export HIVE_HOME=/opt/hive-3.1.3
export PATH=$PATH:${HIVE_HOME}/bin

第二步:进入hive的conf目录下编辑配置文件,新建hive-site.xml文件并追加如下内容,注意这里直接用mysql了,就不介绍默认的元数据库类型了

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- jdbc 链接地址mysql 特别注意要改成自己的mysql所在地址,还有库名也可以自定义,注意mysql里面的元数据库一定不要盲目的手动去建立,不然使用的时候会出问题的,你要想自己先建好,那么要运行alter database hive character set latin1; 把字符集改了-->
	<property>
	  <name>javax.jdo.option.ConnectionURL</name>
	  <value>jdbc:mysql://192.168.1.103:3306/metastore?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=UTF-8</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>
	
	<!-- mysql口令也要改写成自己的口令-->
	<property>
	  <name>javax.jdo.option.ConnectionPassword</name>
	  <value>root</value>
	  <description>password to use against metastore database</description>
	</property>
	
	<!-- hive的warehouse保存目录,就是hive保存数据的目录-->
    <property>
		<name>hive.metastore.warehouse.dir</name>
		<value>/user/hive/warehouse</value>
		<description>location of default database for the warehouse</description>
    </property>
	
	<property>
		<name>hive.cli.print.header</name>
		<value>true</value>
	</property>

	<property>
		<name>hive.cli.print.current.db</name>
		<value>true</value>
	</property>

	<property>
		<name>hive.exec.compress.output</name>
		<value>false</value>
	</property>
	
	<!-- 元数据服务响应地址 -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://node001:9083</value>
    </property>

	<!-- 启用hiveserver2 -->
	<property>
		<name>hive.server2.enable</name>
		<value>true</value>
	</property>

	<!-- hiveserver2响应连接的端口,默认10000 -->
	<property>
		<name>hive.server2.thrift.port</name>
		<value>10000</value>
	</property>

	<!-- hiveserver2响应范围控制 -->
	<property>
		<name>hive.server2.thrift.bind.host</name>
		<value>0.0.0.0</value>
	</property>

	<!-- hiveserver2可以用http服务以及服务端口 -->
	<property>
		<name>hive.server2.transport.mode</name>
		<value>binary,http</value>
	</property>
	
	<property>
		<name>hive.server2.thrift.http.port</name>
		<value>10001</value>
	</property>
</configuration>

第三步:把hive-env.sh.template文件末尾的.template去掉,让文件启用,且找到并修改如下配置

# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/opt/hadoop-3.1.3

# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/opt/hive-3.1.3/conf

第四步:在hive3.1.3和hadoop3.1.3整合的时候,会出现一个jar版本冲突,你要进入hive的lib目录下删掉guava-19.0.jar包,然后把hadoop的lib中27版本的guava包复制到hive里面

rm -rf /opt/hive-3.1.3/lib/guava-19.0.jar
cp /opt/hadoop-3.1.3/share/hadoop/common/lib/guava-27.0-jre.jar /opt/hive-3.1.3/lib/

第五步:把你的mysql数据库jdbc驱动放到hive的lib目录下,然后运行元数据初始化脚本

./bin/schematool -dbType mysql -initSchema

当你看到如下提示意味着元数据库初始化成功

Initialization script completed
schemaTool completed

第六步:hive3.1.3和hadoop3.1.3整合的时候,必须在hadoop的core-site.xml里面添加如下配置,要不然hiveserver2的远程服务无法占用端口向外提供服务

<property>
	<name>hadoop.proxyuser.root.hosts</name>
	<value>*</value>
</property>
<property>
	<name>hadoop.proxyuser.root.groups</name>
	<value>*</value>
</property>

解释一下:hadoop3.x对安全相关做了更细致的限制,上面两个配置是hadoop允许哪些远程服务器(host域名)上的哪些用户组(groups)下的某个用户,以代理的身份执行hadoop上的操作,配置中的root就是你要使用的用户,我们在搭建2.x的集群时不需要配置这个玩意,直接启动就行,但是3.x如果你不配置,在使用hiveserver2的时候,就会发生启动不报错,但是远程连接不到,而且hive的运行节点,hiveserver2占用的端口也挂不上服务的问题。

第七步:运行命令进入hive,测试一下是否可以操作

/opt/hive-3.1.3/bin/hive --service metastore &
/opt/hive-3.1.3/bin/hive

并且测试hiveserver2能否正常使用

/opt/hive-3.1.3/bin/hiveserver2 &
/opt/hive-3.1.3/bin/beeline -u jdbc:hive2://node001:10000

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部