加载中…
正文 字体大小:

利用BulkLoad向Hbase插入数据过程详解

(2013-05-06 14:30:49)
写在开头:花了差不多有一个多星期的时间来尝试使用BulkLoad向Hbase插入数据,遇到了好多问题,也走了好多弯路。现在配置成功,给大家一个参考,方便他人。赠人玫瑰,手留余香。

在使用bulkload进行手动Hbase插入的过程:

我们使用的是hadoop-1.0.3,相应的Hbase版本为hbase-0.94.3
(其他的版本可能遇到的问题会不一样,这里大家参考就好)

1.将3个包:guava-11.0.2.jar、zookeeper-3.4.3.jar、protobuf-java-2.4.0a.jar放到$HADOOP_HOME/lib下

2.Hadoop配置:
去掉hadoop-env.sh里HADOOP_CLASSPATH前的注释,并在其前一行添加HBASE_HOME,如下,
export HBASE_HOME = XXX
export HADOOP_CLASSPATH=$HBASE_HOME/hbase-X.X.X.jar:$HBASE_HOME/hbase-X.X.X-test.jar:$HBASE_HOME/conf:${HBASE_HOME}/lib/zookeeper-X.X.X.jar:${HBASE_HOME}/lib/guava-11.0.2.jar

3.将$HBASE_HOME/conf下的hbase-site.xml拷到$HADOOP_HOME/conf目录下,将$HBASE_HOME/下的hbase-X.X.X.jar拷到$HADOOP_HOME/lib目录下,并启动/重启hadoop和hbase

4.将文档上传到hdfs上(我们这里将Hfile文件上传到hdfs的/hongjian目录下)
hadoop fs -put ../zm_GraduateStudent-S-PO /hongjian

5.在HBase新建将要导入的表(只需要表名和列族名)
create 'zm_GraduateStudent-S-PO','d','f'(这里我们新建表"zm_GraduateStudent-S-PO",rowkey是默认的,有两个列族分别为"d"和"f")
后来发现,其实创建表名,bulkload的过程也会自动在hbase中自动创建相应的表。

6.上传数据
$HADOOP_HOME/bin/hadoop jar $HBASE_HOME/hbase-0.94.3.jar  completebulkload hdfs://master:54310/hongjian/zm_GraduateStudent-S-PO zm_GraduateStudent-S-PO


整个过程遇到很多问题,具体的解决办法,列举如下:

1、如果报错Caused by: java.lang.IllegalStateException: The value of the hbase.metrics.showTableName conf option has not been specified in SchemaMetrics的问题的话,这是hbase-0.94.3的bug,需要更新。
利用BulkLoad向Hbase插入数据过程详解

在https://issues.apache.org/jira/browse/HBASE-4802这里下载patch文件,
在src的父目录下,执行patch -p0 < *3*
*3*指的是patch的目录地址
然后用maven进行重新编译:mvn package -Dmaven.test.skip.exec=true
如果你没有安装maven的话,在http://maven.apache.org/download.cgi下载一个maven,然后执行
mvn package -Dmaven.test.skip.exec=true
此过程需要联网,下载相应的依赖。

2、bulkload这个命令只能执行一遍,执行之后,hdfs里面的数据会被移动插入到hbase里面。其实bulkload的过程就是一个移动数据的过程。
如果重复bulkload,会报错如下:
$HADOOP_HOME/bin/hadoop jar $HBASE_HOME/hbase-0.94.3.jar  completebulkload hdfs://master:54310/hongjian/*1* *2*
*1*指的是你的Hfile文件目录 
*2*指的是你在Hbase中需要插入的表名

0

阅读 评论 收藏 转载 喜欢 打印举报
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有