Hadoop或HBase写入部分结果?

Hadoop或HBase写入部分结果?,hadoop,mapreduce,hbase,Hadoop,Mapreduce,Hbase,我有一个问题很少发生,部分结果被写入我们的HBase数据库。以下是我的映射器和还原器的说明: 映射程序统计与特定功能关联的数据,并发送键为=数据名称,值为=计数的MapWritables。例如: 如果键相同,则还原器对MapWritable中的值求和。结果将写入HBase,其中键是行id,列是映射中的键,值是总和。根据上面的示例键和映射,我们将在HBase中写入: 在过去4个月内,有两次(因此不太频繁)将结果写入HBase,其中一列的数字非常低(如1或3),其余列的数字正常。当我重新运行

我有一个问题很少发生,部分结果被写入我们的HBase数据库。以下是我的映射器和还原器的说明:

  • 映射程序统计与特定功能关联的数据,并发送键为=数据名称,值为=计数的MapWritables。例如:

  • 如果键相同,则还原器对MapWritable中的值求和。结果将写入HBase,其中键是行id,列是映射中的键,值是总和。根据上面的示例键和映射,我们将在HBase中写入:

在过去4个月内,有两次(因此不太频繁)将结果写入HBase,其中一列的数字非常低(如1或3),其余列的数字正常。当我重新运行作业时,错误的列值跳到其预期值。不是同一列同时被“破坏”了。未将任何错误写入日志


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

如果您使用的是hadoop 0.20.*它缺少append支持,这会导致hbase偶尔丢失数据。HBase需要追加写入WAL之类的内容,如果没有它,则无法保证所有写入都能写入磁盘。-如果是这样的话,您可以将hadoop更新到更高的版本

你的Hadoop版本是什么?而Hbase呢?hadoop-core-0.20.2-cdh3u4,Hbase-0.90.4-cdh3u4My的问题可能属于这一类,因为我使用的是hadoop 0.20*(尽管我们的版本是Cloudera的cdh3u4),但是,为什么会向Hbase写入一个奇怪的值而不是没有值,这对我来说没有意义。我没有不断更新HBase中的值——我只写了一次,所以为什么它会选择写1而不是530000?如果它写的是垃圾,那么它就写的是垃圾。试着在不同的hadoop版本上运行它
Key = "Feature X"
MapWritables = 
   {"Total Usage":"4", "Unique Usage":2, "Associated Revenue":22}, 
   {"Total Usage":"3", "Unique Usage":1, "Associated Revenue":20}
 rowID = "Feature X" 
 column,value="Total Usage", 7 
 column,value="Unique Usage", 3 
 column,value="Associated Revenue", 42