搭建分布式Hive集群

title: 搭建分布式Hive集群
date: 2024-11-29 23:39:00
categories: 
- 服务器
tags:
- Hive
- 大数据

搭建分布式Hive集群

  • 本次实验环境:Centos 7-2009、Hadoop-3.1.4、JDK 8、Zookeeper-3.6.3、Mysql-5.7.38、Hive-3.1.2

功能规划

方案一(本地运行模式)

Master
主节点(Mysql+Hive)
192.168.66.6

方案二(完全分布式模式)

MasterSlave1
主节点(Hive)数据存储节点(Mysql)
192.168.66.6192.168.66.7

准备工作

若使用方案一,则在master节点上进行”准备工作“

  • 若使用方案二,则在slave1节点上进行“准备工作”

1. 卸载以及删除自带的mariadb

# 查看cent7自带的mariadb包
rpm -qa | grep mariadb# 这条是centos7自带的数据库安装包 mariadb-libs-5.5.68-1.el7.x86_64# 删除自带的数据库安装包
rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps

2. 安装Mysql的release文件

# 使用wget下载Mysql5.7.x版本的release文件(二选一)
wget -P /tmp/ -c 'https://mirrors.ustc.edu.cn/mysql-repo/mysql57-community-release-el7.rpm'# 使用curl下载Mysql5.7.x版本的release文件(二选一)
curl -C - 'https://mirrors.ustc.edu.cn/mysql-repo/mysql57-community-release-el7.rpm' -O /tmp/
# 导入release的GPG秘钥
rpm --import https://mirrors.ustc.edu.cn/mysql-repo/RPM-GPG-KEY-mysql# 安装Mysql的release包
yum install -y /tmp/mysql57-community-release-el7.rpm

3. 安装Mysql

