一篇文章教会你搭建Hive分布式集群

12 篇文章 1 订阅
7 篇文章 2 订阅
本文详细介绍了在CentOS8环境中卸载并重新安装MySQL,以及如何配置、安装Hive,包括Metastore的设置、HiveServer2的配置和BeelineCLI的连接,实现Hive的分布式集群部署。
摘要由CSDN通过智能技术生成

目录

​编辑

一、环境描述

二、安装mysql

2.1 卸载mysql

2.1.1 列出安装的mysql

2.1.2 卸载mysql

2.1.3 删除mysql文件目录

2.1.3.1 查看mysql 目录

2.1.3.2 依次删除

2.2.1 下载安装源

2.2.2 安装源rpm

2.2.3 加入rpm密钥

2.2.4 执行安装

2.2.5 设置开机自启动

2.2.6 修改密码

2.2.6.1 获取临时密码

2.2.6.2 登录MySQL

2.2.6.3 设置密码策略

2.2.6.4 设置密码最小长度

2.2.6.5 设置root密码

2.2.6.6 开启MySQL远程连接权限

三、安装hive

3.1 解压hive包

3.2 移动解压包

3.3 hive基本配置

3.3.1 配置环境变量

3.3.2 刷新环境变量

3.3.3 拷贝重命名hive-env.sh.template

3.3.4 修改hive-env.sh

3.3.5 拷贝重命名hive-log4j2.properties.template

3.3.6 拷贝mysql-connector-java-8.0.30.jar驱动包

3.3.7 决hadoop 和 hive 中guava.har 版本不一致问题

3.4 分发Hive

3.4.1 分发hive包

3.4.2 分发环境配置文件

3.5 配置 metastore

3.5.1 创建hdfs目录

3.5.2 配置metastore-site.xml

3.5.3 启动metastore

3.5.3.1 初始化元数据

3.5.3.2 创建日志目录

3.5.3.3 执行启动命令

3.5.3.4 查看是否启动成功

3.6 配置hiveserver2

3.6.1 配置hiveserver2-site.xml

3.6.2 修改hadoop 配置

3.6.3 启动hiveserver2服务

3.6.3.1 创建日志目录

3.6.3.2 执行启动命令

3.6.3.3 查看启动是否成功

3.7 配置Hive 客户端

3.7.1 配置hive-site.xml

3.7.2 启动hive

3.8 配置Beeline CLI

3.8.1 启动Beeline CLI 连接

3.8.2 启动beeline

3.8.3 测试通过beeline连接hive2

3.9 访问hive2页面


一、环境描述

系统环境描述:本教程基于CentOS 8.0版本虚拟机

hadoop集群:

hive 集群规划:

软件版本:

提示:Hive 是基于Hadoop的,在开始Hive之前,需要确保你的Hadoop集群是可用的。同时,本次部署需要的zookeeper,我使用的是Hadoop集群中的,关于zookeeper的部署,这里不做描述。因为该文章是基于部署Hadoop之后,所以一些机器的基本配置这里也不做描述,比如机器的免密登录,机器的hosts文件设置,包括基本的JDK安装等,如果对于这些部分有操作上的疑问,欢迎查看之前Hadoop的系列文章。Hadoop 集群部署可参考该文章:一篇文章带你学会Hadoop-3.3.4集群部署_夜夜流光相皎洁_小宁的博客-CSDN博客

二、安装mysql

2.1 卸载mysql

2.1.1 列出安装的mysql

rpm -qa | grep -i mysql

2.1.2 卸载mysql

-- 依次卸载上一步骤罗列出来的依赖

yum remove mysql-common-8.0.26-1.module_el8.4.0+915+de215114.x86_64

yum remove mysql57-community-release-el7-10.noarch

2.1.3 删除mysql文件目录

2.1.3.1 查看mysql 目录

find / -name mysql

2.1.3.2 依次删除

rm -rf /var/lib/selinux/targeted/active/modules/100/mysql

## 2.2 在线安装

2.2.1 下载安装源

wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

2.2.2 安装源rpm

yum -y install mysql57-community-release-el7-10.noarch.rpm

2.2.3 加入rpm密钥

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

2.2.4 执行安装

yum -y install mysql-community-server

