#Hadoop# #大資料# #日誌分析# #hadoop#
1 概述flume是由cloudera軟體公司產出的可分散式日誌收集系統,後與2009年被捐贈了apache軟體基金會,為hadoop相關元件之一。尤其近幾年隨著flume的不斷被完善以及升級版本的逐一推出,特別是flume-ng;同時flume內部的各種元件不斷豐富,使用者在開發的過程中使用的便利性得到很大的改善,現已成為apache top專案之一.
1.1 功能、作用高可用的,高可靠的,分散式的海量日誌採集、聚合和傳輸的系統。可以監聽埠、檔案、程式等輸出或變化,將結果輸出到指定目標。
1、 Flume支援在日誌系統中定製各類資料傳送方,用於收集資料。
Flume提供了從console(控制檯)、RPC(Thrift-RPC)、text(檔案)、tail(UNIX tail)、syslog(syslog日誌系統),支援TCP和UDP等2種模式),exec(命令執行)等資料來源上收集資料的能力。
2、 Flume提供對資料進行簡單處理,並寫到各種資料接受方(可定製)的能力 。
3、 Flume可以將應用產生的資料儲存到任何集中儲存器中,比如HDFS,HBase
4、 當收集資料的速度超過將寫入資料的時候,也就是當收集資訊遇到峰值時,這時候收集的資訊非常大,甚至超過了系統的寫入資料能力,這時候,Flume會在資料生產者和資料收容器間做出調整,保證其能夠在兩者之間提供平穩的資料.
5、 提供上下文路由特徵
6、 Flume的管道是基於事務,保證了資料在傳送和接收時的一致性.
7、 Flume是可靠的,容錯性高的,可升級的,易管理的,並且可定製的。
1.2 架構agent本身是一個java程序,執行在日誌收集節點—所謂日誌收集節點就是伺服器節點。
agent裡面包含3個核心的元件:source—->channel—–>sink,類似生產者、倉庫、消費者的架構。
source:source元件是專門用來收集資料的,可以處理各種型別、各種格式的日誌資料,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy、自定義。
channel:source元件把資料收集來以後,臨時存放在channel中,即channel元件在agent中是專門用來存放臨時資料的——對採集到的資料進行簡單的快取,可以存放在memory、jdbc、file等等。
sink:sink元件是用於把資料傳送到目的地的元件,目的地包括hdfs、logger、avro、thrift、ipc、file、null、hbase、solr、自定義。
agent對外有兩個進行互動的地方,一個是接受資料的輸入——source,一個是資料的輸出sink,sink負責將資料傳送到外部指定的目的地。source接收到資料之後,將資料傳送給channel,chanel作為一個數據緩衝區會臨時存放這些資料,隨後sink會將channel中的資料傳送到指定的地方—-例如HDFS等,注意:只有在sink將channel中的資料成功傳送出去之後,channel才會將臨時資料進行刪除,這種機制保證了資料傳輸的可靠性與安全性。
2 環境設定2.1 直接從docker啟動docker pull sf2gis/hadoop:sqoop01
docker run -p 8122:22 -p 8188:8088 -p 50170:50070 -p 50175:50075 -p 8120:8020 -p 19888:19888 -p 60110:60010 -p 60130:60030 -it --name sqoop01 --privileged -h hadoop-senior01.test.com --network=mynet --ip 172.18.0.2 sf2gis/hadoop: sqoop01
注意:需要HDFS支援。
2.2 啟動驗證bin/flume-ng version
下一篇將介紹Flume的應用:監聽埠、監聽日誌檔案