bulk-load装载hdfs数据到hbase
来源:互联网 发布:西安淘宝模特兼职 编辑:程序博客网 时间:2024/06/05 18:04
bulk-load的作用是用mapreduce的方式将hdfs上的文件装载到hbase中,对于海量数据装载入hbase非常有用,参考http://hbase.apache.org/docs/r0.89.20100621/bulk-loads.html:
hbase提供了现成的程序将hdfs上的文件导入hbase,即bulk-load方式。它包括两个步骤(也可以一次完成):
1 将文件包装成hfile,hadoop jar /path/to/hbase.jar importtsv-Dimporttsv.columns=a,b,c <tablename><inputdir>
比如:
hbase提供了现成的程序将hdfs上的文件导入hbase,即bulk-load方式。它包括两个步骤(也可以一次完成):
1 将文件包装成hfile,hadoop jar /path/to/hbase.jar importtsv-Dimporttsv.columns=a,b,c <tablename><inputdir>
比如:
Java代码
- hadoop dfs -cat test/1
- 12
- 34
- 56
- 78
hadoop dfs -cat test/1 1 2 3 4 5 6 7 8
执行
Java代码
- hadoop jar ~/hbase/hbase-0.90.2.jar importtsv-Dimporttsv.columns=HBASE_ROW_KEY,f1 t8 test
hadoop jar ~/hbase/hbase-0.90.2.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY,f1 t8 test
将会启动mapreduce程序在hdfs上生成t8这张表,它的rowkey分别为1 3 5 7,对应的value为2 4 68
注意,源文件默认以"\t"为分割符,如果需要换成其它分割符,在执行时加上-Dimporttsv.separator=",",则变成了以","分割
2 在上一步中,如果设置了输出目录,如
Java代码
- hadoop jar ~/hbase/hbase-0.90.2.jar importtsv-Dimporttsv.bulk.output=tmp -Dimporttsv.columns=HBASE_ROW_KEY,f1 t8test
hadoop jar ~/hbase/hbase-0.90.2.jar importtsv -Dimporttsv.bulk.output=tmp -Dimporttsv.columns=HBASE_ROW_KEY,f1 t8 test
那么t8表还暂时不会生成,只是将hfile输出到tmp文件夹下,我们可以查看tmp:
Java代码
- hadoop dfs -du tmp
- Found 3 items
- 0hdfs://namenode:9000/user/test/tmp/_SUCCESS
- 65254hdfs://namenode:9000/user/test/tmp/_logs
- 462hdfs://namenode:9000/user/test/tmp/f1
hadoop dfs -du tmp Found 3 items 0 hdfs://namenode:9000/user/test/tmp/_SUCCESS 65254 hdfs://namenode:9000/user/test/tmp/_logs 462 hdfs://namenode:9000/user/test/tmp/f1
然后执行hadoop jar hbase-VERSION.jar completebulkload/user/todd/myoutputmytable将这个输出目录中的hfile转移到对应的region中,这一步因为只是mv,所以相当快。如:
hadoop jar ~/hbase/hbase-0.90.2.jar completebulkload tmp t8
然后
Java代码
- hadoop dfs -du/hbase/t8/c408963c084d328490cc2f80
9ade9428 - Found 4 items
- 124hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f80
9ade9428/.oldlogs - 692hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f80
9ade9428/.regioninfo - 0hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f80
9ade9428/.tmp - 462hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f80
9ade9428/f1
hadoop dfs -du /hbase/t8/c408963c084d328490cc2f809ade9428 Found 4 items 124 hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f80 9ade9428/.oldlogs 692 hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f80 9ade9428/.regioninfo 0 hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f80 9ade9428/.tmp 462 hdfs://namenode:9000/hbase/t8/c408963c084d328490cc2f80 9ade9428/f1
此时己经生成了表t8
注意,如果数据特别大,而表中原来就有region,那么会执行切分工作,查找数据对应的region并装载
程序使用中注意:
1因为是执行hadoop程序,不会自动查找hbase的config路径,也就找不到hbase的环境变量。因此需要将hbase-site.xml加入到hadoop-conf变量中
2 还需要将hbase/lib中的jar包放入classpath中
3执行以上的步骤2时需要将zookeeper的配置写入core-site.xml中,因为在那一步时甚至不会读取hbase-site.xml,否则会连不上zookeeper
http://koven2049.iteye.com/blog/982831
- bulk-load装载hdfs数据到hbase
- bulk-load 装载HDFS数据到HBase
- [HBase] bulk-load装载hdfs数据到hbase小结
- 【甘道夫】通过bulk load将HDFS上的数据导入HBase
- 通过Bulk Load导入HBase海量数据
- HBase数据导入----improttsv&Bulk Load
- Bulk Load使用--利用MapReduce job实现上传海量数据到HBase
- Bulk Load-HBase数据导入最佳实践
- HBase之Bulk Load实现快速导入数据
- Bulk Load-HBase数据导入最佳实践
- HBase数据导出到HDFS
- HBase数据导出到HDFS
- Trafodion Bulk Load 对比 Native HBase Bulk Load
- Spark将HDFS数据导入到HBase
- Spark将HDFS数据导入到HBase
- Spark将HDFS数据导入到HBase
- HDFS 上的数据导入到Hbase
- 从HDFS导入数据到HBASE
- hbase很有价值的读写性能提升(转载…
- HBase vs Cassandra-装载
- HBase二级索引与Join
- Bulk Loading - Hbase
- HBase加载大数据
- bulk-load装载hdfs数据到hbase
- Hbse源码分析-HFileOutputFo…
- HADOOP_CLASSPATH设置
- hadoop生态链资源
- Hadoop Streaming和Pipes
- hadoop pipes编程示例
- hadoop c++ pipes接口实现
- 流式计算之Storm简介
- MapR初探