发生故障时的Hive HBase集成行为

时间:2015-06-25 17:38:26

标签: hadoop mapreduce hive hbase

我最近在Hive和HBase之间进行了整合。我用HBase serde创建了一个hive表,当我将记录插入hive表时,它被加载到HBase表中。我试图了解如果插入HiveHBase表之间失败怎么办? (HBase服务失败/网络问题)。我假设已经加载到HBase中的记录将在那里,当我重新运行操作时,我将有两个具有不同时间戳的数据副本(假设插入了20K记录10k并且发生了故障)。

  1. 将记录插入HBase的最佳方法是什么?
  2. Hive能否为我提供安全检查以确定数据是否已存在?
  3. mapreduce是这类场景的最佳镜头吗?我将编写一个mapreduce程序,它从hive中读取数据,并在插入之前在hbase中记录记录。这确保没有重复写入
  4. 对此的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

是的,重新运行加载操作时,您将拥有2个版本的数据。但是这很好,因为第二个版本将在下一次压缩时得到清理。只要你的插入是幂等的(他们很可能是),你就不会有问题。

在Lithium + Klout,我们使用自定义构建的HBaseSerDe编写HFile,而不是使用Put来插入数据。因此,我们生成HFile并使用批量加载工具在作业完成后加载所有数据。这是你可以整合Hive和HBase的另一种方式。