Flume HBase Sink 配置参数与Agent配置文件示例


1. HBaseSink

这个Sink将数据写入 HBase 。Hbase 配置是从类路径中遇到的第一个hbase-site.xml中获取的。由配置指定的 HbaseEventSerializer 的类用于将事件转换为 HBase put 或 increments 。然后将这些 puts 和 increments 写入HBase。该 Sink 提供与HBase相同的一致性保证,基于HBase当前行的原子性。如果Hbase无法写入某些event,则该 Sink 将重复该事务中的所有事件。

HBaseSink支持将数据安全的写入HBase。要安全的写入HBase,agent 正在运行的用户必须对 Sink 配置为写入的表具有写权限。可以在配置中指定用于对KDC进行身份验证的主体和密钥表。Flume agent 程序类路径中的 hbase-site.xml 必须将身份验证设置为kerberos(有关如何执行此操作的详细信息,请参阅HBase文档)。

为方便起见,Flume提供了两个序列化器。

SimpleHbaseEventSerializer(org.apache.flume.sink.hbase.SimpleHbaseEventSerializer)按原样将 event body 写入HBase,并可选择增加Hbase中的列。这主要是一个示例实现。

RegexHbaseEventSerializer(org.apache.flume.sink.hbase.RegexHbaseEventSerializer)根据给定的正则表达式分解 event body,并将每个部分写入不同的列。

类型: org.apache.flume.sink.hbase.HBaseSink

必须配置用粗体表示

配置名称 默认值 说明
channel
type 组件名称,hbase
table 表名,将数据写进HBase的哪张表。
columnFamily 列簇名,写入数据的HBase表的哪个列簇。
zookeeperQuorum hbase-site.xml 配置文件中 hbase.zookeeper.quorum 的值
znodeParent /hbase -ROOT- region 中 znode 的路径。hbase-site.xml 配置文件中 zookeeper.znode.parent 的值。
batchSize 100 每个批次写入的event数量
coalesceIncrements false 如果 Sink 将多个 increments 合并到每个批次的cell。如果对有限的 cells 进行多次increments,这可能会提供更好的性能。
serializer org.apache.flume.sink.
hbase.SimpleHbaseEventSerializer
默认增量列=“iCol”,有效负载列=“pCol”。
serializer.* 配置序列化类型
kerberosPrincipal 用于安全访问HBase的Kerberos用户主体
kerberosKeytab 用于安全访问HBase的Kerberos密钥表

示例:

a1.channels = c1
a1.sinks = k1
a1.sinks.k1.type = hbase
a1.sinks.k1.table = foo_table
a1.sinks.k1.columnFamily = bar_cf
a1.sinks.k1.serializer = org.apache.flume.sink.hbase.RegexHbaseEventSerializer
a1.sinks.k1.channel = c1
19/05/06 17:05:04 ERROR hbase.HBaseSink: Invalid HBase version:2.0.2.3.1.0.0-78
19/05/06 17:05:04 ERROR node.AbstractConfigurationProvider: Sink hbase-sink has been removed due to an error during configuration
org.apache.flume.conf.ConfigurationException: HBase major version number must be less than 2 for hbase-sink.
    at org.apache.flume.sink.hbase.HBaseSink.configure(HBaseSink.java:203)
    at org.apache.flume.conf.Configurables.configure(Configurables.java:41)
    at org.apache.flume.node.AbstractConfigurationProvider.loadSinks(AbstractConfigurationProvider.java:453)
    at org.apache.flume.node.AbstractConfigurationProvider.getConfiguration(AbstractConfigurationProvider.java:106)
    at org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:145)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

2. HBase2Sink

HBase2Sink 相当于HBaseSink 用户 HBase 2.x 版本。提供的功能和配置参数与HBaseSink的相同(除了Sink type配置中的包名与类名的配置)。

类型:org.apache.flume.sink.hbase2.HBase2Sink.

必须配置用粗体表示

