1. 程式人生 > >Flume中hdfs sink配置引數詳解

Flume中hdfs sink配置引數詳解

  • type

    hdfs

  • path

    寫入hdfs的路徑,需要包含檔案系統標識,比如:hdfs://namenode/flume/webdata/

可以使用flume提供的日期及%{host}表示式。

  • filePrefix

    預設值:FlumeData
    寫入hdfs的檔名字首,可以使用flume提供的日期及%{host}表示式。

  • fileSuffix

    寫入hdfs的檔名字尾,比如:.lzo .log等。

  • inUsePrefix

    臨時檔案的檔名字首,hdfs sink會先往目標目錄中寫臨時檔案,再根據相關規則重新命名成最終目標檔案;

  • inUseSuffix

    預設值:.tmp
    臨時檔案的檔名字尾。

  • rollInterval

    預設值:30
    hdfs sink間隔多長將臨時檔案滾動成最終目標檔案,單位:秒;
    如果設定成0,則表示不根據時間來滾動檔案;
    注:滾動(roll)指的是,hdfs sink將臨時檔案重新命名成最終目標檔案,並新開啟一個臨時檔案來寫入資料;

  • rollSize

    預設值:1024
    當臨時檔案達到該大小(單位:bytes)時,滾動成目標檔案;
    如果設定成0,則表示不根據臨時檔案大小來滾動檔案;

  • rollCount

    預設值:10
    當events資料達到該數量時候,將臨時檔案滾動成目標檔案;
    如果設定成0,則表示不根據events資料來滾動檔案;

  • idleTimeout

    預設值:0
    當目前被開啟的臨時檔案在該引數指定的時間(秒)內,沒有任何資料寫入,則將該臨時檔案關閉並重命名成目標檔案;

  • batchSize

    預設值:100
    每個批次重新整理到HDFS上的events數量;

  • codeC

    檔案壓縮格式,包括:gzip, bzip2, lzo, lzop, snappy

  • fileType

    預設值:SequenceFile
    檔案格式,包括:SequenceFile,DataStream,CompressedStream
    當使用DataStream時候,檔案不會被壓縮,不需要設定hdfs.codeC;
    當使用CompressedStream時候,必須設定一個正確的hdfs.codeC值;

  • maxOpenFiles

    預設值:5000
    最大允許開啟的HDFS檔案數,當開啟的檔案數達到該值,最早開啟的檔案將會被關閉;

  • minBlockReplicas

    預設值:HDFS副本數
    寫入HDFS檔案塊的最小副本數。
    該引數會影響檔案的滾動配置,一般將該引數配置成1,才可以按照配置正確滾動檔案。
    待研究。

  • writeFormat

    寫sequence檔案的格式。包含:Text, Writable(預設)

  • callTimeout

    預設值:10000
    執行HDFS操作的超時時間(單位:毫秒);

  • threadsPoolSize

    預設值:10
    hdfs sink啟動的操作HDFS的執行緒數。

  • rollTimerPoolSize

    預設值:1
    hdfs sink啟動的根據時間滾動檔案的執行緒數。

  • kerberosPrincipal

    HDFS安全認證kerberos配置;

  • kerberosKeytab

    HDFS安全認證kerberos配置;

  • proxyUser

    代理使用者

  • round

    預設值:false
    是否啟用時間上的”捨棄”,這裡的”捨棄”,類似於”四捨五入”,後面再介紹。如果啟用,則會影響除了%t的其他所有時間表達式;

  • roundValue

    預設值:1
    時間上進行“捨棄”的值;

  • roundUnit

    預設值:seconds
    時間上進行”捨棄”的單位,包含:second,minute,hour

    示例:
    a1.sinks.k1.hdfs.path = /flume/events/%y-%m-%d/%H%M/%S
    a1.sinks.k1.hdfs.round = true
    a1.sinks.k1.hdfs.roundValue = 10
    a1.sinks.k1.hdfs.roundUnit = minute
    當時間為2015-10-16 17:38:59時候,hdfs.path依然會被解析為:
    /flume/events/20151016/17:30/00
    因為設定的是捨棄10分鐘內的時間,因此,該目錄每10分鐘新生成一個。

  • timeZone

    預設值:Local Time
    時區。

  • useLocalTimeStamp

    預設值:flase
    是否使用當地時間。

  • closeTries

    預設值:0
    hdfs sink關閉檔案的嘗試次數;
    如果設定為1,當一次關閉檔案失敗後,hdfs sink將不會再次嘗試關閉檔案,這個未關閉的檔案將會一直留在那,並且是開啟狀態。
    設定為0,當一次關閉失敗後,hdfs sink會繼續嘗試下一次關閉,直到成功。

  • retryInterval

    預設值:180(秒)
    hdfs sink嘗試關閉檔案的時間間隔,如果設定為0,表示不嘗試,相當於於將hdfs.closeTries設定成1.

  • serializer

    預設值:TEXT
    序列化型別。其他還有:avro_event或者是實現了EventSerializer.Builder的類名。

下面的配置中,在HDFS的/tmp/lxw1234/目錄下,每天生成一個格式為20151016的目錄,

目標檔案每5分鐘生成一個,檔名格式為:log_20151016_13.1444973768543.lzo

目標檔案採用lzo壓縮。

agent_lxw1234.sinks.sink1.type = hdfs
agent_lxw1234.sinks.sink1.hdfs.path = hdfs://cdh5/tmp/lxw1234/%Y%m%d
agent_lxw1234.sinks.sink1.hdfs.filePrefix = log_%Y%m%d_%H
agent_lxw1234.sinks.sink1.hdfs.fileSuffix = .lzo
agent_lxw1234.sinks.sink1.hdfs.useLocalTimeStamp = true
agent_lxw1234.sinks.sink1.hdfs.writeFormat = Text
agent_lxw1234.sinks.sink1.hdfs.fileType = CompressedStream
agent_lxw1234.sinks.sink1.hdfs.rollCount = 0
agent_lxw1234.sinks.sink1.hdfs.rollSize = 0
agent_lxw1234.sinks.sink1.hdfs.rollInterval = 600
agent_lxw1234.sinks.sink1.hdfs.codeC = lzop
agent_lxw1234.sinks.sink1.hdfs.batchSize = 100
agent_lxw1234.sinks.sink1.hdfs.threadsPoolSize = 10
agent_lxw1234.sinks.sink1.hdfs.idleTimeout = 0
agent_lxw1234.sinks.sink1.hdfs.minBlockReplicas = 1