Bootstrap

Hive 的安装与配置

一.安装前部署

安装前首先保证Hadoop环境能够正常运行。

1.下载准备

1.1下载hive安装包

Index of /dist/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&amp;useSSL=false&amp;useUnicode=true&amp;chara
cterEncoding=UTF-8&amp;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

;