Flume采集數(shù)據(jù)到HDFS配置參數(shù)詳細(xì)解析
配置解析:
channel:管道;一個(gè)sink只能有一個(gè)管道,但一根管道可以有多個(gè)sink
type : hdfs
path:寫入hdfs的路徑,需要包含文件系統(tǒng)標(biāo)識(shí),比如:hdfs://192.168.40.101:9000/flume/%Y-%m-%d/
(可以使用flume提供的日期及%{host}表達(dá)式)
filePrefix: 寫入hdfs的文件名前綴,可以使用flume提供的日期及%{host}表達(dá)式。默認(rèn)值為FlumeData
fileSuffix: 寫入hdfs的文件名后綴,比如:.lzo .log .txt;
inUsePrefix: 臨時(shí)文件的文件名前綴,hdfs sink會(huì)先往目標(biāo)目錄中寫臨時(shí)文件,再根據(jù)相關(guān)規(guī)則重命名成最終目標(biāo)文件;(一般不用管)
inUseSuffix: 臨時(shí)文件的文件名后綴。默認(rèn)值:.tmp (一般不用管)
rollInterval: hdfs sink間隔多長(zhǎng)將臨時(shí)文件滾動(dòng)成最終目標(biāo)文件,單位:秒;默認(rèn)值:30s
如果設(shè)置成0,則表示不根據(jù)時(shí)間來滾動(dòng)文件;
注:滾動(dòng)(roll)指的是,hdfs sink將臨時(shí)文件重命名成最終目標(biāo)文件,并新打開一個(gè)臨時(shí)文件來寫入數(shù)據(jù); !!!!!!
rollSize: 當(dāng)臨時(shí)文件達(dá)到該大小(單位:bytes)時(shí),滾動(dòng)成目標(biāo)文件;默認(rèn)值:1024byte
如果設(shè)置成0,則表示不根據(jù)臨時(shí)文件大小來滾動(dòng)文件;
rollCount: 當(dāng)events數(shù)據(jù)達(dá)到該數(shù)量時(shí)候,將臨時(shí)文件滾動(dòng)成目標(biāo)文件;默認(rèn)值:10
如果設(shè)置成0,則表示不根據(jù)events數(shù)據(jù)來滾動(dòng)文件;
idleTimeout: 默認(rèn)值:0
當(dāng)目前被打開的臨時(shí)文件在該參數(shù)指定的時(shí)間(秒)內(nèi),沒有任何數(shù)據(jù)寫入,
則將該臨時(shí)文件關(guān)閉并重命名成目標(biāo)文件;
batchSize: 每個(gè)批次刷新到HDFS上的events數(shù)量;默認(rèn)值:100
codeC: 文件壓縮格式,包括:gzip, bzip2, lzo, lzop, snappy
fileType: 文件格式,包括:SequenceFile, DataStream,CompressedStream;默認(rèn)值:SequenceFile
當(dāng)使用DataStream時(shí)候,文件不會(huì)被壓縮,不需要設(shè)置hdfs.codeC;
當(dāng)使用CompressedStream時(shí)候,必須設(shè)置一個(gè)正確的hdfs.codeC值;
maxOpenFiles: 最大允許打開的HDFS文件數(shù),當(dāng)打開的文件數(shù)達(dá)到該值,最早打開的文件將會(huì)被關(guān)閉;
默認(rèn)值:5000
minBlockReplicas: 寫入HDFS文件塊的最小副本數(shù)。默認(rèn)值:HDFS副本數(shù)(一般不修改,HDFS副本數(shù)默認(rèn)為3)
該參數(shù)會(huì)影響文件的滾動(dòng)配置,一般將該參數(shù)配置成1,才可以按照配置正確滾動(dòng)文件。
writeFormat: 寫sequence文件的格式。包含:Text, Writable(默認(rèn))
callTimeout: 執(zhí)行HDFS操作的超時(shí)時(shí)間(單位:毫秒);默認(rèn)值:10000 (10s)
threadsPoolSize: hdfs sink啟動(dòng)的操作HDFS的線程數(shù)。默認(rèn)值:10
rollTimerPoolSize:hdfs sink啟動(dòng)的根據(jù)時(shí)間滾動(dòng)文件的線程數(shù)。默認(rèn)值:1
kerberosPrincipal:HDFS安全認(rèn)證kerberos配置;
kerberosKeytab:HDFS安全認(rèn)證kerberos配置;
proxyUser:代理用戶
以下3個(gè)round相關(guān)參數(shù)設(shè)置用來控制多久生成一個(gè)文件
round:默認(rèn)值:false
是否啟用時(shí)間上的”舍棄”,這里的”舍棄”,類似于”四舍五入”,如果啟用,則會(huì)影響除了%t的其他所有時(shí)間表達(dá)式;
roundValue: 時(shí)間上進(jìn)行“舍棄”的值;默認(rèn)值:1
roundUnit: 時(shí)間上進(jìn)行”舍棄”的單位,包含:second,minute,hour;默認(rèn)值:seconds
對(duì)round 配置的例子:
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
當(dāng)時(shí)間為2022-10-16 17:38:59時(shí)候,hdfs.path依然會(huì)被解析為:
/flume/events/20221016/17:30/00
因?yàn)樵O(shè)置的是舍棄10分鐘內(nèi)的時(shí)間,因此,該目錄每10分鐘新生成一個(gè)。
timeZone: 時(shí)區(qū)。默認(rèn)值:Local Time
useLocalTimeStamp: 是否使用當(dāng)?shù)貢r(shí)間。默認(rèn)值:flase (一般要使用當(dāng)?shù)貢r(shí)間,即一般設(shè)置為true)
closeTries: hdfs sink關(guān)閉文件的嘗試次數(shù);默認(rèn)值:0
如果設(shè)置為1,當(dāng)一次關(guān)閉文件失敗后,hdfs sink將不會(huì)再次嘗試關(guān)閉文件,
這個(gè)未關(guān)閉的文件將會(huì)一直留在那,并且是打開狀態(tài)。
設(shè)置為0,當(dāng)一次關(guān)閉失敗后,hdfs sink會(huì)繼續(xù)嘗試下一次關(guān)閉,直到成功。
retryInterval: hdfs sink嘗試關(guān)閉文件的時(shí)間間隔,如果設(shè)置為0,表示不嘗試,相當(dāng)于于將hdfs.closeTries設(shè)置成1;
默認(rèn)值:180s
serializer: 序列化類型。其他還有:avro_event或者是實(shí)現(xiàn)了EventSerializer.Builder的類名。默認(rèn)值:TEXT
常用配置(從flume_sink 到 flume_source):
# Name the components on this agent
a2.sources = r1
a2.sinks = k1
a2.channels = c1
# Describe/configure the source
# source 端的 avro 是一個(gè)數(shù)據(jù)接收服務(wù) (avro一個(gè)輕量級(jí)的RPC通信)
a2.sources.r1.type = avro
a2.sources.r1.bind =192.168.40.101 ? (綁定的主機(jī))
a2.sources.r1.port = 4141 ? (端口)
# Describe the sink
a2.sinks.k1.type = hdfs
a2.sinks.k1.hdfs.path = hdfs://192.168.40.101:9000/flume/%Y%m%d/%H
#上傳文件的前綴
#a2.sinks.k1.hdfs.filePrefix =
以下3個(gè)round相關(guān)參數(shù)設(shè)置用來控制多久生成一個(gè)文件
#是否按照時(shí)間滾動(dòng)文件夾
a2.sinks.k1.hdfs.round = true
#多少時(shí)間單位創(chuàng)建一個(gè)新的文件夾
a2.sinks.k1.hdfs.roundValue = 1
#重新定義時(shí)間單位
a2.sinks.k1.hdfs.roundUnit = hour
#是否使用本地時(shí)間戳
a2.sinks.k1.hdfs.useLocalTimeStamp = true
#積攢多少個(gè) Event 才 flush 到 HDFS 一次
a2.sinks.k1.hdfs.batchSize = 100
#設(shè)置文件類型,可支持壓縮
a2.sinks.k1.hdfs.fileType = DataStream
#多久生成一個(gè)新的文件
a2.sinks.k1.hdfs.rollInterval = 30
#設(shè)置每個(gè)文件的滾動(dòng)大小大概是 128M
a2.sinks.k1.hdfs.rollSize = 134217700
#文件的滾動(dòng)與 Event 數(shù)量無關(guān)
a2.sinks.k1.hdfs.rollCount = 0
這三個(gè)條件任意一個(gè)達(dá)到都會(huì)生成一個(gè)新的文件
# Describe the channel
a2.channels.c1.type = memory (內(nèi)存)
a2.channels.c1.capacity = 1000
a2.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
a2.sources.r1.channels = c1
a2.sinks.k1.channel = c1文章來源:http://www.zghlxwxcb.cn/news/detail-432742.html
參考:https://blog.csdn.net/weixin_34343308/article/details/94567014文章來源地址http://www.zghlxwxcb.cn/news/detail-432742.html
到了這里,關(guān)于Flume采集數(shù)據(jù)到HDFS配置參數(shù)詳細(xì)解析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!