Hadoop 分布式集群中安装 Hive(CentOS 7系统)
软件版本
-
电脑系统:macOS 10.14.6
-
虚拟机软件:Parallels Desktop15
-
Hadoop各节点节点操作系统:CentOS-7-x86_64-Minimal-1908.iso
-
CentOS 7 JDK版本:jdk1.8.0_162
-
Hadoop版本:hadoop-2.7.7
-
Hive版本:hive-2.3.3
-
MySQL版本:mysql-5.7.30
环境配置说明
-
电脑配置:MacBook Pro 13(8G + 256G)
-
三台 CentOS 7 配置:内存1G、硬盘13G(与Mac完全隔离的虚拟机)
-
三台 CentOS 7 的名字及IP:node1(10.211.55.18)、node2(10.211.55.19)、node3(10.211.55.20)
-
三台虚拟机的用户名:lyh
-
node为主结点、node2、node3为次节点
安装前提
- 安装jdk,并配置好Linux环境变量。
- 安装好Hadoop完全分布式
参考文献:Hadoop分布式集群搭建
安装并配置MySQL
卸载node1、node2、node3中系统自带的Maria DB
-
说明:
-
三台node都可以不用卸载Maria DB,使用Maria DB。
-
也可以不用卸载node2、node3中的Maria DB,只卸载node1中的Maria DB,因为node2、node3中的Maria DB不影响Hive的搭建。
-
本博文教程中,MySQL只在node1中安装。卸载node1、node2、node3中系统自带的Maria DB。
-
-
查看进程
复制
ps -f | grep mysqld -
杀死进程
复制
pkill -9 mysqld -
查看是否已安装MariaDB、或一些MariaDB相关的模块
复制
rpm -qa | grep mariadb -
卸载MariaDB
复制
yum -y remove mariadb* -
再次检查卸载干净,若已看不到相关mariadb打印了即可
复制
rpm -qa | grep mariadb
将mysql安装包上传到node1
-
本地下载mysql-5.7.30安装包(下载到了桌面)
http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-5.7/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
-
将安装包上传到node1中的 /app 文件夹下
复制
scp -r ~/Desktop/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz lyh@10.211.55.18:/app
安装依赖libaio
-
查看是否已经安装libaio
复制
ps aux | grep libaio ps -ef | grep libaio -
没有的话,就安装:
复制
yum install -y libaio yum install -y cmake make gcc gcc-c++ libaio ncurses ncurses-devel
安装 MySQL
-
查询全部用户(检查mysql组和用户是否存在)
复制
cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F ":" '{print $1 "|" $3 "|" $4}' | more 复制
# 我这里显示如下: root|0|0 sync|5|0 lyh|1000|1000 或者:
复制
cat /etc/group | grep mysql cat /etc/passwd | grep mysql -
创建用户和组(若不存在,则创建mysql组和用户)
-
创建mysql用户组
复制
groupadd mysql -
创建一个用户名为mysql的用户,并加入mysql用户组
复制
useradd -g mysql mysql -
将mysql用户的密码指定为 123456
复制
passwd mysql
-
-
解压刚刚下载mysql安装包
复制
cd /app 复制
tar -zxvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -
创建为mysql软链接
复制
ln -s mysql-5.7.30 mysql -
更改所属的组和用户
复制
cd /app 复制
chown -R mysql mysql/ chgrp -R mysql mysql/ 复制
cd mysql/ 复制
mkdir data chown -R mysql:mysql data -
在 /etc 文件夹下创建my.cnf文件
复制
touch /etc/my.cnf 复制
chown 777 /etc/my.cnf -
编辑my.cnf文件
复制
vim /etc/my.cnf 添加如下内容:
复制
[mysql] socket=/var/lib/mysql/mysql.sock # set mysql client default chararter default-character-set=utf8 [mysqld] skip-grant-tables socket=/var/lib/mysql/mysql.sock # set mysql server port port = 3306 # set mysql install base dir basedir=/app/mysql # set the data store dir datadir=/app/mysql/data # set the number of allow max connnection max_connections=200 # set server charactre default encoding character-set-server=utf8 # the storage engine default-storage-engine=INNODB lower_case_table_names=1 max_allowed_packet=16M explicit_defaults_for_timestamp=true [mysql.server] user=mysql basedir=/app/mysql -
进入mysql文件夹,安装mysql
复制
cd /app/mysql 复制
bin/mysql_install_db --user=mysql --basedir=/app/mysql/ --datadir=/app/mysql/data/ 复制
cp ./support-files/mysql.server /etc/init.d/mysqld 复制
chmod +x /etc/init.d/mysqld 复制
mkdir /var/lib/mysql 复制
chmod 777 /var/lib/mysql -
启动mysql
复制
/etc/init.d/mysqld restart 说明:
启动过程中可能会出现如下问题:
解决办法:
-
找到是否已经有进程占用
复制
ps aux|grep mysql 复制
root 15163 0.0 0.1 113416 1604 pts/0 S 05:31 0:00 /bin/sh /app/mysql/bin/mysqld_safe --datadir=/app/mysql/data --pid-file=/app/mysql/data/node1.pid mysql 15394 0.3 17.0 1119928 172140 pts/0 Sl 05:31 0:00 /app/mysql/bin/mysqld --basedir=/app/mysql --datadir=/app/mysql/data --plugin-dir=/app/mysql/lib/plugin --user=mysql --log-error=node1.err --pid-file=/app/mysql/data/node1.pid --socket=/var/lib/mysql/mysql.sock --port=3306 root 15425 0.0 0.0 112828 980 pts/0 R+ 05:33 0:00 grep --color=auto mysql -
关闭进程
复制
kill -9 15394 -
确认是否还占用
复制
ps aux|grep mysql 复制
root 15436 0.0 0.0 112824 976 pts/0 S+ 05:34 0:00 grep --color=auto mysql -
重启mysql
复制
/etc/init.d/mysqld restart
-
设置开机启动MySQL
复制cd /app/mysql
复制chkconfig --level 35 mysqld on chkconfig --list mysqld
复制chmod +x /etc/rc.d/init.d/mysqld chkconfig --add mysqld chkconfig --list mysqld

