一.安装前部署
安装前首先保证Hadoop环境能够正常运行。
1.下载准备
1.1下载hive安装包
我下载的是hive3.1.3
1.2下载MySQL安装包
MySQL :: Download MySQL Community Server
如果用的是centOS7,就照着我这么选就可以
1.3下载mysql-connector-java jar包
如果jdk是1.8的下载5.1.x以上的mysql-connector-java,不同版本的自己去查版本适配,避免冲突
我这里用的是mysql8.0.31,hive3.1.3,mysql-connector-java-5.1.49
下载地址:链接:https://pan.baidu.com/s/1pOfJccp1Cf1Sl0m_TXBOnw
提取码:747n
2.创建服务端目录用于存放Hive安装文件
2.1在虚拟机上创建目录用于存放hive安装文件
# 用于存放安装包
mkdir /opt/tools
# 用于存放解压后的文件
mkdir /opt/server
2.2切换到/opt/tools上传hive安装包
将自己下载的hive和mysql安装包上传到此
二.安装MySQL
hive允许将元数据存储于本地或远程的外部数据库中,这种设置可以支持hive的多会话生产环境,通常采用MySQL作为hive的元数据存储库
1.卸载CentOS7自带的mariadb
查找自己虚拟机上的Mariadb,根据自己的版本进行卸载
# 查找
rpm -qa|grep mariadb
# mariadb-libs-5.5.52-1.el7.x86_64
# 卸载
rpm -e mariadb-libs-5.5.52-1.el7.x86_64 --nodeps
2.解压MySQL
# 创建mysql安装包存放点
mkdir /opt/server/mysql
# 解压
tar xvf mysql-8.0.31-1.el7.x86_64.rpm-bundle.tar -C /opt/server/mysql/
3.执行安装
# 安装依赖
yum -y install libaio
yum -y install libncurses*
yum -y install perl perl-devel
# 切换到安装目录
cd /opt/server/mysql/
# 安装
rpm -ivh mysql-community-common-8.0.31-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.31-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.31-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.31-1.el7.x86_64.rpm
如果提示如下错误:
在每一行rpm语句后加上 --nodeps(意为不需要检查是否存在依赖包)
rpm -ivh mysql-community-common-8.0.31-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.31-1.el7.x86_64.rpm --nodeps
rpm -ivh mysql-community-client-8.0.31-1.el7.x86_64.rpm --nodeps
rpm -ivh mysql-community-server-8.0.31-1.el7.x86_64.rpm --nodeps
4.启动MySQL并修改密码
#启动mysql
systemctl start mysqld.service
#查看生成的临时root密码
cat /var/log/mysqld.log | grep password
记住这个临时密码等会登录要用
# 登录mysql
mysql -u root -p
Enter password: #输入在日志中生成的临时密码
登录后修改用户密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新的密码';
这里先设置一个符合密码规范的密码,稍后更改密码规则后再改一个更简单的密码,默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。
查看密码策略:
#查看密码策略
show variables like 'validate%';
修改密码策略:
# 修改密码策略并更新root密码 设置为1234
set global validate_password.policy=0;
set global validate_password.length=1;
alter user 'root'@'localhost' identified by '1234';
MySQL8.0.x是这样修改密码,MySQL5.0和这个有些出入,自行百度。
另我不知道怎么回事我只能将密码修改为1234不能修改为root。
5.授予远程连接权限
grant all privileges on *.* to 'root' @'%' identified by '1234';
# 刷新
flush privileges;
在此处遇到错误:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by '1234'' at line 1
查看CSDN得到如下解决办法:
>mysql -u root -pPassWord # ”root“为登录账号,”Password“为登录密码,按自己设置的修改
>use mysql; # 使用的database名称为”mysql“
>update user set host = '%' where user = 'root'; # 修改”root“账号的配置信息
# update user set host='%' where user='test'; ## 如果账号是“test”,使用该命令
>select host, user from user;
得到此界面,root的host已经变为%说明此时可以远程连接到root了
6.MySQL的一些控制命令
#mysql的启动和关闭 状态查看
systemctl stop mysqld
systemctl status mysqld
systemctl start mysqld
#建议设置为开机自启动服务
systemctl enable mysqld
#查看是否已经设置自启动成功
systemctl list-unit-files | grep mysqld
三.Hive安装配置
1.解压安装包
# 切换到安装包目录
cd /opt/tools
# 解压到/root/server目录
tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /opt/server/
2.添加mysql_jdbc驱动到hive安装包lib目录下
# 上传mysql-connector-java-5.1.49.jar
cd /opt/server/apache-hive-3.1.3-bin/lib
3.修改hive环境变量文件,指定Hadoop的安装路径
cd /opt/server/apache-hive-3.1.3-bin/conf
cp hive-env.sh.template hive-env.sh
vim hive-env.sh
# 加入以下内容
HADOOP_HOME=/opt/hadoop/hadoop #这里填自己的Hadoop路径
4.新建hive-site.xml文件
用于配置存放元数据的MySQL地址、驱动、用户名和密码等
还是在/opt/server/apache-hive-3.1.3-bin/conf下运行:
vim hive-site.xml
复制以下内容进去:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 存储元数据mysql相关配置 /etc/hosts -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value> jdbc:mysql://100.66.8.128:3306/hive?
createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&chara
cterEncoding=UTF-8&allowPublicKeyRetrieval=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>1234</value>
</property>
</configuration>
5.初始化元数据库
当使用的hive是2以上的版本时,必须手动初始化元数据库,初始化命令:
cd /opt/server/apache-hive-3.1.2-bin/bin
./schematool -dbType mysql -initSchema
初试化成功后会在MySQL中创建74张表
如果初始化命令输入后显示unknown database “hive”,可以先在MySQL里新建一个名为hive的数据库再进行初始化
如果显示failed load driver,先看看有没有把mysql-connector-java jar包放到文件夹里,如果放进去了还报这个错误就试一下换一个jar包
如果显示org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.
Underlying cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException : Public Key Retrieval is not allowed
可以cd到/opt/server/apache-hive-3.1.3-bin/conf中vim hive-site.xml在连接串后面加上:allowPublicKeyRetrieval=true
四.启动Hive服务
cd /opt/server/apache-hive-3.1.3-bin/bin
./hive
如果报错name node is safe mode,就先退出安全模式在启动
hadoop dfsadmin -safemode leave
输入show databases命令可以看到默认的数据库则代表搭建成功
为方便后续使用,也可以将hive加入到环境变量中
1.添加环境变量
vim /etc/profile
export HIVE_HOME=/opt/server/apache-hive-3.1.3-bin
export PATH=$HIVE_HOME/bin:$PATH
2.使配置的环境变量立即生效
source /etc/profile
3.启动hive
hive