目录
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
在本实例中,mysql作为hive的metastore;hive来分析存储在hbase中的大量数据。配置hbase集群请参阅:Hbase的配置和分布式部署
说明:三台机器的主机名分别为:bigdata.centos01、bigdata.centos02、bigdata.centos03
一、hive的安装配置
1. 下载
wget http://archive.apache.org/dist/hive/hive-0.13.1/apache-hive-0.13.1-bin.tar.gz
2. 配置
- 修改conf/hive-env.sh
# 配置Hadoop
HADOOP_HOME=/opt/modules/hadoop-2.5.0
# 配置hive的配置文件目录
export HIVE_CONF_DIR=/opt/modules/hive-0.13.1-bin/conf
- 修改hive-site.xml
配置mysql作为hive的metastore
<configuration>
<!-- mysql作为hive的metastore -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://bigdata.centos03:3306/metastore?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>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<!-- 配置命令行显示列名和当前数据库名 -->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
<description>Whether to print the names of the columns in query output.</description>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
<description>Whether to include the current database in the Hive prompt.</description>
</property>
</configuration>
- 导入mysql驱动包
二、hive测试
采用官网的测试用例进行测试,在测试之前务必开启hdfs、yarn和mysql。
1. 下载测试数据
wget http://files.grouplens.org/datasets/movielens/ml-100k.zip
# 解压
unzip ml-100k.zip
2. 建库及导入数据
- 进入hive命令行界面
bin/hive
- 建库&建表
# 建库
create database test;
# 建表,列之间通过制表符分隔
CREATE TABLE u_data (
userid INT,
movieid INT,
rating INT,
unixtime STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;
- 导入数据
load data local inpath '/opt/datas/hiveTestData/ml-100k/u.data' into table u_data;
- 测试截图
三、hive和hbase集成
1. 配置
1.1 配置文件的修改
修改conf/hive-site.xml文件,增加zookeeper集群的配置,hive通过zookeeper来和hbase集成。
# hive-site.xml增加zookeeper的配置
<property>
<name>hbase.zookeeper.quorum</name>
<value>bigdata.centos01,bigdata.centos02,bigdata.centos03</value>
</property>
1.2 jar包的引用
hive和hbase的集成需要引用hbase的jar包。本实例使用软连接应用。
export HBASE_HOME=/opt/modules/hbase-0.98.6-cdh5.3.9
export HIVE_HOME=/opt/modules/hive-0.13.1-bin
ln -s $HBASE_HOME/lib/hbase-server-0.98.6-cdh5.3.9.jar $HIVE_HOME/lib/hbase-server-0.98.6-cdh5.3.9.jar
ln -s $HBASE_HOME/lib/hbase-client-0.98.6-cdh5.3.9.jar $HIVE_HOME/lib/hbase-client-0.98.6-cdh5.3.9.jar
ln -s $HBASE_HOME/lib/hbase-protocol-0.98.6-cdh5.3.9.jar $HIVE_HOME/lib/hbase-protocol-0.98.6-cdh5.3.9.jar
ln -s $HBASE_HOME/lib/hbase-it-0.98.6-cdh5.3.9.jar $HIVE_HOME/lib/hbase-it-0.98.6-cdh5.3.9.jar
ln -s $HBASE_HOME/lib/htrace-core-2.04.jar $HIVE_HOME/lib/htrace-core-2.04.jar
ln -s $HBASE_HOME/lib/hbase-hadoop2-compat-0.98.6-cdh5.3.9.jar $HIVE_HOME/lib/hbase-hadoop2-compat-0.98.6-cdh5.3.9.jar
ln -s $HBASE_HOME/lib/hbase-hadoop-compat-0.98.6-cdh5.3.9.jar $HIVE_HOME/lib/hbase-hadoop-compat-0.98.6-cdh5.3.9.jar
ln -s $HBASE_HOME/lib/high-scale-lib-1.1.1.jar $HIVE_HOME/lib/high-scale-lib-1.1.1.jar
ln -s $HBASE_HOME/lib/hbase-common-0.98.6-cdh5.3.9.jar $HIVE_HOME/lib/hbase-common-0.98.6-cdh5.3.9.jar
1.3 建表
hbase的表名是logs,列簇名为info,info内列名分别为:time、userid、searchname、retorder、cliorder、url
CREATE EXTERNAL TABLE logs(
key string,
time string,
userid string,
searchname string,
retorder string,
cliorder string,
url string
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:time,info:userid,info:searchname,info:retorder,info:cliorder,info:url")
TBLPROPERTIES ("hbase.table.name" = "logs");
2. 测试
- select * from logs limit 10;
- select count(*) from logs;