在CentOS 8 下会报错:错误:没有任何匹配: mysql-community-server
原因是:【注】出现问题的核心原因为:基于RHEL 8和Oracle Linux 8的基于EL8的系统,在默认情况下附带了一个名为mysql的模块。 除非禁用此模块,否则它将屏蔽,
存储库提供的软件包。只要是 EL8系统安装任何版本的 MySQL 都会有这样的问题。

需要执行一下命令:yum module disable mysql

接着再执行:yum -y install mysql-community-server

然后安装是,执行事务检查报错:
错误:事物测试失败:
file /etc/my.cnf from install of mysql-community-server-5.7.43-1.el7.x86_64 conflicts with file from package mariadb-connector-c-config-3.1.11-2.el8_3.noarch

原因分析:
网上搜了下,说是我的yum 里面安装了mariadb-connector-c-config.noarch ,于是就要执行命令查看一下
yum list installed

果然如此,于是,就要删除掉mariadb-connector-c-config.noarch,

yum remove mariadb-connector-c-config.noarch

接着再执行:yum -y install mysql-community-server
成功了

2.2.5 设置开机自启动

systemctl start mysqld.service

systemctl status mysqld.service

查看状态,发现mysql 服务处于active(running)状态,说明Mysql 服务启动成功。

2.2.6 修改密码

2.2.6.1 获取临时密码

grep "password" /var/log/mysqld.log

2.2.6.2 登录MySQL

mysql -uroot -p

2.2.6.3 设置密码策略

设置密码策略为LOW,此策略只检查密码的长度

set global validate_password_policy=LOW;

2.2.6.4 设置密码最小长度

set global validate_password_length=6;

2.2.6.5 设置root密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'xiaoning';

2.2.6.6 开启MySQL远程连接权限

grant all privileges  on  *.* to 'root'@'%' identified by 'xiaoning' with grant option;

三、安装hive

3.1 解压hive包

tar -zxvf apache-hive-3.1.3-bin.tar.gz

3.2 移动解压包

mv apache-hive-3.1.3-bin /usr/local/hive-3.1.3

3.3 hive基本配置

3.3.1 配置环境变量

vim /etc/profile

export HIVE_HOME=/usr/local/hive-3.1.3
export PATH=$PATH:$HIVE_HOME/bin

3.3.2 刷新环境变量

source /etc/profile

3.3.3 拷贝重命名hive-env.sh.template

cd /usr/local/hive-3.1.3/conf

cp hive-env.sh.template hive-env.sh

3.3.4 修改hive-env.sh

export HADOOP_HOME=/usr/local/hadoop-3.3.4
export HIVE_CONF_DIR=/usr/local/hive-3.1.3/conf
export HIVE_AUX_JARS_PATH=/usr/local/hive-3.1.3/lib
export JAVA_HOME=/usr/local/jdk1.8.0_211

3.3.5 拷贝重命名hive-log4j2.properties.template

cp hive-log4j2.properties.template hive-log4j2.properties

3.3.6 拷贝mysql-connector-java-8.0.30.jar驱动包

mv mysql-connector-java-8.0.30.jar /usr/local/hive-3.1.3/lib/

3.3.7 决hadoop 和 hive 中guava.har 版本不一致问题

cd /usr/local/hadoop-3.3.4/share/hadoop/common/lib
cp guava-27.0-jre.jar /usr/local/hive-3.1.3/lib/
cd /usr/local/hive-3.1.3/lib
rm -rf guava-19.0.jar

3.4 分发Hive

3.4.1 分发hive包

scp -r /usr/local/hive-3.1.3/  root@node1:/usr/local/
scp -r /usr/local/hive-3.1.3/  root@node2:/usr/local/
scp -r /usr/local/hive-3.1.3/  root@node3:/usr/local/
scp -r /usr/local/hive-3.1.3/  root@node4:/usr/local/

3.4.2 分发环境配置文件

scp /etc/profile root@node1:/etc/profile
scp /etc/profile root@node2:/etc/profile
scp /etc/profile root@node3:/etc/profile
scp /etc/profile root@node4:/etc/profile

注意:执行source /etc/profile 使环境生效

3.5 配置 metastore

3.5.1 创建hdfs目录

