AsyncHBaseSink和HbaseSink之间的差异

时间:2016-12-08 16:56:00

标签: hbase flume

在水槽中我读到Hbase有两个接收器,那么它们之间的差异是什么(AsyncHBaseSink和HbaseSink),以及何时使用它们?

1 个答案:

答案 0 :(得分:0)

Flume有两个HBase接收器,HBaseSink(org.apache.flume.sink.hbase.HBaseSink)和AsyncHBaseSink(org.apache.flume.sink.hbase.AsyncHBaseSink)。这两个接收器最终会聚合到类似的功能,但目前每个接收器都有一些优势:

The AsyncHBaseSink currently gives better performance than the HBaseSink, primarily because it makes non-blocking calls to HBase.
The HBaseSink will soon support secure HBase clusters (FLUME-1626) and the new HBase IPC which was introduced in HBase 0.96.

对于HBaseSink,序列化程序将Flume事件转换为一个或多个HBase Puts和/或增量。序列化程序必须实现HbaseEventSerializer。当Flume配置框架启动接收器时,将实例化串行器。对于由接收器处理的每个事件,接收器调用序列化器中的initialize方法。序列化程序必须将Flume事件“转换”为HBase put和增量,这应该由getActions和getIncrements方法返回。然后,这些放置和增量通过线路发送到HBase集群。当接收器停止时,HBaseSink将关闭此序列化器的实例。

AsyncHBaseSink的序列化程序必须实现AsyncHbaseEventSerializer。

在这种情况下,初始化方法在启动时由接收器调用一次。对于每个事件,接收器调用setEvent方法,然后调用getActions和getIncrements方法 - 类似于HBaseSink。当接收器停止时,将调用序列化程序的cleanUp方法。请注意,这些方法不会返回标准HBase Puts和Increments,而是返回asynchbase API中的PutRequest和AtomicIncrementRequest。这些大致相当于HBase Puts和Increments,但有一些差异。