【分散式計算】分散式日誌匯入工具-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]
相關文章
- 使用Logstash工具匯入sqlserver資料到elasticSearch及elk分散式日誌中心SQLServerElasticsearch分散式
- 分散式日誌元件GrayLog入門分散式元件
- Flume+Kafka收集Docker容器內分散式日誌應用實踐KafkaDocker分散式
- [分散式]分散式計算系統淺析分散式
- 日誌: 分散式系統的核心分散式
- 分散式雲端計算分散式
- 分散式 | DBLE 的 general 日誌實現分散式
- 分散式計算與Map Reduce分散式
- 分散式系統監控(五)- 日誌分析分散式
- 使用docker搭建ELK分散式日誌同步方案Docker分散式
- 一種分散式預寫日誌系統分散式
- Elasticsearch+Fluentd+Kafka搭建分散式日誌系ElasticsearchKafka分散式
- 比較Apache Kafka與各大雲端計算的分散式日誌技術 - scottlogicApacheKafka分散式
- SpringBoot接入輕量級分散式日誌框架(GrayLog)Spring Boot分散式框架
- [分散式][分散式鎖]淺談分散式鎖分散式
- 高效能、分散式、實時日誌服務 - TLog分散式
- 分散式日誌儲存架構程式碼實踐分散式架構
- [分散式]Netty入門分散式Netty
- 分散式資料庫 ZNBase 的分散式計劃生成分散式資料庫
- JAVA 分散式 - 分散式介紹Java分散式
- Git分散式版本控制工具Git分散式
- 詳解 Apache SkyWalking OAP 的分散式計算Apache分散式
- 分散式計算的八個謬誤 - Ably分散式
- .NET Core 中的日誌與分散式鏈路追蹤分散式
- 日誌架構演進:從集中式到分散式的Kubernetes日誌策略架構分散式
- 請問你知道分散式系統設計模式的分割日誌思想麼?分散式設計模式
- 請問你知道分散式系統的預寫日誌設計模式麼?分散式設計模式
- java分散式(java入門)Java分散式
- 分散式框架Dubbo入門分散式框架
- 分散式之抉擇分散式鎖分散式
- 分散式事務和分散式hash分散式
- 大資料分散式計算系統 Spark 入門核心之 RDD大資料分散式Spark
- 分散式分散式
- SpringBoot開發案例構建分散式日誌處理系統Spring Boot分散式
- .Net Core 整合ExceptionLess分散式日誌框架之本地化部署Exception分散式框架
- 分散式日誌傳輸系統Databus(一)--系統介紹分散式
- Hadoop 三劍客之 —— 分散式計算框架 MapReduceHadoop分散式框架
- 關於分散式計算的一些概念分散式
- 分散式系統中的自主自治計算 - pathelland分散式