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