将大体积减速器输出写入 HBase



我有一个Hadoop MapReduce作业,其输出是一个行ID,其中包含该行ID的Put/Delete操作。由于问题的性质,输出量相当高。我们已经尝试了几种方法将这些数据恢复到HBase中,但它们都失败了......

工作台减速机

这是放慢速度的方式,因为它似乎必须为每一行做一个完整的往返行程。由于化简器步骤的键排序方式,row-id 不太可能与化简器位于同一节点上。

完全批量加载

这似乎需要很长时间(从未完成),并且没有真正的迹象表明原因。IO 和 CPU 都显示出非常低的使用率。

我错过了一些明显的东西吗?

我从你对自己的回答中看到你解决了你的问题,但为了完整起见,我会提到还有另一种选择 - 直接写到 hbase。我们有一个设置,将数据流式传输到HBase中,通过适当的密钥和区域拆分,每个节点每秒超过15,000条1K记录

CompleteBulkLoad 是正确的答案。根据@DonaldMiner我深入研究并发现 CompleteBulkLoad 进程以"hbase"运行,这导致在尝试移动/重命名/删除源文件时出现权限被拒绝错误。该实现似乎在给出错误消息之前重试了很长时间;在我们的例子中最多 30 分钟。

授予 hbase 用户对文件的写入访问权限解决了该问题。

最新更新