0%

Hive搭建

介绍

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过和SQL类似的HiveQL语言快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作

Hive 没有专门的数据格式。所有Hive 的数据都存储在Hadoop兼容的文件系统(例如HDFS)中。Hive 在加载数据过程中不会对数据进行任何的修改,只是将数据移动到HDFS中Hive 设定的目录下,因此,Hive 不支持对数据的改写和添加,所有的数据都是在加载的时候确定的。

环境配置

Hive只需要在master节点上安装配置

解压and改名

1
2
tar -zxvf apache-hive-2.3.4-bin.tar.gz -C /app/servers
mv apache-hive-2.3.4-bin hive-2.3.4

添加环境变量

1
2
3
4
[root@master servers]# vi /etc/profile
#Hive Env
export HIVE_HOME=/app/servers/hive-2.3.4
export PATH=$PATH:$HIVE_HOME/bin

以下修改的配置文件都在hive-2.3.4/conf

修改 hive-site.xml

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
[root@master conf]# cp hive-env.sh.template hive-env.sh

在hive-site.xml中找到几个对应的name的property,然后把value值更改
hive-site.xml太多,建议弄到主机上用软件修改,完成在上传进去
[root@master conf]# vim hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive_metadata?createDatabaseIfNotExist=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>hive</value>
</property>

<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>12345678</value>
</property>
</configuration>

修改hive-env.sh文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@master conf]# cp hive-env.sh.template hive-env.sh
[root@master conf]# vim hive-env.sh
#找到下面位置,做对应修改
# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/app/servers/hadoop-2.7.7

# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/app/servers/hive-2.3.4/conf


# Folder containing extra libraries required for hive compilation/execution can be controlled by:
# export HIVE_AUX_JARS_PATH=
export JAVA_HOME=/app/servers/jdk1.8.0_191
export HIVE_HOME=/app/servers/hive-2.3.4

把mysql-connector-java.jar这个jar包拷到/app/servsers/hive-2.3.4/lib/下面

安装并配置mysql(因为hive的元数据是存储在mysql)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@master ~]# mkdir /app/src/
[root@master ~]# cd /app/src/
[root@master src]# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
[root@master src]# rpm -ivh mysql-community-release-el7-5.noarch.rpm
[root@master src]# yum install mysql-community-server
安装完成,重启服务
[root@master src]# service mysqld restart
[root@master src]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.51 MySQL Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
安装成功

修改root口令

1
2
3
4
5
6
7
8
9
10
# 查找root密码
grep password /var/log/mysqld.log
# 修改root口令
mysql -uroot -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策略,同时密码不能存在字典文件(dictionary file)中

创建hive用户

1
2
3
4
5
CREATE USER 'hive'@'%' IDENTIFIED BY '12345678';
-- 授权
GRANT ALL ON *.* TO 'hive'@'%';
-- 刷新
FLUSH PRIVILEGES;

初始化

1
[root@master src]# schematool -dbType mysql -initSchema  

验证hive

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
33
34
35
36
37
38
39
先创建一个txt文件存点数据,导入hive中
[root@master src]# vi users.txt
[root@master src]# cat users.txt
小张
小王
小陈
小兰
小红

进入hive
出现命令行就说明之前搭建是成功的
[root@master src]# hive
hive>
#创建users表,这个 row format delimited fields terminated by ','代表我们等下导过来的文件中字段是以逗号“,”分割字段的
# 所以我们上面users.txt不同字段中间有逗号

hive> create table users(id int, name string) row format delimited fields terminated by ',';
OK
Time taken: 7.29 seconds

# 导入数据
hive> load data local inpath '/app/src/users.txt' into table users;
Loading data to table default.users
OK
Time taken: 4.306 seconds
hive>

# 查询
hive> select * from users;
OK
1 小张
2 小王
3 小陈
4 小兰
5 小红
NULL NULL
Time taken: 1.259 seconds, Fetched: 6 row(s)

#成功

到此为止,hive配置就已经完成了