1. 程式人生 > >10044---基於Flume的美團日誌收集系統(一)架構和設計

10044---基於Flume的美團日誌收集系統(一)架構和設計

原文 問題導讀: 1.Flume-NG與Scribe對比,Flume-NG的優勢在什麼地方?
2.架構設計考慮需要考慮什麼問題?
3.Agent宕機該如何解決?
4.Collector宕機是否會有影響?

5.Flume-NG可靠性(reliability)方面做了哪些措施?

    美團的日誌收集系統負責美團的所有業務日誌的收集,並分別給Hadoop平臺提供離線資料和Storm平臺提供實時資料流。美團的日誌收集系統基於Flume設計和搭建而成。

《基於Flume的美團日誌收集系統》將分兩部分給讀者呈現美團日誌收集系統的架構設計和實戰經驗。 第一部分架構和設計,將主要著眼於日誌收集系統整體的架構設計,以及為什麼要做這樣的設計。 第二部分改進和優化,將主要著眼於實際部署和使用過程中遇到的問題,對Flume做的功能修改和優化等。 1 日誌收集系統簡介
日誌收集是大資料的基石。 許多公司的業務平臺每天都會產生大量的日誌資料。收集業務日誌資料,供離線和線上的分析系統使用,正是日誌收集系統的要做的事情。高可用性,高可靠性和可擴充套件性是日誌收集系統所具有的基本特徵。 目前常用的開源日誌收集系統有Flume,Scribe等。Flume是Cloudera提供的一個高可用的,高可靠的,分散式的海量日誌採集、聚合和傳輸的系統,目前已經是Apache的一個子專案。Scribe是Facebook開源的日誌收集系統,它為日誌的分散式收集,統一處理提供一個可擴充套件的,高容錯的簡單方案。 2 常用的開源日誌收集系統對比 下面將對常見的開源日誌收集系統Flume和Scribe的各方面進行對比。對比中Flume將主要採用Apache下的Flume-NG為參考物件。同時,我們將常用的日誌收集系統分為三層(Agent層,Collector層和Store層)來進行對比。
對比項
Flume-NG Scribe
使用語言 Java c/c++
容錯性 Agent和Collector間,Collector和Store間都有容錯性,且提供三種級別的可靠性保證; Agent和Collector間, Collector和Store之間有容錯性;
負載均衡 Agent和Collector間,Collector和Store間有LoadBalance和Failover兩種模式
可擴充套件性
Agent豐富程度 提供豐富的Agent,包括avro/thrift socket, text, tail等 主要是thrift埠
Store豐富程度
可以直接寫hdfs, text, console, tcp;寫hdfs時支援對text和sequence的壓縮; 提供buffer, network, file(hdfs, text)等
程式碼結構 系統框架好,模組分明,易於開發 程式碼簡單
3 美團日誌收集系統架構 美團的日誌收集系統負責美團的所有業務日誌的收集,並分別給Hadoop平臺提供離線資料和Storm平臺提供實時資料流。美團的日誌收集系統基於Flume設計和搭建而成。目前每天收集和處理約T級別的日誌資料。 下圖是美團的日誌收集系統的整體框架圖
a. 整個系統分為三層:Agent層,Collector層和Store層。其中Agent層每個機器部署一個程序,負責對單機的日誌收集工作;Collector層部署在中心伺服器上,負責接收Agent層傳送的日誌,並且將日誌根據路由規則寫到相應的Store層中;Store層負責提供永久或者臨時的日誌儲存服務,或者將日誌流導向其它伺服器。
b. Agent到Collector使用LoadBalance策略,將所有的日誌均衡地發到所有的Collector上,達到負載均衡的目標,同時並處理單個Collector失效的問題。