首页 > 代码库 > hbase0.96与hive0.12整合文档

hbase0.96与hive0.12整合文档

本文所用环境为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配置

此处使用远程配置:

<configuration>
	<property>
		<name>javax.jdo.option.ConnectionUserName</name>
		<value>root</value>
	</property>
	<property>
		<name>javax.jdo.option.ConnectionPassword</name>
		<value>hadoop</value>
	</property>
	<property>
  		<name>hive.metastore.warehouse.dir</name>
		<value>hdfs://master:8020/hive/warehouse</value>
	</property>
	<property>
		<name>hive.exec.scratchdir</name>
		<value>hdfs://master:8020/hive/scratchdir</value>
	</property>
	<property>
		<name>hive.querylog.location</name>
		<value>/usr/hive/logs</value>
	</property>
	<property>
		<name>javax.jdo.option.ConnectionURL</name>
		<value>jdbc:mysql://192.168.41.100:3306/hiveMeta?createDatabaseIfNotExist=true</value>
	</property>
	<property>
		<name>javax.jdo.option.ConnectionDriverName</name>
		<value>com.mysql.jdbc.Driver</value>
	</property>
	<property>
		<name>hive.aux.jars.path</name>
		<value>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</value>
	</property>
	<property>
		<name>hive.metastore.uris</name>
		<value>thrift://192.168.41.100:9083</value>
	</property>
</configuration>

注意:

wKiom1PuQwfy0eAYAAB6zw1xzWo830.jpg

此处配置为连接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

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

wKiom1PuQpyz4D3oAACTGR6mYD4931.jpg

8.修改其他配置:

①修改hadoop中的hadoop-env.sh

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

修改如下:

wKioL1PuROeRtzWHAAEhh29VPiI048.jpg

②修改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

wKiom1PuUSCAcSgWAALPriCsJm0414.jpg


(3)测试

  1. 分别启动hive和hbase shell

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

wKioL1PuUo3A1RT0AAAx2L8Ub2E134.jpg

wKiom1PuUZmxm_nkAABNjYPIwyc483.jpg

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中的变化:

wKioL1PuUv-zLdDVAAD3-_iEMbs102.jpg

wKioL1PuUw6w4yxqAABGp9m6Zr0408.jpg

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

wKiom1PuUjCzrvFwAAC4ytZANQE047.jpg

wKioL1PuU1bCnD1cAABkZb8UHAw338.jpg

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

本文出自 “Xlows” 博客,转载请与作者联系!