flume1.8 使用指南學習感悟(二)
1. Flume Sinks
1.1 HDFS Sink
該sink把events寫進Hadoop分布式文件系統(HDFS)。它目前支持創建文本和序列文件。它支持在兩種文件類型壓縮。文件可以基於數據的經過時間或者大小或者事件的數量周期性地滾動。它還通過屬性(如時間戳或發生事件的機器)把數據劃分為桶或區。
agent a1的示例:
上述配置會將時間戳降到最後10分鐘。例如,帶有11:54:34 AM,June 12,2012時間戳的event將會造成hdfs路徑變成/flume/events/2012-06-12/1150/00。
1.2 Hive Sink
該sink streams 將包含分割文本或者JSON數據的events直接傳送到Hive表或分區中。使用Hive 事務寫events。當一系列events提交到Hive時,它們馬上可以被Hive查詢到。
Hive table 示例:
agent a1示例:
上述配置將會把時間戳降到最後10分鐘。例如,event時間戳 header設置為 11:54:34 AM, June 12,2012 ,和 ‘country’ header 設置 為 ‘india’ , 該event評估到partition(continent=‘asia‘, country=‘india‘, time=‘2012-06-12-11-50‘)。
1.3 Logger Sink
Logs event 在INFO 水平。典型用法是測試或者調試。
agent a1 示例:
1.4 Avro Sink
Flume events發送到sink,轉換為Avro events,並發送到配置好的hostname/port。從配置好的channel按照配置好的批量大小批量獲取events。
agent a1示例:
1.5 Thrift Sink
Flume events發送到sink,轉換為Thrift events,並發送到配置好的hostname/port。從配置好的channel按照配置好的批量大小批量獲取events。
agent a1示例:
1.5 IRC Sink
IRC sink從鏈接的channel獲取消息和推送消息到配置的IRC目的地。
agent a1示例:
1.6 File Roll Sink
在本地文件系統存儲events。
agent a1示例:
1.7 Null Sink
當接收到channel時丟棄所有events。
agent a1示例:
1.7 HBaseSinks
1.7.1 HBaseSink
該sink寫數據到HBase。
agent a1 示例:
1.7.2 AsyncHBaseSink
該sink采用異步模式寫數據到HBase。
agent a1示例:
1.8 MorphlineSolrSink
該sink從Flume events提取數據並轉換,在Apache Solr 服務端實時加載,Apache Solr servers為最終用戶或者搜索應用程序提供查詢服務。
agent a1示例:
1.9 ElasticSearchSink
該sink寫數據到elasticsearch集群。
agent a1示例:
1.10 Kite Dataset Sink
試驗sink寫event到Kite Dataset。
1.11 Kafka Sink
Flume Sink實現可以導出數據到一個Kafka topic。
Kafka sink配置例子:
1.11.1 Security and Kafka Sink
Flume和Kafka之間的聯系channel支持安全認證和數據加密。
安全認證SASL/GSSAPI(Kerberos V5) 或者 SSL(TLS實現) 可以被用於Kafka 版本 0.9.0 。
數據加密由SSL/TLS提供。
設置kafka.producer.security.protocol為下面值:
- SASL_PLAINTEXT - Kerberos or plaintext authentication with no data encryption
- SASL_SSL - Kerberos or plaintext authentication with data encryption
- SSL - TLS based encryption with optional authentication.
TLS 和 Kafka Sink:
帶有服務端認證和數據加密配置的例子:
註意:屬性ssl.endpoint.identification.algorithm沒有定義,因此沒有hostname驗證,為了是hostname驗證,可以設置屬性:
如果要求有客戶端認證,在Flume agent配置中添加下述配置。每個Flume agent必須有它的客戶端憑證,以便被Kafka brokers信任。
如果keystore和key使用不用的密碼保護,那麽ssl.key.password屬性需要提供出來:
Kerberos and Kafka Sink:
kerberos配置文件可以在flume-env.sh通過JAVA_OPTS指定:
使用SASL_PLAINTEST的安全配置示例:
使用SASL_SSL的安全配置示例:
JAAS文件實例(暫時沒看懂):
1.12 HTTP Sink
該sink將會從channel獲取events,並使用HTTP POST請求發送這些events到遠程服務。event 內容作為POST body發送。
agent a1示例:
1.13 Custom Sink(自定義Sink)
自定義sink是你實現Sink接口。當啟動Flume agent時,一個自定義sink類和它依賴項必須在agent的classpath中。
agent a1 示例:
參考資料:
https://flume.apache.org/FlumeUserGuide.html
flume1.8 使用指南學習感悟(二)