hdfs dfs -mkdir -p /usr/local/hive-3.1.3/hive_local/{warehouse,tmp,logs}
hdfs dfs -chmod -R 755 /usr/local/hive-3.1.3/hive_local/

提示:只需要执行一次

3.5.2 配置metastore-site.xml

cd /usr/local/hive-3.1.3/conf

cat > metastore-site.xml

vim metastore-site.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- hdfs 上 Hive元数据存放的位置 -->
<property>
	<name>hive.metastore.warehouse.dir</name>
	<value>/usr/local/hive-3.1.3/hive_local/warehouse</value>
</property>

<!-- Hive作业的HDFS根目录位置 -->
<property>
	<name>hive.exec.scratchdir</name>
	<value>/usr/local/hive-3.1.3/hive_local/tmp</value>
</property>
<!-- Hive作业的HDFS根目录创建权限 -->
<property>
	<name>hive.scratch.dir.permission</name>
	<value>775</value>
</property>

<property>
	<name>hive.metastore.local</name>
	<value>true</value>
</property>
<!-- 数据库连接驱动 -->
<property>
	<name>javax.jdo.option.ConnectionDriverName</name>
	<value>com.mysql.jdbc.Driver</value>
</property>
<!-- 数据库地址,名称 -->
<property>
	<name>javax.jdo.option.ConnectionURL</name>
	<value>jdbc:mysql://node2:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<!-- 数据库连接用户 -->
<property>
	<name>javax.jdo.option.ConnectionUserName</name>
	<value>root</value>
</property>
<!-- 数据库连接密码 -->
<property>
	<name>javax.jdo.option.ConnectionPassword</name>
	<value>xiaoning</value>
</property>
<!-- 指定metastore连接地址 -->
<property>
	<name>hive.metastore.uris</name>
	<value>thrift://node3:9083</value>
</property>
</configuration>

3.5.3 启动metastore

3.5.3.1 初始化元数据

注意:任意node3、node4等部署metastore的节点选一个初始化,且只需要初始化一次
schematool -initSchema -dbType mysql -verbose

分别到 node3、node4启动  metastore

初始化数据后,使用连接工具连接上Mysql ,可以查看到hive数据库

3.5.3.2 创建日志目录


mkdir -pv $HIVE_HOME/logs

3.5.3.3 执行启动命令

hive --service metastore >> $HIVE_HOME/logs/metastore.log 2>&1 &

注意:Node4节点上启动metastore 前,需要修改 hive.metastore.uris地址为: thrift://node4:9083

3.5.3.4 查看是否启动成功


netstat -anp | grep 9083

如果出现端口号进程占用,说明启动成功了

3.6 配置hiveserver2

3.6.1 配置hiveserver2-site.xml

cd $HIVE_HOME/conf
cat > hiveserver2-site.xml

vim hiveserver2-site.xml

<configuration>
<!-- 远程metastore地址 -->
<property>
	<name>hive.metastore.uris</name>
	<value>thrift://node3:9083,thrift://node4:9083</value>
</property>
<!-- 开启hiveserver2高可用-->
<property>
  <name>hive.server2.support.dynamic.service.discovery</name>
  <value>true</value>
</property>

<property>
  <name>hive.server2.active.passive.ha.enable</name>
  <value>true</value>
</property>

<property>
  <name>hive.server2.zookeeper.namespace</name>
  <value>hiveserver2_zk</value>
</property>
<!--zookeeper连接地址 -->
<property>
  <name>hive.zookeeper.quorum</name>
  <value>node2:2181,node3:2181,node4:2181</value>
</property>

<property>
  <name>hive.zookeeper.client.port</name>
  <value>2181</value>
</property>

<property>
  <name>hive.server2.thrift.bind.host</name>
  <value>master</value>
</property>

<property>
  <name>hive.server2.thrift.port</name>
  <value>10001</value> 
</property>

<!--开启权限认证 -->
<property>
  <name>hive.security.authorization.enabled</name>
  <value>true</value>
</property>

<property>
  <name>hive.server2.enable.doAs</name>
  <value>false</value>
</property>

<property>
  <name>hive.users.in.admin.role</name>
  <value>root</value>
</property>

<property>
  <name>hive.security.authorization.manager</name>  <value>org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory</value>
</property>

<property>
  <name>hive.security.authenticator.manager</name>
  <value>org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator</value>
