搭建前说明:本篇开始围绕Hadoop3.x大数据组件做集群搭建,将会直接从各组件开始搭建,至于集群的准备工作都是一样的,直接去Hadoop2.x集群搭建一和二里面去看。总体上来讲较新的版本和老版本只是在搭建上有些地方不一样,使用上差别不大。当然本篇用于搭建的3.x集群为了防止影响,使用了一套新的环境,节点任然是三台
bash
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就行,下载好之后上传服务器解压,并配置环境变量
bash
export HIVE_HOME=/opt/hive-3.1.3
export PATH=$PATH:${HIVE_HOME}/bin
第二步:进入hive的conf目录下编辑配置文件,新建hive-site.xml
文件并追加如下内容,注意这里直接用mysql了,就不介绍默认的元数据库类型了
xml
<?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&useUnicode=true&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
去掉,让文件启用,且找到并修改如下配置
bash
# 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里面
bash
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目录下,然后运行元数据初始化脚本
bash
./bin/schematool -dbType mysql -initSchema
当你看到如下提示意味着元数据库初始化成功
bash
Initialization script completed
schemaTool completed
第六步:hive3.1.3和hadoop3.1.3整合的时候,必须在hadoop的core-site.xml
里面添加如下配置,要不然hiveserver2的远程服务无法占用端口向外提供服务
bash
<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,测试一下是否可以操作
bash
/opt/hive-3.1.3/bin/hive --service metastore &
/opt/hive-3.1.3/bin/hive
并且测试hiveserver2能否正常使用
bash
/opt/hive-3.1.3/bin/hiveserver2 &
/opt/hive-3.1.3/bin/beeline -u jdbc:hive2://node001:10000
后面还有内容,但工作原因。。。只能抽时间更新,大家见谅