配置名称 默认值 说明
channel
type 组件名称, hbase2
table 表名,将数据写进HBase的哪张表。
columnFamily 列簇名,写入数据的HBase表的哪个列簇。
zookeeperQuorum hbase-site.xml 配置文件中 hbase.zookeeper.quorum 的值
znodeParent /hbase -ROOT- region 中 znode 的路径。hbase-site.xml 配置文件中 zookeeper.znode.parent 的值。
batchSize 100 每个批次写入的event数量
coalesceIncrements false 如果 Sink 将多个 increments 合并到每个批次的cell。如果对有限的 cells 进行多次increments,这可能会提供更好的性能。
serializer org.apache.flume.sink.hbase2.SimpleHBase2EventSerializer 默认增量列=“iCol”,有效负载列=“pCol”。
serializer.* 配置序列化类型
kerberosPrincipal 用于安全访问HBase的Kerberos用户主体
kerberosKeytab 用于安全访问HBase的Kerberos密钥表
a1.channels = c1
a1.sinks = k1
a1.sinks.k1.type = hbase2
a1.sinks.k1.table = foo_table
a1.sinks.k1.columnFamily = bar_cf
a1.sinks.k1.serializer = org.apache.flume.sink.hbase2.RegexHBase2EventSerializer
a1.sinks.k1.channel = c1

3. AsyncHBaseSink

此接收器使用异步模型将数据写入HBase。实现由配置指定的 AsyncHbaseEventSerializer 的类用于将 event 转换为HBase put 或increments。然后将这些 puts 和 increments 写入HBase。此接收器使用 Asynchbase API 写入HBase。该 Sink 提供与HBase相同的一致性保证,基于HBase当前行的原子性。如果Hbase无法写入某些event,则 Sink 将重复该事务中的所有events。AsyncHBaseSink只能与HBase 1.x一起使用。AsyncHBaseSink使用的异步客户端库不适用于HBase 2。

类型: org.apache.flume.sink.hbase.AsyncHBaseSink.

必须配置用粗体表示

配置名称 默认值 说明
channel
type 组件名称, asynchbase
table 表名,将数据写进HBase的哪张表。
columnFamily 列簇名,写入数据的HBase表的哪个列簇。
zookeeperQuorum hbase-site.xml 配置文件中 hbase.zookeeper.quorum 的值
znodeParent /hbase -ROOT- region 中 znode 的路径。hbase-site.xml 配置文件中 zookeeper.znode.parent 的值。
batchSize 100 每个批次写入的event数量
coalesceIncrements false 如果 Sink 将多个 increments 合并到每个批次的cell。如果对有限的 cells 进行多次increments,这可能会提供更好的性能。
timeout 60000 接收为事务中的所有事件等待来自hbase的ack的时间长度(以毫秒为单位)。
serializer org.apache.flume.sink.
hbase.SimpleAsyncHbaseEventSerializer
serializer.* 配置序列化类型
async.* 要传递给asyncHbase库的属性。这些属性优先于旧的zookeeperQuorum和znodeParent值。 您可以在AsyncHBase的文档页面中找到可用属性的列表。

注意:该 Sink 在配置中获取Zookeeper Quorum和 parent znode信息。可以在flume配置文件中指定 Zookeeper Quorum 和 parent node 点配置。或者,这些配置值取自类路径中的第一个hbase-site.xml文件。

如果配置中未提供这些,则 Sink 将从类路径中的第一个hbase-site.xml文件中读取此信息。

示例:

a1.channels = c1
a1.sinks = k1
a1.sinks.k1.type = asynchbase
a1.sinks.k1.table = foo_table
a1.sinks.k1.columnFamily = bar_cf
a1.sinks.k1.serializer = org.apache.flume.sink.hbase.SimpleAsyncHbaseEventSerializer
a1.sinks.k1.channel = c1

文章作者: hnbian
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 hnbian !
评论
  目录