查看mysql状态
复制service mysqld status

修改配置文件
复制vim /etc/profile
修改/etc/profile,在最后添加如下内容
复制export PATH=$PATH:/app/mysql/bin
保存并退出,然后是修改内容生效
复制source /etc/profile
获取MySQL初始密码
复制cat /root/.mysql_secret

复制初始密码: #(6aFtq<zLi2
修改MySQL初始密码
-
进入mysql命令行
复制
mysql -uroot -p 然后输入获取到的初始密码,如这里获取到的初始密码为:
#(6aFtq<zLi2
-
没有修改密码的时候
-
在mysql命令行修改密码
-
设置密码为:123456
复制
set PASSWORD = PASSWORD('123456'); -
更新
复制
flush privileges;
-
-
验证新密码是否登录成功
复制
mysql -uroot -p123456
添加远程访问权限
复制use mysql; update user set host='%' where user='root'; select host,user from user;

重启MySQL,使刚刚的配置生效:
复制/etc/init.d/mysqld restart
node1 安装并配置Hive
下载Hive、上传到node1、2、3
-
下载 Hive
https://archive.apache.org/dist/hive/hive-2.3.3/apache-hive-2.3.3-bin.tar.gz
-
将Hi 册上传到node1、node2、node3的 /app 文件夹下
复制
scp -r ~/Desktop/apache-hive-2.3.3-bin.tar.gz lyh@10.211.55.18:/app 复制
scp -r ~/Desktop/apache-hive-2.3.3-bin.tar.gz lyh@10.211.55.19:/app 复制
scp -r ~/Desktop/apache-hive-2.3.3-bin.tar.gz lyh@10.211.55.20:/app -
解压apache-hive-2.3.3-bin.tar.gz
复制
tar -zxvf apache-hive-2.3.3-bin.tar.gz -
重命名 apache-hive-2.3.3-bin
复制
mv apache-hive-2.3.3-bin hive-2.3.3 -
创建软链接
复制
ln -s hive-2.3.3 hive -
删除apache-hive-2.3.3-bin.tar.gz
复制
rm -rf apache-hive-2.3.3-bin.tar.gz
配置 Hive 环境
-
进入mysql命令行(node1)
-
创建可以登录mysql下的hive用户,密码设置为 123456
复制
mysql -uroot -p123456 复制
USE mysql; 复制
-- 用户名:hive 密码:123456 CREATE USER hive IDENTIFIED BY '123456'; 复制
-- 为 hive 用户分配所有权限,该用户可以在任何电脑上登录 mysql 服务器 GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' IDENTIFIED BY 'hive'; -
使用 hive 用户登录 mysql
复制
mysql -uhive -p123456 -
创建 hive 专用数据库
复制
create database hive;
-
-
笨蛋下载mysql-connector-java-5.1.48.jar
将本地下载好的mysql-connector-java-5.1.48.jar上传到node1的
/app/hive/lib
目录下复制
scp -r ~/Desktop/mysql-connector-java-5.1.48.jar lyh@10.211.55.18:/app/hive/lib -
配置Linux环境变量(node1、node2、node3都需要配置)
复制
vim /etc/profile 复制
export HIVE_HOME=/app/hive export PATH=$PATH:$HIVE_HOME/bin 复制
source /etc/profile -
创建hive-site.xml并编辑(node1)
复制
cd /app/hive/conf 复制
vim hive-site.xml 添加如下内容
复制
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <!-- 连接mysql地址 --> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?useSSL=false</value> </property> <!-- 数据库驱动 --> <property> <name>javax.jdo.otion.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <!-- 连接MySQL用户名 --> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> </property> <!-- 连接MySQL密码 --> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property> </configuration> node1 上面如果将localhost改成主机名会导致,hive数据库初始化失败,最终虽然能登录hive,但不能用。
-
初始化 hive 数据库(node1)
复制
cd /app/hive/bin 复制
schematool -dbType mysql -initSchema -
登录hive用户,查看hive数据库中是否有初始化生成的表(node1)
复制
mysql -uhive -p123456 复制
use hive; 复制
show tables; -
测试hive(node1)
-
首先需要启动Hadoop
复制
start-all.sh -
进入hive命令行
复制
hive 由于配置了hive环境变量,所有没有固定目录即可进入hive命令行
-
hive命令行执行如下操作
复制
-- 查看database show databases; 复制
-- 查看table show tables; 复制
-- 创建一个数据库 create database hive_test_db; 复制
-- quit命令退出hive命令行,只能说quit,使用exit命令不可以。 quit;
-
node2、node3中 hive 的配置
方法1
将node1中配置好的hive文件分发到node2、node3,然后稍做修改。
-
将node1中的hive文件夹分发到node2、node3
复制
cd /app 复制
scp -r hive-2.3.3/ lyh@node2:/app/hive-2.3.3/ 复制
scp -r hive-2.3.3/ lyh@node3:/app/hive-2.3.3/ -
然后修改部分hive-site.xml 的配置(node2、node3都一样的配置)
复制
cd /app/hive 复制
vim hive-site.xml 修改连接mysql地址
复制
<!-- 连接mysql地址 --> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://node1:3306/hive?useSSL=false</value> </property> 添加如下内容
复制
<!-- 指定多个 remote Metoresores --> <property> <name>hive.metastore.uris</name> <value>thrift://node1:9083</value> </property>
方法2
-
创建hive-site.xml并编辑(node2、node3)
复制
cd /app/hive/conf 复制
vim hive-site.xml 添加如下内容
复制
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <!-- 连接mysql地址 --> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://node1:3306/hive?useSSL=false</value> </property> <!-- 数据库驱动 --> <property> <name>javax.jdo.otion.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <!-- 连接MySQL用户名 --> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> </property> <!-- 连接MySQL密码 --> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property> <!-- Hive 连接到其中一个 URI,以对 remote Metastore(以逗号分隔的 URI 列表)发出元数据请求 --> <property> <name>hive.metastore.uris</name> <value>thrift://node1:9083</value> </property> </configuration>
提示:在使用客户端访问 hive 之前,在主机中执行 hive --service metastore &
来启动metastore服务。这个时候,node2、node3使用hive命令了,数据库是node1中的hive数据库
执行了 hive --service metastore &
之后,node1中使用jps命令查看进程:

多了一个进程:RunJar
Hive的安装和基本配置,已经完成。
关闭hive集群:hive --service hiveserver2 &
参考文献
本文来自博客园,作者:LeeHua,转载请注明原文链接:https://www.cnblogs.com/liyihua/p/14482435.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)