我们在上篇文章中,已经演示了如何安装Alluxio,并将HDFS作为Alluxio的底层文件系统。
这里我们将通过一系列的文章,来说明如何将Alluxio和常见的一些结算框架实现集成,用以提交查询。
本篇,将说明如何实现 Alluxio和Apache Hive的集成(至于查询效率到底有多少提升?我们稍后将通过专门的查询性能测试对比来说明)。
一、准备工作
1. 已经安装好Hadoop基础环境和Hive客户端环境
2. 系统已安装Java1.7以上版本的JDK
3. 通过Hive能正常提交查询作业
二、配置及环境准备工作
1. 修改hadoop、hive配置文件中Alluxio相关配置项
在hvie客户端所在的服务器,修改Hadoop配置文件 core-site.xml,增加如下黑体部分示例的配置项
[op1@HIVE_CLIENT_HOST_NAME01 app]$ vi /etc/hadoop/conf/core-site.xml
fs.alluxio.impl
alluxio.hadoop.FileSystem
fs.AbstractFileSystem.alluxio.impl
alluxio.hadoop.AlluxioFileSystem
alluxio.user.file.writetype.default
CACHE_THROUGH
[op1@HIVE_CLIENT_HOST_NAME01 app]$ vi /etc/hive/conf/hive-site.xml
fs.defaultFS
alluxio://:19998
alluxio.user.file.writetype.default
CACHE_THROUGH
在Hadoop运行环境配置文件hadoop-env.shhadoop-env.sh中增加如下黑体所示HADOOP_CLASSPATH配置项
[op1@HIVE_CLIENT_HOST_NAME01 app]$ vi /etc/hadoop/conf/hadoop-env.sh
export HADOOP_CLASSPATH=/
2. 分发alluxio 客户端jar包到所有Hadoop MapReduce节点,并重启Hadoop集群的NodeManager
将上述步骤,hadoop-env.sh中配置的Alluxio客户端jar文件/
[op1@HIVE_CLIENT_HOST_NAME01 app]$ ls -l $HADOOP_HOME/share/hadoop/common/lib/ | grep "alluxio-core-client"
-rw-rw-r-- 1 op1 op1 46835687 Jan 15 21:50 alluxio-core-client-1.4.0-jar-with-dependencies.jar
3. 分发alluxio 客户端jar包到Hive跟目录下的lib目录
将上述步骤,hadoop-env.sh中配置的Alluxio客户端jar文件/
[op1@HIVE_CLIENT_HOST_NAME01 app]$ ls -l $HIVE_HOME/lib/ | grep "alluxio-core-client"
-rw-r--r-- 1 op1 op1 46835687 Jan 15 21:53 alluxio-core-client-1.4.0-jar-with-dependencies.jar
三、验证
1. 在安装有alluxio的节点上行执行如下命令,查看是否存在目录路径/user/hive/warehouse和/tmp
[op1@HIVE_CLIENT_HOST_NAME01 current]$ ./bin/alluxio fs ls alluxio://SVR3404HW1288:19998/user/hive/
drwxr-xr-x op1 op1 1.00B 01-15-2017 23:17:19:661 Directory /user/hive/warehouse
如果不存在上述目录 ,请执行如下命令创建目录路径/user/hive/warehouse和/tmp
./bin/alluxio fs mkdir /tmp
./bin/alluxio fs mkdir /user/hive/warehouse
./bin/alluxio fs chmod 775 /tmp
./bin/alluxio fs chmod 775 /user/hive/warehouse
2. 在hive客户端所在服务器本地,创建数据文件hive-test.txt,写入数据如下
1 hadoop
2 hive
3 hbase
4 hello
5 alluxio-hive
3. 启动hive客户端,创建表,并加载本地数据到该表
hive> CREATE TABLE IF NOT EXISTS test_alluxio_hive_tbl (id INT,word STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY " " LINES TERMINATED BY "\n";
OK
Time taken: 0.762 seconds
hive> LOAD DATA LOCAL INPATH 'hive-test.txt' OVERWRITE INTO TABLE test_alluxio_hive_tbl;
Loading data to table default.words
Table default.words stats: [numFiles=1, numRows=0, totalSize=32, rawDataSize=0]
OK
Time taken: 1.302 seconds
4. 执行查询
hive> show tables;
OK
test_alluxio_hive_tbl
words
Time taken: 0.578 seconds, Fetched: 2 row(s)
hive> select * from test_alluxio_hive_tbl;
OK
1 hadoop
2 hive
3 hbase
4 hello
5 alluxio-hive
Time taken: 0.498 seconds, Fetched: 5 row(s)
hive>
5. 删除表
hive> drop table if exists test_alluxio_hive_tbl;
OK
Time taken: 0.172 seconds
hive>