大数据原生集群 (Hadoop3.X为核心) 本地测试环境搭建一

搭建前说明:本篇开始围绕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&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去掉,让文件启用,且找到并修改如下配置

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

后面还有内容,但工作原因。。。只能抽时间更新,大家见谅

相关推荐
sevevty-seven11 分钟前
幻读是什么?用什么隔离级别可以防止幻读
大数据·sql
Yz98762 小时前
hive复杂数据类型Array & Map & Struct & 炸裂函数explode
大数据·数据库·数据仓库·hive·hadoop·数据库开发·big data
那一抹阳光多灿烂3 小时前
Spark中的Stage概念
大数据·spark
北京鹏生科技有限公司3 小时前
EcoVadis审核是什么?EcoVadis审核流程包括什么?
大数据·百度
Moshow郑锴4 小时前
数据库、数据仓库、数据湖、数据中台、湖仓一体的概念和区别
大数据·数据库·数据仓库·数据湖·湖仓一体
二进制_博客7 小时前
Flink学习连载第二篇-使用flink编写WordCount(多种情况演示)
大数据
hong1616887 小时前
大数据技术Kafka详解:消息队列(Messages Queue)
大数据·分布式·kafka
隔着天花板看星星16 小时前
Kafka-创建topic源码
大数据·分布式·中间件·kafka
goTsHgo16 小时前
在Spark Streaming中简单实现实时用户画像系统
大数据·分布式·spark
老周聊架构17 小时前
聊聊Flink:Flink中的时间语义和Watermark详解
大数据·flink