一、引言
最近的一次培訓,用戶(hù)特意提到Hadoop環(huán)境下HDFS中存儲的文件如何才能導入到HBase,關(guān)于這部分基于HBase Java API的寫(xiě)入方式,之前曾經(jīng)有過(guò)技術(shù)文章共享,本文就不再說(shuō)明。本文基于Hive執行HDFS批量向HBase導入數據,講解Hive與HBase的整合問(wèn)題。這方面的文章已經(jīng)很多,但是由于版本差異,可操作性不大,本文采用的版本均基于以下版本說(shuō)明中的版本。
二、版本說(shuō)明
序號軟件版本
1Hive 0.10.0
2HBase0.94.0
3Hadoop1.0.1
三、配置指南
3.1 創(chuàng )建配置文件
cp conf/hive-default.xml.template hive-default.xml
cp conf/hive-default.xml.template hive-site.xml
3.2 修改配置文件
基于hive-default.xml.template進(jìn)行拷貝復制的hive-site.xml文件有問(wèn)題,主要集中在<description></description>標簽不配對的情況,需要根據錯誤提示進(jìn)行修改,修改完成后的配置文件如下所示:
View Code
3.3 新增配置屬性-hive.aux.jars.path
1 <property> 2 <name>hive.aux.jars.path</name> 3 <value>file:///home/hadoop/source/hive/lib/hive-hbase-handler-0.10.0.jar,file:///home/hadoop/source/hive/lib/hbase-0.94.0.jar,file:///home/hadoop/source/hive/lib/zookeeper-3.4.3.jar</value> 4 </property>
3.4 拷貝Jar包到Hive/lib目錄
hbase-0.94.0.jar,zookeeper-3.4.3.jar
四、測試腳本-創(chuàng )建HBase能夠識別的數據表
1 CREATE TABLE hbase_table_1(key int, value string) 2 STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 3 WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val") 4 TBLPROPERTIES ("hbase.table.name" = "xyz");
五、異常解決
5.1 錯誤提示
java.lang.NoClassDefFoundError: com/google/protobuf/Messageat org.apache.hadoop.hbase.io.HbaseObjectWritable.(HbaseObjectWritable.java…
5.2 解決方案
將$HBASE_HOME/lib/protobuf-java-2.4.0a.jar 拷貝到 $HIVE_HOME/lib/.
六、運行效果
[hadoop@hadoop1 lib]$ hive -hiveconf hbase.zookeeper.quorum=hadoop1WARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Please use org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files.Logging initialized using configuration in jar:file:/home/hadoop/source/hive/lib/hive-common-0.10.0.jar!/hive-log4j.propertiesHive history file=/tmp/hadoop/hive_job_log_hadoop_201401012315_758621762.txthive> 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"); OKTime taken: 23.246 secondshive> show tables;OKhbase_table_1Time taken: 1.346 seconds
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。