背景
在現實世界中,非關系型的數據遠遠多于關系型數據
Flume的基本思想和特點
- 采用插拔式軟件架構森瘪,所有組件都是可插拔的
- 良好的可擴展性
- 高度定制化
- 聲明式動態(tài)化配置
- 語意路由
- 良好的可靠性(支持事務)
以往版本
- flume og 0.9之前的的版本德绿,已被棄用
- flume ng 現在廣泛使用的
這兩個版本是不兼容的
flume (ng版本)基本架構
agent
- 一系列的數據流稱為agent
- 從接受到下一個接受中間的數據流
- 主要包括source channel sink
event
- flume中的數據流傳遞的數據稱為event
- event由頭部和字節(jié)數組組成
source
- agent的內部成員
- flume中接受event的組件
- source的種類
1、avro source (內置avro server)
2鞍帝、thrift source (內置thrift server)
3久又、exec source (執(zhí)行指定的shell)
4幻工、spooling Directory source (檢測某個文件內的文件的變化)
5励两、kafka source (從kafka中讀取數據)
6、syslog source(接收tcp 和 udp 發(fā)過來的數據)
7囊颅、http source (接收http協(xié)議發(fā)來的數據)
8当悔、taildir source(檢測文件的變化 用的較多)
channel
- channel是一個暫存區(qū),保存source寫入的event,直到被sink 發(fā)射出去
- channel包含以下種類:
1踢代、memory channel
2盲憎、file channel
3、jdbc channel
4胳挎、kafka channel
sink
- sink 負責從channel 中讀取數據饼疙,并發(fā)送給下一個agent的source,
- sink的種類:
1、hdfs sink
2慕爬、hbase sink
3窑眯、avro/thrift sink
4屏积、morphlineSorlSink
5、kafka sink
flume 的事務
- flume使用事務的方式是保證event傳遞的可靠性
- sink 必須在event被存入channl 后磅甩,或者已經傳遞給下一個agent后炊林,才從上個channel中吧數據刪除
flume的高級組件
interceptor
- 類似于spring mvc 的攔截,來實現在event傳輸過程中的攔截
- 攔截的數據可以保存在event的頭部
- interceptor 分為:
1卷要、timestamp interceptor
2渣聚、host interceptor
3、uuid interceptor
4僧叉、regex filtering interceptor (正則過濾)
5奕枝、regex extractor interceptor(正則取出)
channel selector
- channel selector 允許flume source選擇一個或多個目標channel,并將當前的event寫入這些channel,flume提供兩種channel selector:
1瓶堕、replicating channel selector
2隘道、multiplexing channel selector
sink processor
- flume允許將多個sink 組裝成一個邏輯實體(sink group)而sink processor則在sink group的基礎上提供負載均衡和容錯的功能