Flume学习_接收器
2019獨角獸企業重金招聘Python工程師標準>>>
1.Flume框架支持很多類型的接收器:HDFS接收器,HBase接收器,IRC接收器,ElasticSearch接收器,MongoDB接收器,Cassandra接收器,RabbitMQ接收器以及其他數據存儲接收器等。
2.HDFS接收器:持續打開HDFS中的文件,然后以流的方式將數據寫入其中,并且在某個時間點關閉該文件再打開新的文件。
3.如果需要使用HDFS接收器,需要設置如下參數:
agent.sinks.k1.type = hdfs? ? ? ? ? --為名為agent的代理定義了一個名為k1的HDFS接收器
agent.sinks.k1.hdfs.path = /path/in/hdfs? ?--表示將數據寫到該路徑下
| 類型 | 路徑 |
| 絕對路徑 | /usr/local/flume/mydata |
| 帶有服務器名的絕對路徑 | hdfs://namenode/users/flume/data |
| 相對路徑 | mydata |
agent.sinks.k1.channel = c1
4.路徑與文件名
? ? 1.每次Flume在HDFS中的hdfs.path開啟一個新文件寫入數據時,該文件名都由hdfs.filePrefix,一個點符號,文件開啟的時間戳以及由hdfs.fileSuffix屬性指定的一個文件后綴構成,例如:
????agent.sinks.k1.hdfs.path = /logs/apache/access
????agent.sinks.k1.hdfs.filePrefix = access
????agent.sinks.k1.hdfs.fileSuffix = .log
????上面的配置中,會生成一個類似于/logs/apache/access/accesss.1362945258.log文件,時間久了,hdfs.path目錄將會變滿,需要在路徑中添加某種時間元素將文件劃為若干子目錄。
????agent.sinks.k1.hdfs.path = /logs/apache/access/%Y/%m/%D/%H
????2.Flume可以一次寫入多個文件,屬性hdfs.maxOpenFiles設定了一次可以寫多少的上限,默認值為5000,如果超過了這個限制,處于打開狀態的最老的文件將會被關閉。
? ? 3.為了避免在文件關閉前使用臨時文件,請將后綴設為空(而不是默認的.tmp),將前綴設為一個點或是一個下劃線,例如:
????????agent.sinks.k1.hdfs.inUsePrefix=_
????????agent.sinks.k1.hdfs.inUseSuffix=
5.文件轉儲
? ?1.?默認情況下,Flume會每隔30秒,10個事件或是1024個字節來轉儲寫入的文件。
????? ? agent.sinks.k1.hdfs.rollInterval = 60
? ? ? ? agent.sinks.k1.hdfs.rollCount = 0
? ? ? ?agent.sinks.k1.hdfs.rollSize = 0
? ?2.hdfs.batchSize:它指的是在每個事務中接收器從通道所讀取的事件數量。如果通道中有大量的數據,那么將該參數設為大于100(默認值)會提升性能,這會降低每個事件的事務代價。
6.壓縮編解碼器
? ? agent.sinks.k1.hdfs.codeC = gzip
7.事件序列化器:指的是Flume事件轉換為另一種格式以進行輸出的機制。它在功能上類似于log4j的Layout類。
? ? 1.Apache Avro項目
? ? ? ?agent.sinks.k1.serializer = avro_event
? ? ? agent.sinks.k1.serializer.compressionCodec = snappy
????? agent.sinks.k1.serializer.syncIntervalBytes = 4194304
? ? ? agent.sinks.k1.hdfs.fileSuffix = .avro
? ?備注:1.不能設置Avro文件的hdfs.codeC屬性。
8.接收器組:為了在數據處理管道中消除單點失敗問題,Flume提供了通過負載均衡或是故障恢復機制將事件發送到不同的接收器的能力。
? ? 1.接收器組用于創建邏輯接收器分組,該分組的行為是由接收處理器來控制的,它決定了事件的路由方式。
? ? ? agent.sinkgroups = sg1
? ? ? agent.sinkgroups.sg1.sinks = k1,k2
? ? 2.負載均衡
? ? ? 如果將processor.type設置為load_balance,那就會使用循環選擇,除非指定了processor.selector屬性。你可以將該屬性設為round_robin或是random.
? ? ? ?agent.sinkgroups.sg1.sinks = k1,k2,k3
? ? ? ?agent.sinkgroups.sg1.processor.type = failover
? ? ? ?agent.sinkgroups.sg1.processor.priority.k1 =10
????? ?agent.sinkgroups.sg1.processor.priority.k2 = 20
? ? ? ?agent.sinkgroups.sg1.processor.priority.k3 =20
? ? 1.優先級數字低的表示會優先使用,數字相同的則會隨機使用。
? ? ?2.processor.maxPenality為組中不可用的接收器設定了一個指數退避上限。首次失敗后要間隔一秒鐘才可以再次使用。之后的失敗都會將等待時間加倍,直到到達processor.maxPenality值為止。
?
?
轉載于:https://my.oschina.net/pengbina/blog/2874632
總結
以上是生活随笔為你收集整理的Flume学习_接收器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 绝地求生pc版怎么下载
- 下一篇: notepad设置中文