Hbase 的bulkLoading机制

本文介绍了HBase的bulkLoading机制,通过MapReduce生成HBase内部存储文件,以减少CPU和网络带宽消耗。 BulkLoad不写WAL,可能影响Replication。使用TotalOrderPartitioner确保HFiles在同一region,借助completebulkload工具将数据高效导入运行中的集群。注意避免在准备和导入期间region边界变化,以提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HBase bulkLoad的注意事项

bulk load 特性使用MapReduce 来输出table数据到HBase 内部数据格式, 然后直接把存储文件装进一个正在运行的集群。使用BulkLoad将会使用更少的CPU和网络带宽来简化HBASE API。

BulkLoad限制

BulkLoad会跳过WAL,Replication需要使用WAL所以无法看到bulk load 数据。解决方法是要裸数据或者HFILE发到备集群在那边处理。

BulkLoad架构分为两部分:

生成Hbase内部存储文件所以之后可以被有效的放入急群众。

为了有效的实现功能,HFileOutputFormat2必须被设置成HFIle在同一个region中,为了实现这个目的,需要使用TotalOrderPartitioner把输出文件分割成以Region键范围分割的文件

HFileOutputFormat2 包含一个方便的方法,configureIncrementalLoad(),可以自动根据当前表region边界来使用TotalOrderPartitioner进行分割。

完成数据装载

当数据import已经被准备好了, 使用completebulkload工具来把数据装在进正在运行的cluster里面.这个命令行扫描全部准备好的文件,每一个都决定好这个文件属于哪个region。之后会联系要接受HFIle的RegionServer,放入存储目录然后client就可以读出数据。

如果region的界限在bulkLoad准备阶段改变了,或者在准备和完成阶段改变了,completebulkload工具将会在自动将数据分到对应的region界限去。这个过程并不是最有效率的,所以用户应该减少准备bulkload 文件和导入cluster的时间, 除非其他clients同事也在用其他方式loading数据。

$ hadoop jar hbase-server-VERSION.jar completebulkload [-c /path/to/hbase/config/hbase-site.xml] /user/todd/myoutput mytable

其他值得关注:

http://blog.cloudera.com/blog/2013/09/how-to-use-hbase-bulk-loading-and-why/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值