</property>
</configuration>

3.6.2 修改hadoop 配置

在hadoop安装目录下的core-site.xml中,需要开启hadoop代理用户配置

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

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

说明:hadoop.proxyuser.xxx.hosts和hadoop.proxyuser.xxx.groups,其中xxx为启动HiveServer2的用户

配置完成后,需要重启hadoop集群,因为我上次部署hadoop集群,已经配置了上述各项配置,这里我可以忽略该步骤

3.6.3 启动hiveserver2服务

分别在master 、 node1、node2启动
其中node1,node2需要修改hiveserver2-site.xml文件,

#node1:
<property>
  <name>hive.server2.thrift.bind.host</name>
  <value>node1</value>
</property>

#node2:
<property>
  <name>hive.server2.thrift.bind.host</name>
  <value>node2</value>
</property>
3.6.3.1 创建日志目录

mkdir -pv $HIVE_HOME/logs

3.6.3.2 执行启动命令

hive --service hiveserver2 >> $HIVE_HOME/logs/hiveserver2.log 2>&1 &

3.6.3.3 查看启动是否成功


netstat -anp | grep 10001

3.7 配置Hive 客户端

3.7.1 配置hive-site.xml

touch hive-site.xml

vim hive-site.xml

<configuration>
<!--显示表的列名 -->
<property>
	<name>hive.cli.print.header</name>
	<value>true</value>
</property>

<!-- 显示数据库名称 -->
<property>
	<name>hive.cli.print.current.db</name>
	<value>true</value>
</property>
</configuration>

3.7.2 启动hive

hive

3.8 配置Beeline CLI

3.8.1 启动Beeline CLI 连接

提示:使用Beeline CLI连接需要配置hadoop中hdfs-site.xml 配置文件。需要启动webhdfs;

<!-- 开启webhdfs -->
<property>
	<name>dfs.webhdfs.enabled</name>
	<value>true</value>
</property>

配置完成后,需要重启hadoop集群,因为我上次部署hadoop集群,已经配置了上述各项配置,这里我可以忽略该步骤.

3.8.2 启动beeline

beeline

3.8.3 测试通过beeline连接hive2

!connect jdbc:hive2://master:10001

3.9 访问hive2页面

我们配置启动了三个hiveserver2服务,分别在master、node1、node2节点,所以三个节点均可访问到我们的hive2页面

HiveServer2

HiveServer2

HiveServer2

到此,我们就是实现了hive两个metastore节点,三个hiveserver2节点的分布式集群部署。

好了,今天Hive分布式集群部署的相关内容就分享到这里,如果帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
搭建CDH(Cloudera Distribution including Apache Hadoop)的Hadoop分布式集群,您可以按照以下步骤进行操作: 1. 硬件准备:选择适合您需求的硬件,包括Master节点和Worker节点。Master节点通常包含NameNode、ResourceManager和其他管理组件,而Worker节点包含DataNode和NodeManager。 2. 操作系统准备:确保所有节点都安装了支持CDH的操作系统,如CentOS、Red Hat Enterprise Linux等,并进行必要的系统配置。 3. 安装CDH:下载CDH的安装包,根据官方文档的指引进行安装。您可以选择使用Cloudera Manager进行自动化安装,或者手动安装CDH的各个组件。 4. 配置集群:使用Cloudera Manager或手动配置各个组件的配置文件,包括HDFS、YARN、Hive、HBase等。确保配置正确,并进行必要的优化和调整。 5. 启动集群:启动各个组件,确保它们能够正常启动并工作。 6. 集群测试:使用CDH提供的工具和命令行工具,如hdfs dfs命令、yarn命令等,对集群进行测试和验证。确保Hadoop集群能够正确运行和处理任务。 7. 高可用和容错:根据需求,配置Hadoop的高可用和容错功能,如配置多个NameNode实现HDFS的冗余和故障转移,配置ResourceManager的容错等。 8. 安全配置:根据需求,配置Hadoop的安全功能,如Kerberos认证、SSL加密等,以保护集群的安全性。 以上是搭建CDH Hadoop分布式集群的一般步骤,具体操作细节可以参考Cloudera官方文档或其他相关资源。请注意,这只是一个概述,实际操作可能会有所不同,具体取决于您的环境和需求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值