我有一个Hadoop MapReduce作业,其输出是一个row-id,对该行id具有Put / Delete操作。由于问题的性质,输出量相当高。我们尝试了几种方法将这些数据恢复到HBase中,但它们都失败了......
表缩减器
这是缓慢的方式,因为它似乎必须为每一行进行完整的往返。由于键对我们的reducer步骤进行排序,因此row-id不可能与reducer在同一节点上。
completebulkload
这似乎需要很长时间(永远不会完成),并且没有真正的迹象表明原因。 IO和CPU都显示出非常低的使用率。
我错过了一些明显的东西吗?
答案 0 :(得分:1)
我从你的回答中看到你解决了你的问题但是为了完整性我会提到另一个选择 - 直接写入hbase。我们有一个设置,我们将数据流式传输到HBase,并通过适当的密钥和区域分割,我们得到每个节点每秒超过15,000个1K记录
答案 1 :(得分:0)
CompleteBulkLoad是正确的答案。每个@DonaldMiner我深入挖掘并发现CompleteBulkLoad进程作为“hbase”运行,在尝试移动/重命名/删除源文件时导致权限被拒绝错误。在给出错误消息之前,该实现似乎会重试 long 时间;在我们的案例中最多30分钟。
为hbase用户提供对文件的写访问权解决了这个问题。