将大容量reducer输出写入hbase

luaexgnf  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(532)

我有一个hadoop mapreduce作业,它的输出是一个行id,并对该行id执行put/delete操作。由于问题的性质,输出量相当大。我们尝试了几种方法将这些数据恢复到hbase中,但都失败了。。。
工作台减速器
这是一种放慢速度的方法,因为它似乎必须为每一行做一个完整的往返行程。由于reducer步骤的键是如何排序的,行id不太可能与reducer位于同一节点上。
全负荷
这似乎需要很长时间(从未完成),而且没有真正的迹象表明原因。io和cpu的使用率都很低。
我是不是漏掉了什么明显的东西?

tyg4sfes

tyg4sfes1#

我从你对self的回答中看到你解决了你的问题,但为了完整起见,我要提到还有另一种选择——直接写到hbase。我们有一个将数据流传输到hbase的设置,通过适当的密钥和区域分割,每个节点每秒可以获得超过15000条1k记录

00jrzges

00jrzges2#

完全的负担是正确的答案。根据@donaldminer,我深入挖掘,发现completebulkload进程作为“hbase”运行,这导致在尝试移动/重命名/删除源文件时出现权限拒绝错误。在给出错误消息之前,实现似乎要重试很长时间;我们的案子最多30分钟。
给hbase用户对文件的写访问权解决了这个问题。

相关问题