日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【分布式计算】分布式日志导入工具-Flume

發布時間:2025/4/5 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【分布式计算】分布式日志导入工具-Flume 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

Flume是Apache贊助的一個分布式日志管理系統,主要功能就是把集群中每個worker產生的日志log,collect到特定的地點。

為什么要寫這篇文章呢,因為現在搜索出來的文獻大多是老版本的flume,在flume1.X版本后,也就是flume-ng版本跟之前出現了很大的改動,市面上的很多文檔都已經過時了,大家看的時候一定要注意這點,稍后我會提供幾個比較新的,有參考價值的文章。

flume的優勢有一下幾個方面:
* JAVA實現,跨平臺性能好
* 有一定的容錯機制,和防止數據保障的機制
* 提供了很多的agent
* 方便開發,有developer選項

功能


單機版是如上形式的,有三個部件組成,分別是source,channel,sink。在使用的時候,只要安裝flume,然后配置好對應的conf文件,就可以了。
source:主要是配置日志文件的來源(提供多種agent,支持多種數據源)
channel:類似于一個隊列,暫存收到的日志數據
sink:將日志文件輸出(有很多方式,可以投影到屏幕上,也可以讀到數據庫或者指定的文件中)

# Name the components on this agent a1.sources = r1 a1.sinks = k1 a1.channels = c1# Describe/configure the source a1.sources.r1.type = avro #avro是flume的一種type,讀取本地log文件 a1.sources.r1.bind = localhost #這個和下面的port對應于avro-client的端口 a1.sources.r1.port = 44444# Describe the sink a1.sinks.k1.type = com.waqu.sink.OdpsSink #對應代碼里的包名 a1.sinks.k1.sink.batchSize = 20 #需要大于10 a1.sinks.k1.sink.table = ******* #自己建的hub表以及key-id信息 a1.sinks.k1.sink.project =******* a1.sinks.k1.sink.odps.access_id =********** a1.sinks.k1.sink.odps.access_key =********** a1.sinks.k1.sink.odps.end_point =*********** a1.sinks.k1.sink.sink.tunnel.end_point =*******# Use a channel which buffers events in memory a1.channels.c1.type = memory a1.channels.c1.checkpointDir=1000 a1.channels.c1.dataDirs = 100# Bind the source and sink to the channel a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1

下面就針對這三點,詳細介紹下

Flume workflow

agent支持多種輸入的source,幾個比較常用的type。
*HTTP,可以監聽http端口,拿log
*netcat,可以監聽類似于telnet的端口數據
*Spooling ,監聽某個文件目錄下新增的文件
*Avro Source,發送指定文件,這個不支持實時監控,也就是說比方說我們監控a.log文件,當a.log改變了,我們無法拿到改變的日志
*Exec Source,這個可以實時監控某個文件

重點說下Exec Source,這個功能非常酷,它允許在agent上執行shell命令,這樣我們就能用tail命令來監控某個文件新增的內容。

tail -f log.txt

Develop

*首先是利用官方的sdk包,開發打包jar文件
*把jar放到flume的lib文件目錄下
*配置conf文件
*啟動agent:flume-ng agent --conf conf --conf-file ./conf/my.conf -name a1 -Dflume.root.logger=INFO,console
*啟動數據源:flume-ng avro-client -H localhost -p 44444 -F /home/garvin/log.txt -Dflume.root.logger=INFO,console

推薦幾篇有用的東西:
一個代碼實現的例子:https://github.com/waqulianjie/odps_sink
開發者document:http://flume.apache.org/FlumeUserGuide.html
一個比較完整的介紹:http://www.aboutyun.com/thread-8917-1-1.html

本文來自博客 “李博Garvin“
轉載請標明出處:http://blog.csdn.net/buptgshengod]

總結

以上是生活随笔為你收集整理的【分布式计算】分布式日志导入工具-Flume的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。