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

news2024/9/22 11:34:58

目录

​编辑

一、环境描述

二、安装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分布式集群部署的相关内容就分享到这里,如果帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1132186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32 定时器配置不当导致误差(精度)偏大的问题发现与解决

通用定时器TIM2/3/4/5&#xff0c;PWM输出1Khz的波形 一开始初始化代码如下&#xff1a; void MX_TIM2_Init(void)//1kHz {TIM_ClockConfigTypeDef sClockSourceConfig {0};TIM_MasterConfigTypeDef sMasterConfig {0};TIM_OC_InitTypeDef sConfigOC {0};htim2.Instance T…

Git简明教程

1.Git的定位 在我们自己开发项目的过程中&#xff0c;经常会遇到这样的情况&#xff0c;为了防止代码丢失&#xff0c;或者新变更的代码影响到原有的代码功能&#xff0c;为了在失误后能恢复到原来的版本&#xff0c;不得不复制出一个副本,比如&#xff1a;“坦克大战1.0”“坦…

十个最常用的计算机视觉数据集

如今&#xff0c;人工智能和机器学习领域中最振奋人心的一个分支是计算机视觉&#xff08;Computer Vision&#xff0c;简称CV&#xff09;。CV应用于多种场景&#xff0c;以改善我们的日常生活&#xff0c;并推进科学技术研究。其中包括&#xff1a; 自动驾驶自动生成图像描述…

一、W5100S/W5500+RP2040树莓派Pico<静态配置网络信息>

文章目录 1. 前言2. 相关网络信息2.1 简介2.2 优点2.3 应用 3. WIZnet以太网芯片4. 静态IP网络设置示例讲解以及使用4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 编译烧录 5. 注意事项6. 相关链接 1. 前言 从本章开始我们将用WIZnet的W5100S/W5500以太网芯片结合RP…

听GPT 讲Rust源代码--library/std(3)

rust标准库std中的src目录主要包含以下内容和模块: alloc:内存分配相关函数,比如alloc::boxed::Box、alloc::string::String等。 ascii:ASCII相关工具函数。 char:字符相关类型和函数,如Char、char等。 cmp:比较相关trait和函数,如Ord、Eq、PartialOrd等。 env:环境变量相关功能…

机架式服务器介绍

大家都知道服务器分为机架式服务器、刀片式服务器、塔式服务器三类&#xff0c;今天小编就分别讲一讲这三种服务器&#xff0c;第一篇先来讲一讲机架式服务器的介绍。 机架式服务器定义&#xff1a;机架式服务器是安装在标准机柜中的服务器&#xff0c;一般采用19英寸的标准尺寸…

5年测开经验,领导却说:写的测试文档还不如应届生

如果有人问“测试人员最重要的能力是什么” &#xff0c;有人会说“自动化技术”&#xff0c;有人会说“代码能力”&#xff0c;还有人会说“沟通能力”。 以上的各种能力确实挺重要的&#xff0c;但是在我看来&#xff0c;有一种能力长期遭到人们的低估&#xff0c;那就是“文…

TypeScript学习笔记 | 泛型 - 泛型的应用 - 泛型工具类 - extends - infer用法

文章目录 TypeScript学习笔记 | 泛型 - 泛型的应用什么是泛型类型兼容鸭子类型类型运算「&」和「&#xff5c;」 泛型的定义泛型的使用泛型接口与泛型类 extends用法泛型用法条件判断 用于类型的条件判断应用&#xff1a;Exclude<T,U>排除 / Extract 提取 infer关键词…

【23真题】这套适合考211的同学练手!考察复杂梅森!

今天分享的是23年五邑大学801的信号与系统试题及解析。 本套试卷难度分析&#xff1a;本套试题难度中等偏下&#xff0c;考察的题量较少&#xff0c;但是涉及到的知识点是非常全面的&#xff0c;考察的知识大多都是三大性质的定义以及运用&#xff0c;还考察了复杂梅森公式的运…

使用d3-tip报错:targetel.getScreenCTM is not a function

问题背景&#xff1a;使用d3-tip悬浮不显示信息 控制台报错截图&#xff1a; 报错原因&#xff1a; 箭头函数this 指向问题 解决方案&#xff1a;

无缝的链间互操作性:通用消息传递的强大之处

前言 通用消息传递&#xff08;General Message Passing&#xff0c;GMP&#xff09;是一种支持区块链之间通信和数据传输的机制。GMP正在成为增强不同区块链网络之间互操作性的解决方案。GMP允许应用程序构建者通过使用安全消息在区块链之间通信和交换信息来利用任何区块链的…

node-sass安装失败

在重新下载Vue工程依赖的时候&#xff0c;一直提示我报错&#xff0c;报错信息和截图如下&#xff0c;解决办法放在下面&#xff0c;供大家参考。 ValueError: invalid mode: rU while trying to load binding.gyp gyp ERR! configure error gyp ERR! stack Error: gyp faile…

浅谈余压监控系统电气设计

安科瑞 华楠 摘 要&#xff1a;结合实际的工程设计案例&#xff0c;分析余压监控系统的设计&#xff0c;包括余压探测器、余压控制器、余压监控主机的控制原理等。防止人员在实际的火灾疏散过程中会出现楼梯间和前室之间、前室和室内走道之间防火门两侧压差过大&#xff0c;而…

vs2022 使用git同步报错以及解决每次推送要输入密码问题

1.使用 git GUI工具&#xff0c;例如&#xff1a;TortoiseGit &#xff0c;把全局配置文件这样设置一下 设置全局.config ,这样即可。 [credential] helper store 2.如果推送代码或拉取代码一直失败&#xff0c;在当前的仓库下面&#xff0c;使用以下命令来重置一下密码 git …

Java 将list集合的字符串格式转为Map

Java 将list集合的字符串格式转为Map List<Object> list new ArrayList<>(); Map<String,String> map1 new HashMap<>(); map1.put("fileName","测试1"); map1.put("level","1"); list.add(map1);Map<S…

ChineseChess2

中国象棋&#xff1a;黑将&#xff0c;红帅双炮&#xff0c;只要红帅中间露头怎么走怎么赢 卡主黑将的走位&#xff0c;控制住就好了 ChineseChess-CSDN博客

数字驱动,营销赋能丨工商职院电子商务专业学生,前往餐饮美食电商新业态基地试岗交流

纸上得来终觉浅&#xff0c;绝知此事要躬行。为了让学生更好的了解自己与所应聘岗位的匹配度&#xff0c;同时也希望在实际业务场景中&#xff0c;发掘自身优势&#xff0c;10月23日&#xff0c;四川产教融创园信息技术有限公司组织四川工商职业技术学院的电子商务专业学生一行…

医院陪诊系统源码 医院护工陪护系统源码

医院陪诊系统源码 医院护工陪护系统源码 基于ThinkPHP6原生微信小程序框架开发的陪诊小程序源码 支持多运营区&#xff0c;陪护师、推广者等完整闭环功能&#xff0c;快速搭建陪护业务平台。 运行环境&#xff1a;PHPMYSQLNGINX/APACHE微信小程序 功能介绍&#xff1a; 1、…

LLVM学习笔记(49)

4.1.3. 降级 在前面的章节里&#xff0c;我们展示了目标机器特定节点与目标机器无关节点共存的一个图。你可能会问&#xff0c;如果这是指令选择的一个输入&#xff0c;为什么在SelectionDAG类中已经有一些目标机器特定的节点&#xff1f;要理解这&#xff0c;我们首先在下图概…