0

我有一个很少发生的问题,其中部分结果被写入我们的 HBase 数据库。这是我的映射器和减速器的描述:

  • 映射器计算与特定功能关联的数据,并使用键 = 数据名称和值 = 计数发送 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),其余列的数字正常。当我重新运行作业时,错误的列值会跳到其预期值。两次都“损坏”的不是同一列。没有错误写入日志。

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

4

1 回答 1

0

如果您使用的是 hadoop 0.20.*,它缺少附加支持,这会导致 hbase 偶尔丢失数据。HBase 需要 append 诸如写入 WAL 之类的东西,没有它就不能保证所有写入都写入磁盘。- 如果这是您的情况,您可以将 hadoop 更新到更高版本。

于 2012-08-15T18:39:47.917 回答