本文所用环境为3台hadoop2.2,hbase已经安装完毕,具体安装可参照前两篇文章。

hive适用的元数据库为mysql,所以master上要安装mysql,用系统自带的即可,这里不在详述。


(1)安装hive

  1. 解压

# tar zvxf hive-0.12.0.tar.gz -C /usr
# cd /usr
# mv hive-0.12.0 hive

2.替换jar包,保持hbase0.96与hadoop2.2一致

# cd /usr/hive/lib
# rm -rf hbase-0.94*
# find /usr/hbase/lib -name "hbase*.jar"|xargs -i cp {} ./

重点检查下zookeeper和protobuf的jar包是否和hbase保持一致,如果不一致,
拷贝protobuf.**.jar和zookeeper-3.4.5.jar到hive/lib下。

3.准备mysql当元数据库

拷贝mysql的jdbc jar包mysql-connector-java-5.1.10-bin.jar也拷贝到hive-0.12.0/lib下

拷贝完成后修改权限:

# chmod 777 mysql-connector-java-5.1.10-bin.jar

4.检查hbase与hive连接包是否存在,如果不存在拷贝一个到lib下

# cd /usr/hive/lib
# find -name hive-hbase-handler*

wKioL1PuQGyxL3mgAABqVeOAyLw296.jpg

5.配置mysql

安装mysql:

# yum install -y mysql mysql-server

安装完成后启动mysql:

# service mysqld start
# mysql

mysql相关操作:

①修改root密码:

# update user set password=password('hadoop') where user='root';

可自己根据情况修改

建立数据库hive

# create database hive;

③授权

# grant all on hive.* to 'root'@'%'  identified by 'hadoop';  
# flush privileges;


6.修改hive-site.xml配置

此处使用远程配置:


	
		javax.jdo.option.ConnectionUserName
		root
	
	
		javax.jdo.option.ConnectionPassword
		hadoop
	
	
  		hive.metastore.warehouse.dir
		hdfs://master:8020/hive/warehouse
	
	
		hive.exec.scratchdir
		hdfs://master:8020/hive/scratchdir
	
	
		hive.querylog.location
		/usr/hive/logs
	
	
		javax.jdo.option.ConnectionURL
		jdbc:mysql://192.168.41.100:3306/hiveMeta?createDatabaseIfNotExist=true
	
	
		javax.jdo.option.ConnectionDriverName
		com.mysql.jdbc.Driver
	
	
		hive.aux.jars.path
		file:///usr/hive/lib/hive-hbase-handler-0.13.0-SNAPSHOT.jar,file:///usr/hive/lib/protobuf-java-2.5.0.jar,file:///usr/hive/lib/hbase-client-0.96.0-hadoop2.jar,file:///usr/hive/lib/hbase-common-0.96.0-hadoop2.jar,file:///usr/hive/lib/zookeeper-3.4.5.jar,file:///usr/hive/lib/guava-11.0.2.jar
	
	
		hive.metastore.uris
		thrift://192.168.41.100:9083
	

注意:

hbase0.96与hive0.12整合文档_第1张图片

此处配置为连接mysql的账号密码


7.在HDFS上新建目录并授权

# hadoop fs -mkdir     /hive/warehouse
# hadoop fs -mkdir      /hive/scratchdir
# hadoop fs -chmod g+w  /hive/warehouse
# hadoop fs -chmod g+w   /hive/scratchdir

这里创建的目录名对应配置文件中的选项:

hbase0.96与hive0.12整合文档_第2张图片

8.修改其他配置:

①修改hadoop中的hadoop-env.sh

# vim /usr/hadoop/etc/hadoop/hadoop-env.sh

修改如下:

hbase0.96与hive0.12整合文档_第3张图片

②修改hive中配置

# cd /usr/hive/conf
# mv hive-default.xml.template hive-default.xml
# mv hive-env.sh.template hive-env.sh
# cd /usr/hive/bin
# vim hive-config.sh

修改内容如下:

wKiom1PuRQWySKDBAABrx3GIgGw347.jpg


(2)启动hive

1.启动hadoop和hbase

2.启动hive元数据库

# cd /usr/hive/bin
# hive  --service metastore -hiveconf hive.root.logger=DEBUG,console

元数据库启动后会卡住,放着不管,开启开启另一个终端即可。

3.启动hive

在另一个终端中运行:

# cd /usr/hive/bin
# hive

hbase0.96与hive0.12整合文档_第4张图片


(3)测试

  1. 分别启动hive和hbase shell

  2. 查看hive和hbase中,发现没有任何表:

wKioL1PuUo3A1RT0AAAx2L8Ub2E134.jpg

hbase0.96与hive0.12整合文档_第5张图片

3.在hive中创建表,语句如下:

hive> CREATE TABLE hbase_table_1(key int, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val") TBLPROPERTIES ("hbase.table.name" = "xyz");

创建之后分别查看hbase和hive中的变化:

hbase0.96与hive0.12整合文档_第6张图片

hbase0.96与hive0.12整合文档_第7张图片

4.通过hbase添加数据后再次查看:

hbase0.96与hive0.12整合文档_第8张图片

wKioL1PuU1bCnD1cAABkZb8UHAw338.jpg

至此说明hive和hbase整合成功。