1. Flume Channel
Channels是events在agent上進行的存儲庫。Source添加events,Sink移除events。
1.1 Memory Channel(內存Channels)
events存儲在配置最大大小的內存隊列中。對於流量較高和由於agent故障而准備丟失數據的流程來說,這是一個理想的選擇。
agent a1示例:
1.2 JDBC Channel
events存儲在持久化存儲庫中(其背后是一個數據庫)。JDBC channel目前支持嵌入式Derby。這是一個持續的channel,對於可恢復性非常重要的流程來說是理想的選擇。
agent a1示例:
1.3 Kafka Channel
events存儲在Kafka集群中。Kafka提供高可用性和高可靠性,所以當agent或者kafka broker 崩潰時,events能馬上被其他sinks可用。
Kafka channel可以被多個場景使用:
- Flume source和sink - 它為events提供可靠和高可用的channel
- Flume source和interceptor,但是沒sink - 它允許寫Flume evnets到Kafka topic
- Flume sink,但是沒source - 這是一種低延遲,容錯的方式從Kafka發送events到Flume sinks 例如 HDFS, HBase或者Solr
agent a1示例:
Security and Kafka Channel:
省略...
TLS and Kafka Channel:
省略...
Kerberos and Kafka Channel:
省略...
上述詳情可以查看官網:
http://flume.apache.org/FlumeUserGuide.html#kafka-channel
或者flume1.8 使用指南學習感悟(一)、flume1.8 使用指南學習感悟(二)關於Kafka部分
http://www.cnblogs.com/swordfall/p/8095213.html 4.6.8 Kafka Source
http://www.cnblogs.com/swordfall/p/8157766.html 1.11 Kafka Sink
1.4 File Channel
agent a1示例:
1.5 Spillable Memory Channel
events存儲在內存隊列和磁盤中。該channel目前正在試驗中,不要求在生產環境中使用。
agent a1示例:
讓內存channel隊列使用失效,功能類似file channel:
讓磁盤溢出使用失效,功能類似in-memory channel:
1.6 Pseudo Transaction Channel
注意:Pseudo Transaction Channel只用於單元測試,不用於生產環境使用。
1.7 Custom Channel
自定義channel是你實現Channel接口。當Flume agent啟動時,一個自定義channel類和它依賴項必須包含在agent的classpath。
agent a1的示例:
2. Flume Channel Selectors
如果類型沒有指定,那么默認“replicating”。
2.1 Replicating Channel Selector(default) (復制channel選擇器)
agent a1和它的source 為 r1:
在上面的配置中,c3是一個可選性的channel。寫event到c3出錯將會被忽略。因為c1和c2沒有標記為可選,寫到這些channels失敗將會導致事務提交失敗。
2.2 Multiplexing Channel Selector (多路復用Channel選擇器)
agent a1和它的source為r1:
2.3 Custom Channel Selector (自定義Channel選擇器)
一個自定義channel選擇器(selector)是實現ChannelSelector的接口。當Flume agent啟動時,一個自定義channel selector類和它依賴項必須包含在agent的classpath。
agent a1和它的source為r1:
參考資料:
https://flume.apache.org/FlumeUserGuide.html