1.Memory Channel
type=memory
内存通道是一个内存队列,源将事件写入其尾部,接收器从其头部读取事件。内存通道存储堆上的源写入它的事件。我们可以配置最大尺寸。
由于它将所有数据存储在内存中,因此提供了高吞吐量。它最适合那些不担心数据丢失的流。它不适用于涉及数据丢失的数据流
2.File Channel
type=file
它是 Flume 的持久通道。文件通道将所有水槽事件写入磁盘。即使进程或机器关闭或崩溃,它也不会丢失数据。
此通道确保仅当接收器使用事件并提交事务时,才从通道中删除提交到通道中的任何事件。即使机器/代理崩溃并重新启动,它也会这样做。
文件通道是高度并发的,可以同时处理多个水槽源和接收器。
它最适合我们需要数据持久性并且不能容忍数据丢失的流。
由于该通道将数据写入磁盘,因此即使在崩溃或故障时也不会丢失任何数据。这对于拥有非常大的容量也是有利的,尤其是与内存通道相比时
3. Kafka Channel
type=org.apache.flume.channel.kafka.KafkaChannel
Kafka 通道将 Flume 事件存储在必须单独安装的 Kafka 集群中。
Kafka 通道提供高可用性和复制。如果代理或 Kafka 代理崩溃,则水槽事件立即可供其他接收器使用
我们可以将 Kafka 通道用于多种场景:
a) With Flume source and sink
这为事件提供了一个高度可用且可靠的通道
b) With Flume source and interceptor but no sink
将 Flume 事件写入 Kafka 主题,以供其他应用程序使用
c) With Flume sink, but no source
这是一种将 Flume 事件从 Kafka 发送到 HDFS、HBase 或 Solr 等 Flume 接收器的低延迟、容错方式
4. Spillable Memory Channel(生产环境不建议使用)
type=SPILLABLEMEMORY
Spillable 内存通道将事件存储在内存队列和磁盘上。内存队列是主存储,磁盘是溢出。
使用嵌入式文件通道,管理磁盘存储。
如果内存中的队列已满,则文件通道会存储额外的传入事件。
它最适合在正常运行期间需要内存通道的高吞吐量的流,同时该流需要更大的文件通道容量,以便对间歇性的水槽接收端中断或排水率下降有良好的容忍度。
在代理崩溃或重启期间,只有存储在磁盘上的 Flume 事件才会在 Flume 代理上线时恢复。Spillable 内存通道目前是实验性的,不建议在生产中使用
5.Custom Channel
type=org.example.MyChannel
这是我们自己对 Channel 接口的实现。在启动 Flume 代理时,我们必须在代理的类路径中包含自定义通道的类及其依赖项。自定义渠道类型必须是其 FQCN
6.JDBC Channel
type=jdbc
JDBC 通道将 Flume 事件存储在由数据库支持的持久存储上。它目前支持嵌入式 Derby。
它最适用于可恢复性很重要的流程
7.Pseudo Transactional Channel(它仅用于测试目的)
type=org.apache.flume.channel.PseudoTxnMemoryChannel
不得在生产中使用它