Hive官网:http://hive.apache.org

下载网址:http://archive.apache.org/dist/hive/

文档网址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual

备注:Hive的元数据默认存储在自带的 derby 数据库中,生产中多采用MySQL;derby:java语言开发占用资源少,单进程,单用户。仅仅适用于个人的测试。


MySQL安装

Hive中使用MySQL存储元数据,MySQL的版本 5.7.26。

环境准备(删除有冲突的依赖包、安装必须的依赖包)

  • 删除MariaDB

    centos7.6自带的 MariaDB(MariaDB是MySQL的一个分支),与要安装的MySQL有冲突,需要删除。

1
2
3
4
5
# 查询是否安装了mariadb
rpm -aq | grep mariadb

# 删除mariadb。-e 删除指定的套件;--nodeps 不验证套件的相互关联性
rpm -e --nodeps mariadb-libs

  • 安装依赖
1
yum install perl -y

1
yum install net-tools -y

安装MySQL

1
2
3
4
5
6
7
8
9
# 上传MySQL压缩包
# 解压缩
tar xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

# 依次运行以下命令
rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm

修改MySQL的root口令(找到系统给定的随机口令、修改口令)

1
2
3
4
5
# 启动数据库
systemctl start mysqld

# 查看MySQL数据库状态
systemctl status mysqld

1
2
# 查找root密码
grep password /var/log/mysqld.log

1
2
3
4
5
6
7
8
9
10
11
# 进入MySQL,使用前面查询到的口令
mysql -u root -p

# 设置口令强度
set global validate_password_policy=0;

# 将root口令设置为12345678
set password for 'root'@'localhost' =password('12345678');

# 刷新
flush privileges;

validate_password_policy 密码策略(默认是1),可配置的值有以下:

  • 0 or LOW 仅需需符合密码长度(由参数validate_password_length【默认为8】指定)

  • 1 or MEDIUM 满足LOW策略,同时还需满足至少有1个数字,小写字母,大写字母和特殊字符

  • 2 or STRONG 满足MEDIUM策略,同时密码不能存在字典文件(dictionaryfile)中

备注:个人开发环境,出于方便的目的设比较简单的密码;生产环境一定要设复杂密码!

MySQL创建hive用户

1
2
3
4
5
6
7
8
# 创建用户设置口令
CREATE USER 'hive'@'%' IDENTIFIED BY '12345678';

# 授权
GRANT ALL ON *.* TO 'hive'@'%';

# 刷新
FLUSH PRIVILEGES;

1
2
# 是否可登录新建的hive用户
mysql -uhive -p12345678

Hive安装

安装Hive

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 上传Hive压缩包
# 解压缩
tar -zxvf apache-hive-2.3.7-bin.tar.gz -C /opt/lagou/servers

# 修改解压的hive文件夹名
cd /opt/lagou/servers
mv apache-hive-2.3.7-bin hive-2.3.7


# 在 /etc/profile 文件中增加环境变量
vim /etc/profile

export HIVE_HOME=/opt/lagou/servers/hive-2.3.7
export PATH=$PATH:$HIVE_HOME/bin

# 执行并生效
source /etc/profile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 修改Hive配置
cd /opt/lagou/servers/hive-2.3.7/conf
vi hive-site.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- hive元数据的存储位置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://Linux123:3306/hivemetadata?createDatabaseIfNotExist=true&amp;useSSL=false</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<!-- 指定驱动程序 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<!-- 连接数据库的用户名 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>username to use against metastore database</description>
</property>
<!-- 连接数据库的口令 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>12345678</value>
<description>password to use against metastore database</description>
</property>
</configuration>

备注:注意jdbc的连接串,如果没有 useSSL=false 会有大量警告;在xml文件中 & 表示 &

  • 拷贝MySQL JDBC驱动程序

将 mysql-connector-java-5.1.46.jar 拷贝到 $HIVE_HOME/lib

  • 初始化元数据库
1
schematool -dbType mysql -initSchema

查看MySQL数据库,新增了hivemetadata数据库


  • 启动Hive,执行命令
1
2
3
4
# 启动hive服务之前,请先启动hdfs、yarn的服务
hive

hive> show functions;