3.1 (二选一)使用直接通过国内镜像下载依赖包并安装
# 下载mysql-community-server
wget -P /tmp/ -c 'https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-server-5.7.44-1.el7.x86_64.rpm'# 下载mysql-community-client
wget -P /tmp/ -c 'https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-client-5.7.44-1.el7.x86_64.rpm'# 下载mysql-community-common
wget -P /tmp/ -c 'https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-common-5.7.44-1.el7.x86_64.rpm'# 下载mysql-community-libs
wget -P /tmp/ -c 'https://mirror.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-libs-5.7.44-1.el7.x86_64.rpm'
# 安装Mysql-server
yum install -y /tmp/mysql-community*
3.2 (二选一)使用国内yum源进行一键安装
# 导入GPG公钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022# 备份原Mysql的yum源
cd /etc/yum.repos.d/
mv mysql-community.repo mysql-community.repo.bak
mv mysql-community-source.repo mysql-community-source.repo.bak# 添加国内Mysql的yum源
cat >> mysql-community.repo << "EOF"
[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=https://mirror.iscas.ac.cn/mysql/yum/mysql-connectors-community-el7-$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysqlhttps://repo.mysql.com/RPM-GPG-KEY-mysql-2022[mysql-tools-community]
name=MySQL Tools Community
baseurl=https://mirror.iscas.ac.cn/mysql/yum/mysql-tools-community-el7-$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysqlhttps://repo.mysql.com/RPM-GPG-KEY-mysql-2022[mysql-5.7-community]
name=MySQL 5.7 Community Server
baseurl=https://mirror.iscas.ac.cn/mysql/yum/mysql-5.7-community-el7-$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysqlhttps://repo.mysql.com/RPM-GPG-KEY-mysql-2022
EOF
# 清除yum的旧缓存,并更新的yum源的缓存
yum clean all && yum makecache# 安装Mysql-server
yum install -y mysql-server

4. 启动Mysql

# 配置Mysql开机自启
systemctl enable mysqld# 启动Mysql
systemctl start mysqld# 查看Mysql状态
systemctl status mysqld

5. 配置Mysql

# 查看安装后随机生成的Mysql密码
grep 'A temporary password' /var/log/mysqld.log
# 登录数据库
mysql -uroot -p'你自己查到的密码'# 重置默认的随机密码(不进行无法操作数据库)
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';# 退出数据库
exit

6. 创建用于存储Hive数据的用户

# 必须要先退出服务器,使用新的密码进入数据库才能操作
mysql -uroot -p'新密码'# 创建名为Hiv的数据库
CREATE DATABASE hive;# 创建名为hive的用户,并设置密码
CREATE USER 'hive'@'%' IDENTIFIED BY 'hive用户的密码';# 授权hive用户对Hive数据库的所有权限
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%' WITH GRANT OPTION;
GRANT ALL on hive.* to 'hive'@'%' identified by 'hive用户密码' with grant option;# 刷新权限
FLUSH PRIVILEGES;

7. 退出数据库

exit

正式安装Hive

在master主节点上执行

8. 安装程序文件

  • 首先上传Hive的文件到服务器上,或直接进行以下的下载行为
# 使用wget命令下载Hive文件(二选一)
wget -P /tmp/ -c 'https://repo.huaweicloud.com/artifactory/apache-local/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz'# 使用curl命令下载Hive文件(二选一)
curl -C - 'https://repo.huaweicloud.com/artifactory/apache-local/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz' -O /tmp/# 解压文件到指定目录
tar -zxvf /tmp/apache-hive-3.1.2-bin.tar.gz -C /opt/module/#重命名文件夹
mv /opt/module/apache-hive-3.1.2-bin/ /opt/module/hive

9. 解决Hive与Hadoop之间的guava版本差异(依赖冲突)

# 备份hive中原guava的jar包
mv /opt/module/hive/lib/guava-19.0.jar /opt/module/hive/lib/guava-19.0.jar.bak# 使用haddoop中guava-27版本的jar包覆盖hive中的jar包
cp $HADOOP_HOME/share/hadoop/common/lib/guava-27.0-jre.jar /opt/module/hive/lib/

10. 配置用户环境变量

cat >>  ~/.bashrc << "EOF"# ------------------- Hive 配置--------------------
# 设置Hive环境变量,指向Hive安装目录
export HIVE_HOME=/opt/module/hive# 将HIVE的bin目录添加到PATH环境变量
export PATH=$PATH:$HIVE_HOME/bin
# -------------------------------------------------
EOF
-----------------------------------------------------------说明举例   export PATH=$HIVE_HOME/bin:$PATH英文冒号代表分隔这段代码表示
1. 当你输入一个命令时,shell会首先在"HIVE_HOME"这个变量的"bin"子目录中查找,
2. 最后,若找不到,则在"PATH"的指定目录中查找-------------------------------------------------------------

11. 编写Hive的配置文件

# 进入hive配置目录
cd /opt/module/hive/conf# 复制hive-env.sh模板
cp hive-env.sh.template hive-env.sh
根据自己的配置信息,或者查看~/.bashrc,修改下面各项的内容,随后复制粘贴即可
# 配置hive.env.sh文件
cat >> hive-env.sh << EOF
export HADOOP_HOME=/opt/module/hadoop-3.1.4
export HIVE_CONF_DIR=/opt/module/hive/conf
export HIVE_AUX_JARS_PATH=/opt/module/hive/lib
EOF

12.编写Hive的配置文件2

如果选择方案一部署,则数据库信息填写master主机的信息,hive服务器填写master主机

  • 如果选择方案二部署,则数据库信息填写slave1主机的信息填写,hive服务器填写master主机
cat >> hive-site.xml << EOF
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><!-- 配置存储元数据的数据库主机以及其他配置 --><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value></property><!-- 配置连接数据库使用的的驱动名 --><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.cj.jdbc.Driver</value></property><!-- 配置连接数据库的用户名,即刚刚设置的hive --><property><name>javax.jdo.option.ConnectionUserName</name><value>hive</value></property><!-- 配置hive用户连接数据库的密码 --><property><name>javax.jdo.option.ConnectionPassword</name><value>“你设置的hive用户密码”</value></property><!-- H2S(Hive服务器)运行绑定的主机 --><property><name>hive.server2.thrift.bind.host</name><value>master</value></property><!-- 远程模式部署metastore(元数据)服务的地址(即数据库) --><property><name>hive.metastore.uris</name><value>thrift://master:9083</value></property><!-- 关闭元数据权限的身份认证 --><property><name>hive.metastore.event.db.notification.api.auth</name><value>false</value></property><!-- 关闭元数据存储版本的一致性验证 --><property><name>hive.metastore.schema.verification</name><value>false</value></property>
</configuration>
EOF

13. 使用mysql-connector-java驱动

网上找不到5.5、5.6、5.7版本的驱动,官网提供了解决方法:

  • Connector/J 8.0 provides compatibility with all the functionality of MySQL 5.5, 5.6, 5.7, and 8.0,翻译过来就是说——8.0版本的驱动兼容这些版本,使用8.0版本的驱动就可以了
  • mysql-connector-java驱动目录1

  • mysql-connector-java驱动目录2

  • mysql-Connector-J安装包下载_开源镜像站-阿里云

# 根据你自己的mysql版本,在目录中查找对应版本的驱动,并放到hive主目录下的lib下即可
cp mysql-connector-java-8.0.26.jar /opt/module/hive/lib/

结束安装

14. 加载环境变量

# 在master主节点上执行
source ~/.bashrc

15. 启动Hive

# 初始化Hive元数据到Mysql
schematool -initSchema -dbType mysql# 创建日志目录
mkdir $HIVE_HOME/logs# 启动Hive服务
cd $HIVE_HOME/logs && hive --service metastore

16. 验证Hive部署是否成功

# 进入Mysql数据库
myslq -uroot -p'新密码'# 改变使用的数据库
use hive;# 查看数据库中的表
show tables;# 若里面有数据,则部署成功

17. 后台启动Hive服务

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

参考文档

  1. Hive3.1.2版本完全分布式安装部署保姆级教程_hive 3.1.2 部署-CSDN博客

  2. Hive3.1.2搭建文档包含详细步骤及相关截图以及常见问题解决 - bjynjj - 博客园

  3. 从零开始搭建分布式大数据环境(Hadoop+Spark+Hive)

  4. 【超详细】CentOS 7安装MySQL 5.7【安装及密码配置、字符集配置、远程连接配置】_mysql contos 密码配置文件-CSDN博客

  5. Linux安装软件包的三种方法,rpm包介绍,rpm工具用法,yum工具用法,yum搭建本地仓库-腾讯云开发者社区-腾讯云

  6. mysql | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

  7. MySQL - USTC Mirror Help

  8. 【超详细】CentOS 7安装MySQL 5.7【安装及密码配置、字符集配置、远程连接配置】_mysql contos 密码配置文件-CSDN博客

  9. 通过国内mysql镜像站安装Mysql8.0版本服务器——解决方案_mysql国内镜像-CSDN博客

  10. Maven中找不到mysql-connector-java-5.7.24.jar的依赖_mysql5.7.24对应的jar包版本-CSDN博客

  11. JDBC连接数据库出现Loading class com.mysql.jdbc.Driver'. This is deprecated.问题的相关解决方法_this is deprecated. the new driver class is com.m-CSDN博客

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

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

相关文章

实现路由懒加载的方式有哪些?

1函数式懒加载 使用vue的异步组件和webpack的代码分割功能&#xff0c;通过&#xff08;&#xff09;>import()这种函数形式来定义路由组件&#xff0c;示例如下&#xff1a; const Home () > import(/views/Home.vue); const router new VueRouter({routes: [{ path…

【QT实战の心情笔记】

文章目录 界面布局主要界面分为三部分&#xff1a;1. 笔记列表区域2. 笔记内容编辑区域3. 操作按钮区域 Qt Designer 界面设计步骤完整界面布局图各控件设置和属性Qt Designer 文件 (.ui) 数据库表结构SQL 表结构&#xff1a; 逻辑代码1. 项目结构2. Note 类 (Note.h 和 Note.c…

大模型学习笔记------SAM模型详解与思考

大模型学习笔记------SAM模型详解与思考 1、SAM框架概述2、Segment Anything Task3、Segment Anything Model SAM模型是Meta 提出的分割一切模型&#xff08;Segment Anything Model&#xff0c;SAM&#xff09;突破了分割界限&#xff0c;极大地促进了计算机视觉基础模型的发展…

【嵌入式软件】跑开发板的前置服务配置

在嵌入式开发中,通常需要在 开发板和主机之间共享、传输和挂载文件。 这篇文章是关于如何在 Ubuntu 中配置 Samba、TFTP 和 NFS 协议的详细步骤。这些协议分别用于远程文件共享、文件传输和内核挂载文件系统。 如何安装协议: 参考:ubuntu18配置:详细的内容我手写了一份文档。…

2024最新qrcode.min.js生成二维码Demo

找了一堆代码一堆GPT&#xff0c;终于给写对了&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…

【Spring】Spring的模块架构与生态圈—核心容器(Beans、Core、Context、Expression)

Spring框架因其强大的功能和灵活性而成为企业级应用开发的首选&#xff0c;它的模块化设计使得开发者可以根据需求选择合适的模块&#xff0c;降低了系统的复杂性。核心容器模块是Spring框架的基础&#xff0c;它为整个框架提供了核心功能&#xff0c;包括Bean的管理、上下文的…

CRC校验例题详解

CRC校验例题详解 示例题目 给定数据帧1101001和生成多项式G(x)x4x3x21&#xff0c;求该数据帧的CRC校验码&#xff0c;并验证传输过程中是否会出现错误。 解题步骤 第一步转换生成多项式&#xff1a; 接下来是对这一步骤的详细解答&#xff1a; 生成多项式的二进制表示 当我们…

02、服务器的分类和开发项目流程

硬件介绍 1、服务器分类2.开发流程 1、服务器分类 1.1 服务器分类 1u服务器&#xff08;u表示服务器的厚度&#xff09; 1U4.45cm&#xff1b; 4u服务器&#xff08;u表示服务器的厚度&#xff09; &#xff0c; 服务器有两个电源模块&#xff0c;接在不同的电源&#xff0c;…

GIT命令使用手册(详细实用版)

一、git常用操作参考 第一次提交完整步骤&#xff1a; 1.git init; 2.git add . 3.git commit -m "初始化" 4.git remote add origin https://github.com/githubusername/demo.git 5.git pull origin master 6.git push -u origin master&#xff08;使用-u选项可以将…

图像生成工具WebUI

介绍 Stable Diffusion WebUI&#xff08;AUTOMATIC1111&#xff0c;简称A1111&#xff09;是一个为高级用户设计的图形用户界面&#xff08;GUI&#xff09;&#xff0c;它提供了丰富的功能和灵活性&#xff0c;以满足复杂和高级的图像生成需求。如今各种人工智能满天飞&…

9 OOM和JVM退出。OOM后JVM一定会退出吗?

首先我们把两个概念讲清楚 OOM是线程在申请堆内存&#xff0c;发现堆内存空间不足时候抛出的异常。 JVM退出的条件如下&#xff1a; java虚拟机在没有守护线程的时候会退出。守护线程是启动JVM的线程&#xff0c;服务于用户线程。 我们简单说下守护线程的功能: 1.日志的记录…

面试经典题目:LeetCode274_H指数

leetcode274——H指数 暴力循环代码分析性能分析 方法1&#xff1a;排序加线性扫描算法步骤&#xff1a; 方法2&#xff1a;计数排序&#xff08;适用于引用次数有上限&#xff09;算法步骤&#xff1a; 题目链接&#xff1a;leetcode274_H指数 暴力循环 class Solution { publ…

【前端爬虫】关于如何获取自己的请求头信息(user-agent和cookie)

注意&#xff1a;由于user-agent和cookie中保存了部分账户信息&#xff0c;所以一定不要随意泄露给他人&#xff01;&#xff01;&#xff01; 1.首先打开某个页面&#xff0c;点击键盘的F12键进入控制台&#xff0c;或者鼠标右键页面选择打开控制台 2.然后点击控制台上方的网…

爬虫抓取的数据如何有效存储和管理?

在现代数据驱动的世界中&#xff0c;爬虫技术已成为获取网络数据的重要手段。然而&#xff0c;如何有效地存储和管理这些数据是一个关键问题。本文将详细介绍几种有效的数据存储和管理方法&#xff0c;并提供相应的Java代码示例。 1. 数据存储方式 1.1 文件存储 文件存储是最…

将java项目部署到linux

命令解析 Dockerfile: Dockerfile 是一个文本文件&#xff0c;包含了所有必要的指令来组装&#xff08;build&#xff09;一个 Docker 镜像。 docker build: 根据 Dockerfile 或标准指令来构建一个新的镜像。 docker save: 将本地镜像保存为一个 tar 文件。 docker load: 从…

Next.js 13 App Router实战踩坑与性能优化指南

去年年底&#xff0c;我接了一个海外客户的项目&#xff0c;要求使用 Next.js 13 的 App Router 开发一个数据分析平台。说实话&#xff0c;当时虽然对 Next.js 已经很熟悉了&#xff0c;但对 App Router 这个相对较新的特性还是有些忐忑。现在项目已经成功上线&#xff0c;我想…

MySQL 中快速插入大量数据

在 MySQL 中快速插入大量数据&#xff08;例如 20 万条记录&#xff09;可以通过多种方法实现。以下是一些优化技巧和步骤&#xff0c;可以帮助你高效地插入大量数据&#xff1a; 1. 禁用索引和约束&#xff08;如果可能&#xff09; 在插入大量数据之前&#xff0c;禁用索引和…

Chrome 浏览器原生功能截长屏

我偶尔需要截取一些网页内容作为素材&#xff0c;但偶尔内容很长无法截全&#xff0c;需要多次截屏再拼接&#xff0c;过于麻烦。所以记录下这个通过浏览器原生功能截长屏的方案。 注意 这种方案并不是百分百完美&#xff0c;如果涉及到一些需要滚动加载的数据或者悬浮区块&am…

Python+OpenCV系列:AI看图识人、识车、识万物

在人工智能风靡全球的今天&#xff0c;用 Python 和 OpenCV 结合机器学习实现物体识别&#xff0c;不仅是酷炫技能&#xff0c;更是掌握未来的敲门砖。本篇博文手把手教你如何通过摄像头或图片输入&#xff0c;识别人、动物、车辆及其他物品&#xff0c;让你的程序瞬间具备 AI …

关于如何正确在测试用例中mock静态方法的问题

文章目录 情况一&#xff1a;希望在测试用例中直接执行静态方法的逻辑情况二&#xff1a;不希望在测试用例中执行静态方法的逻辑插桩方法坑1: 报错SubclassByteBuddyMockMaker原因与解决方案坑2&#xff1a;报错 the existing static mock registration must be deregistered原…