Flume的Channel分類

channel可以理解爲一種臨時的存儲,source將event放入channel ,sink取走它。flume提供了四種可以用於生產環境的channel。

1.Memory Channel

基於內存的channel,實際就是將event存放於內存中一個固定大小的隊列中。其優點是速度快,缺點是可能丟失數據。
可配置屬性如下:

屬性 默認 說明
type 這裏爲memory
capacity 100 存儲在channel中的最大event個數
transactionCapacity 100 每個事務中從source獲取或者發送到sink的event最大個數
keep-alive 3 添加或者刪除一個event的超時時間,單位爲秒
byteCapacityBufferPercentage 20 byteCapacity和預估的所有event大小之間的buffer。
byteCapacity   內存裏面允許存放的所有event的字節的最大值。

配置示例:

a1.channels = c1
a1.channels.c1.type = memory
a1.channels.c1.capacity = 10000
a1.channels.c1.transactionCapacity = 10000
a1.channels.c1.byteCapacityBufferPercentage = 20
a1.channels.c1.byteCapacity = 800000

2.JDBC Channel

將event存放於一個支持JDBC連接的數據庫中,目前官方推薦的是Derby庫,其優點是數據可以恢復。
可配置屬性如下:

屬性 默認 說明
type 這裏爲jdbc
db.type DERBY 數據庫類型
driver.class org.apache.derby.jdbc.EmbeddedDriver 數據庫驅動類
driver.url   jdbc connnection url
db.username sa 用戶名
db.password 密碼
connection.properties.file 連接配置文件
create.scheme true 如果scheme不存在是否創建
create.index true 是否創建索引
create.foreignkey true 是否可以有外鍵約束
transaction.isolation READ_COMMITTED 事務隔離機制。可選項有:
READ_UNCOMMITTED
READ_COMMITTED
SERIALIZABLE
REPEATABLE_READ
maximum.connections 10 連接數
maximum.capacity 0(無限制) channel中最大的event個數
sysprop.*   db的特殊配置
sysprop.user.home   Derby庫的存放路徑

配置示例:

a1.channels = c1
a1.channels.c1.type = jdbc

3.File Channel

在磁盤上指定一個目錄用於存放event,同時也可以指定目錄的大小。優點是數據可恢復,相對於memory channel來說缺點是要頻繁的讀取磁盤,速度較慢。
可配置屬性如下:

屬性 默認 說明
type 這裏爲file
checkpointDir ~/.flume(水道)/file-channel/checkpoint 檢查點存放目錄
useDualCheckpoints false 檢查點的備份。如果這個參數設置爲true,backupCheckpointDir必須設置。
backupCheckpointDir 此目錄作爲檢查點目錄的備用目錄,
必須與checkpointDir不同
dataDirs ~/.flume/file-channel/data 可以使用逗號分隔多個路徑,
使用在不同磁盤上的多個路徑能提升channel的表現
transactionCapacity 10000 channel中能支持的事務的最大數量。
maxFileSize 2146435071 單個文件的最大字節數。
minimumRequiredSpace 524288000 需要的最小空閒空間,單位爲byte。
capacity 1000000 channel 的最大容量
keep-alive 3 等待put操作的總時間,單位爲秒。
use-log-replay–v1 false 使用舊的replay邏輯。
use-fast-replay false replay時不使用隊列
checkpointOnClose true 控制是否創建一個checkpoint 當channel關閉的時候。
encryption.activeKey 用來加密數據的key的名稱。
encryption.cipherProvider 加密方式,支持的類型有AESCTRNOPADDING
encryption.keyProvider key的類型,支持的類型有JCEKSFILE
encryption.keyProvider.keyStoreFile   key文件存放的路徑
encrpytion.keyProvider.keyStorePasswordFile   密碼存放的路徑
encryption.keyProvider.keys 多個key
encyption.keyProvider.keys.*.passwordFile 多個密碼文件

配置示例如下:

a1.channels = c1
a1.channels.c1.type = file
a1.channels.c1.checkpointDir = /mnt/flume/checkpoint
a1.channels.c1.dataDirs = /mnt/flume/data

4.Spillable Memory Channel

event存放在內存和磁盤上,內存作爲主要存儲,當內存達到一定臨界點的時候會溢寫到磁盤上。其中和了memory channel和File channel的優缺點。
可配置屬性如下:

屬性 默認 說明
type 這裏爲SPILLABLEMEMORY
memoryCapacity 10000 內存隊列中可以存放的最大event個數
overflowCapacity 100000000 溢寫空間能存放的event的最大值。
如果不想使用溢寫,此值設爲0
overflowTimeout 3 當內存寫滿開始溢寫到磁盤上的等待時間,單位爲秒。
byteCapacityBufferPercentage 20 byteCapacity和預估的所有event大小之間的buffer。
byteCapacity   內存裏面允許存放的所有event的字節的最大值。
avgEventSize 500 預估event的平均字節。

配置示例如下:

a1.channels = c1
a1.channels.c1.type = SPILLABLEMEMORY
a1.channels.c1.memoryCapacity = 10000
a1.channels.c1.overflowCapacity = 1000000
a1.channels.c1.byteCapacity = 800000
a1.channels.c1.checkpointDir = /mnt/flume/checkpoint
a1.channels.c1.dataDirs = /mnt/flume/data
發佈了70 篇原創文章 · 獲贊 57 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章