Flume簡介與使用(一)——Flume安裝與配置
Flume簡介
Flume是一個分布式的、可靠的、實用的服務——從不同的數據源高效的采集、整合、移動海量數據。
分布式:可以多台機器同時運行采集數據,不同Agent的之前通過網絡傳輸數據
可靠的:Flume會將采集的數據緩存在Channel里,當Sink確認數據被接收了后才會從Channel里刪除
實用的:Flume的使用是非常簡單可用的,易於擴展,只需要修改配置文件的選項,就可以定制不同的Source、Channel、Sink,這得益於其精妙的設計
Agent是Flume的一個JVM進程,其中包含Source、Channel、Sink三個組件,要采集的數據經過定制化的Source緩存到Channel,Channel是一個隊列,Source向里面插入數據,Sink從里面取數據,當Sink確認數據被下一跳Agent或者DB等接收后會將數據從Channel刪除。
Flume最巧妙的地方就是其模塊化的設計。在實際的應用中要采集的數據可能會來自同的數據源,可以是命令的屏幕輸出、應用程序的日志、網絡流量等等,用戶可以定制不同的Source來分別采集。同樣也可以根據不同需求定制自己的Channel和Sink。下表是Flume1.6.0支持的部分組件類型
Source類型 | 說明 |
---|---|
Avro Source | 支持Avro協議(實際上是Avro RPC),內置支持 |
Thrift Source | 支持Thrift協議,內置支持 |
Exec Source | 基於Unix的command在標准輸出上生產數據 |
JMS Source | 從JMS系統(消息、主題)中讀取數據,ActiveMQ已經測試過 |
Spooling Directory Source | 監控指定目錄內數據變更 |
Twitter 1% firehose Source | 通過API持續下載Twitter數據,試驗性質 |
Netcat Source | 監控某個端口,將流經端口的每一個文本行數據作為Event輸入 |
Sequence Generator Source | 序列生成器數據源,生產序列數據 |
Syslog Sources | 讀取syslog數據,產生Event,支持UDP和TCP兩種協議 |
HTTP Source | 基於HTTP POST或GET方式的數據源,支持JSON、BLOB表示形式 |
Legacy Sources | 兼容老的Flume OG中Source(0.9.x版本) |
Channel類型 | 說明 |
---|---|
Memory Channel | Event數據存儲在內存中 |
JDBC Channel | Event數據存儲在持久化存儲中,當前Flume Channel內置支持Derby |
File Channel | Event數據存儲在磁盤文件中 |
Spillable Memory Channel | Event數據存儲在內存中和磁盤上,當內存隊列滿了,會持久化到磁盤文件(當前試驗性的,不建議生產環境使用) |
Pseudo Transaction Channel | 測試用途 |
Custom Channel | 自定義Channel實現 |
Sink類型 | 說明 |
---|---|
Kafka Sink | 把數據寫入Kafka topic |
Hive Sink | 把數據寫入Hive數據庫或分區 |
HDFS Sink | 數據寫入HDFS |
Logger Sink | 數據寫入日志文件 |
Avro Sink | 數據被轉換成Avro Event,然后發送到配置的RPC端口上 |
Thrift Sink | 數據被轉換成Thrift Event,然后發送到配置的RPC端口上 |
IRC Sink | 數據在IRC上進行回放 |
File Roll Sink | 存儲數據到本地文件系統 |
Null Sink | 丟棄到所有數據 |
HBase Sink | 數據寫入HBase數據庫 |
Morphline Solr Sink | 數據發送到Solr搜索服務器(集群) |
ElasticSearch Sink | 數據發送到Elastic Search搜索服務器(集群) |
Kite Dataset Sink | 寫數據到Kite Dataset,試驗性質的 |
Custom Sink | 自定義Sink實現 |
Flume安裝
這篇先介紹如何安裝Flume,以及如何設置配置文件,后面再介紹如何使用Thrift Source采集日志。
一、Flume1.6.0版本求JVM1.6及以上版本,安裝好JDK(自帶JVM)后,去Flume官網下載二進制格式的壓縮包並解壓。
二、進入conf目錄下:cp flume-conf.properties.template myFlumeConf.properties
三、根據自己需要修改里面的配置,官網上有很多配置的定義。
配置好的屬性文件跟下面的類似:
四、啟動Flume
在Flume目錄下運行:
bin/flume-ng agent --conf conf --conf-file conf/trafficXXX.properties --name agent1 -Dflume.root.logger=INFO,console
其中--conf指定配置文件路徑,--conf-file指定配置文件,--name指定配置文件里的要啟動agent名字(一個配置文件里可以有多個agent的定義),-Dflume.root.logger指定Flume運行時輸出的日志的級別和地方。
轉載請注明原文出處,http://www.cnblogs.com/vincent-vg/p/5809626.html,謝謝