HBase 批量加载会产生大量减速器任务 - 任何解决方法
HBase 批量加载(使用 configureIncrementalLoad 帮助程序方法)将作业配置为创建与 hbase 表中的区域一样多的减速器任务。因此,如果有几百个区域,那么该作业将产生几百个减速器任务。在小型集群上这可能会变得非常慢。
是否可以通过使用 MultipleOutputFormat 或其他方法来解决问题?
谢谢
HBase bulk load (using configureIncrementalLoad helper method) configures the job to create as many reducer task as the regions in the hbase table. So if there are few hundred regions then the job would spawn few hundred reducer tasks. This could get very slow on a small cluster..
Is there any workaround possible by using MultipleOutputFormat or something else?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
很容易出现网络瓶颈。确保您正在压缩 HFile 和您的中间 MR 数据。
您的数据导入大小可能足够小,您应该考虑使用基于 Put 的格式。这将调用普通的HTable.Put API并跳过reducer阶段。请参阅 TableMapReduceUtil.initTableReducerJob(table, null, job)。
It's very easy to get network bottlenecked. Make sure you're compressing your HFile & your intermediate MR data.
Your data import size might be small enough where you should look at using a Put-based format. This will call the normal HTable.Put API and skip the reducer phase. See TableMapReduceUtil.initTableReducerJob(table, null, job).
当我们使用 HFileOutputFormat 时,它会覆盖您设置的减速器数量。
减速器的数量等于该 HBase 表中的区域数量。
因此,如果您想控制减速器的数量,请减少区域的数量。
您将找到示例代码 这里:
希望这会有用:)
When we use HFileOutputFormat, its overrides number of reducers whatever you set.
The number of reducers is equal to number of regions in that HBase table.
So decrease the number of regions if you want to control the number of reducers.
You will find a sample code here:
Hope this will be useful :)