Hadoop或HBase写出部分结果?

时间:2012-08-14 17:11:54

标签: hadoop mapreduce hbase

我有一个问题很少发生在将部分结果写入HBase数据库的地方。这是我的映射器和缩减器的描述:

  • 映射器计算与特定功能相关的数据,并使用keys = data name和values = count发送MapWritables。例如:

    Key = "Feature X"
    MapWritables = 
       {"Total Usage":"4", "Unique Usage":2, "Associated Revenue":22}, 
       {"Total Usage":"3", "Unique Usage":1, "Associated Revenue":20}
    
  • 如果键相同,则Reducers将MapWritable中的值相加。结果写入HBase,其中键是行id,列是映射中的键,值是总和。给出上面的示例键和映射,我们将写入HBase:

     rowID = "Feature X" 
     column,value="Total Usage", 7 
     column,value="Unique Usage", 3 
     column,value="Associated Revenue", 42
    

过去4个月中有两次(因此不是很频繁),结果已写入HBase,其中一列有一些非常低的数字(如1或3),其余列具有正常数字。当我重新运行作业时,错误的列值会跳到其预期值。它不是两次都被“破坏”的同一列。没有错误写入日志。

有没有其他人经历过类似的行为?有人有想法吗?任何帮助,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

如果您使用的是hadoop 0.20。*它缺少追加支持,导致hbase偶尔丢失数据。 HBase需要附加写入WAL等内容,如果没有它,则不能保证所有写入都能写入磁盘。 - 如果是你的情况,你可以将hadoop更新到更高版本。