Hive 2.3.4 安裝及配置

Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据。它架构在Hadoop之上,总归为大数据,并使得查询和分析方便。并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
logo

前期工作

  • 安装JDK

  • 安装Hadoop

  • 安装MySQL

下载并安装Hive

下载

Hive下载地址官网

选择apache-hive-2.3.4-bin.tar.gz进行下载。

安装

将压缩包复制至想要的安装位置,我的做法是复制到跟hadoop安装的同一个目录下。

1
2
3
sudo mv apache-hive-2.1.1-bin.tar.gz /usr/local/Cellar/hadoop
cd /usr/local/Cellar/hadoop
sudo tar -xzvf apache-hive-2.3.4-bin.tar.gz ##解压

设置系统环境变量

编辑bash_profile文件 vi .bash_profile
添加以下内容。

1
2
3
# Hive
export HIVE_HOME=/usr/local/Cellar/hadoop/apache-hive-2.3.4-bin
export PATH=$PATH:$HIVE_HOME/bin

使环境变量生效: source .bash_profile

配置文件hive.site.xml

进入Hive/conf文件夹 复制示例配置文件并改名为hive.site.xml

1
cp hive-default.xml.template hive-site.xml

在开头添加如下配置。

1
2
3
4
5
6
7
8
<property>
<name>system:java.io.tmpdir</name>
<value>/tmp/hive/java</value>
</property>
<property>
<name>system:user.name</name>
<value>${user.name}</value>
</property>

创建及配置HDFS文件夹

创建

在 Hive 中创建表之前需要创建以下 HDFS 目录并给它们赋相应的权限。

1
2
3
4
5
6
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -mkdir -p /user/hive/tmp
hdfs dfs -mkdir -p /user/hive/log
hdfs dfs -chmod 777 /user/hive/warehouse
hdfs dfs -chmod 777 /usr/hive/tmp
hdfs dfs -chmod 777 /usr/hive/log

创建完成后可以使用hdfs dfs -ls /hive查看是否已经成功新建文件夹。

配置

打开刚刚准备好的hive-site.xml配置文件,把刚刚新建的HDFS文件夹的路径添加到配置文件中去。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<property>
<name>hive.exec.scratchdir</name>
<value>hive/tmp</value>
<description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.</description>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
<property>
<name>hive.querylog.location</name>
<value>/hive/log</value>
<description>Location of Hive run time structured log file</description>
</property>

创建及配置Mysql

创建Hive数据库

假定你已经安装好MySQL。下面需要创建一个 hive 数据库用来存储 Hive 元数据

打开Mysql服务,并以root用户登入。

1
2
mysql.server start
mysql -u root -p # 回车后输入密码 若无密码则使用 mysql -u root

创建用户名

进入mysql后,创建一个 hive 数据库用来存储 Hive 元数据,且数据库访问的用户名和密码都为hadoop。

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
CREATE DATABASE hive; 
USE hive;
CREATE USER 'hadoop'@'localhost' IDENTIFIED BY 'hadoop';
GRANT ALL ON hive.* TO 'hive'@'localhost' IDENTIFIED BY 'hadoop';
GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hadoop';
FLUSH PRIVILEGES;
quit;
```
### 配置
将刚刚创建的数据库及用户名和密码写入配置文件。
``` xml
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hadoop</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hadoop</value>
</property>

配置JDBC

由于需要使用Java连接Mysql数据库,所以需要配置MySQL Connector。我这里使用的是mysql-connector-java-5.1.39-bin版本下载地址。并将它复制进 $HIVE_HOME/lib路径下

启动及测试

启动HDFS

使用Hive之前,请先确保HDFS已经启动。可以使用start-dfs.sh脚本来启动 HDFS。

Mysql初始化

从 Hive 2.1 版本开始, 我们需要先运行 schematool 命令来执行初始化操作。

1
schematool -dbType mysql -initSchema

运行后终端将会显示如下信息
schematool result show

使用Hive CLI

要使用 Hive CLI(Hive command line interface), 可以在终端输入Hive,便可以进入。
启动信息如下:
hive cli start message
创建一个table

1
CREATE TABLE pokes (foo INT, bar STRING);

show tables和desc pokes 显示信息如下
show tables and desc pokes message
在HDFS中显示如下
show in hdfs

Have a nice day!