HBase应用(二):把数据批量导入HBase

1、使用importtsv:将hdfs中的结构化数据导入HBase中

1、默认情况下,hdfs上的文件,是要以'\t'分隔的,例如
test.tsv
       20170222_10001        column=info:name, timestamp=1497059738675, value=tom                                      
       20170222_10002       column=info:name, timestamp=1497059738956, value=jack                                     
       20170222_10003       column=info:name, timestamp=1497059739013, value=leo                                      
       20170222_10004       column=info:name, timestamp=1497059739121, value=peter                                    
       20170222_10005       column=info:name, timestamp=1497059739254, value=jim                                      
       20170222_10006       column=info:name, timestamp=1497059740585, value=zhangsan 

$HADOOP_HOME/bin/yarn  
jar  $HBASE_HOME/lib/hbase-server-0.98.6-hadoop2.jar  
 importtsv
-Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:age,info:sex 
stu_info  /test.tsv
-》stu_info 为hbase上表名;test.tsv为hdfs上文件
2、如果不是默认的\t,就要在语句中指定输入的分隔符,比如“,”
$HADOOP_HOME/bin/yarn
jar  $HBASE_HOME/lib/hbase-server-0.98.6-hadoop2.jar 
  importtsv
 -Dimporttsv.separator=,  
 -Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:age,info:sex
  stu_info  /test2.csv
 -》Dimporttsv.separator指定hdfs文件中的分隔符

2、completebulkload:大批量数据导入到HBase中

第一步:转换成Ffile(其实就是storeFile)
$HADOOP_HOME/bin/yarn 
jar $HBASE_HOME/lib/hbase-server-0.98.6-hadoop2.jar 
  importtsv
 -Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:age,info:sex 
 -Dimporttsv.bulk.output=/testHfile
 stu_info  /test3.tsv
-》Dimporttsv.bulk.output 输出到hdfs上,文件夹不需要手动创建
第二步:把Hfile导入hbase
$HADOOP_HOME/bin/yarn 
jar $HBASE_HOME/lib/hbase-server-0.98.6-hadoop2.jar
completebulkload 
/testHfile  stu_info

Bulk Load:利用Hbase的数据信息按照特定格式存储在hdfs内,直接在HDFS中生产持久化的HFile数据格式文件,然后上传至合适位置,即完成巨量数据快速入库的办法。配合mapreduce完成,高效便捷,而且不占用region资源,增添负载,在大数据量写入时能极大的提高写入效率,并降低对HBase的写入压力;

通常MapReduce在写入HBase时使用的是TableOutputFormat方式,在ruduce中直接生成put对象写入HBase(见hbse应用一),该方式在大数据量写入时效率低下(HBase会block写入,频繁进行flush,split,compact等大量io操作),并对Hbase节点的稳定性造成一定的影响(GC时间过长,响应变慢,导致节点超时退出,并引起一系列连锁反应);HBase支持bulk load的入库方式,通过使用先生成HFile,然后再bulk load到hbase的方式来替代之前调用HTableOutputFormat的方法有如下的好处:
(1)、消除了对HBase集群的插入压力
(2)、提高了Job的运行速度,降低了Job的执行时间

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 将各种类型的数据库或者文件导入到HBase,常见有三种方法: (1)使用HBase的API中的Put方法 (2...
    Tim在路上阅读 12,372评论 0 2
  • 简介 HBase是高可靠性,高性能,面向列,可伸缩的分布式存储系统,利用HBase技术可在廉价PC Serve...
    九世的猫阅读 2,253评论 1 6
  • Zookeeper用于集群主备切换。 YARN让集群具备更好的扩展性。 Spark没有存储能力。 Spark的Ma...
    Yobhel阅读 7,396评论 0 34
  • HBase存储架构图 HBase Master 为Region server分配region 负责Region s...
    kimibob阅读 5,662评论 0 52
  • 本文首先简单介绍了HBase,然后重点讲述了HBase的高并发和实时处理数据 、HBase数据模型、HBase物理...
    达微阅读 2,771评论 1 13