我有一个问题很少发生在将部分结果写入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),其余列具有正常数字。当我重新运行作业时,错误的列值会跳到其预期值。它不是两次都被“破坏”的同一列。没有错误写入日志。
有没有其他人经历过类似的行为?有人有想法吗?任何帮助,将不胜感激。谢谢!
答案 0 :(得分:0)
如果您使用的是hadoop 0.20。*它缺少追加支持,导致hbase偶尔丢失数据。 HBase需要附加写入WAL等内容,如果没有它,则不能保证所有写入都能写入磁盘。 - 如果是你的情况,你可以将hadoop更新到更高版本。