Flume

來源:互聯網
上載者:User

標籤:java_home   工作   ima   contex   xmx   記錄   ado   ecif   fan   

一、什麼是Flume?
  flume 作為 cloudera 開發的即時日誌收集系統,受到了業界的認可與廣泛應用。Flume 初始的發行版本目前被統稱為 Flume OG(original generation),屬於 cloudera。但隨著 FLume 功能的擴充,Flume OG 代碼工程臃腫、核心組件設計不合理、核心配置不標準等缺點暴露出來,尤其是在 Flume OG 的最後一個發行版本 0.94.0 中,日誌傳輸不穩定的現象尤為嚴重,為瞭解決這些問題,2011 年 10 月 22 號,cloudera 完成了 Flume-728,對 Flume 進行了裡程碑式的改動:重構核心組件、核心配置以及代碼架構,重構後的版本統稱為 Flume NG(next generation);改動的另一原因是將 Flume 納入 apache 旗下,cloudera Flume 改名為 Apache Flume。

        flume的特點:
  flume是一個分布式、可靠、和高可用的海量日誌採集、彙總和傳輸的系統。支援在日誌系統中定製各類資料發送方,用於收集資料;同時,Flume提供對資料進行簡單處理,並寫到各種資料接受方(比如文本、HDFS、Hbase等)的能力 。
  flume的資料流由事件(Event)貫穿始終。事件是Flume的基本資料單位,它攜帶日誌資料(位元組數組形式)並且攜帶有頭資訊,這些Event由Agent外部的Source產生,當Source捕獲事件後會進行特定的格式化,然後Source會把事件推入(單個或多個)Channel中。你可以把Channel看作是一個緩衝區,它將儲存事件直到Sink處理完該事件。Sink負責持久化日誌或者把事件推向另一個Source。

        flume的可靠性 
  當節點出現故障時,日誌能夠被傳送到其他節點上而不會丟失。Flume提供了三種層級的可靠性保障,從強到弱依次分別為:end-to-end(收到資料agent首先將event寫到磁碟上,當資料傳送成功後,再刪除;如果資料發送失敗,可以重新發送。),Store on failure(這也是scribe採用的策略,當資料接收方crash時,將資料寫到本地,待恢複後,繼續發送),Besteffort(資料發送到接收方後,不會進行確認)。

flume的一些核心概念:

    • Agent        使用JVM 運行Flume。每台機器運行一個agent,但是可以在一個agent中包含多個sources和sinks。
    • Client        生產資料,運行在一個獨立的線程。
    • Source        從Client收集資料,傳遞給Channel。
    • Sink        從Channel收集資料,運行在一個獨立線程。
    • Channel        串連 sources 和 sinks ,這個有點像一個隊列。
    • Events        可以是日誌記錄、 avro 對象等。

 

Flume以agent為最小的獨立運行單位。一個agent就是一個JVM。單agent由Source、Sink和Channel三大組件構成,如:

 

值得注意的是,Flume提供了大量內建的Source、Channel和Sink類型。不同類型的Source,Channel和Sink可以自由組合。組合方式基於使用者佈建的設定檔,非常靈活。比如:Channel可以把事件暫存在記憶體裡,也可以持久化到本地硬碟上。Sink可以把日誌寫入HDFS, HBase,甚至是另外一個Source等等。Flume支援使用者建立多級流,也就是說,多個agent可以協同工作,並且支援Fan-in、Fan-out、Contextual Routing、Backup Routes,這也正是NB之處。如所示:

二、flume的官方網站在哪裡?
  http://flume.apache.org/

三、在哪裡下載?
  http://www.apache.org/dyn/closer.cgi/flume/1.5.0/apache-flume-1.5.0-bin.tar.gz

四、如何安裝?
  1)將下載的flume包,解壓到/home/hadoop目錄中,你就已經完成了50%:)簡單吧
  2)修改 flume-env.sh 設定檔,主要是JAVA_HOME變數設定

 1 [[email protected] conf]# cp flume-env.sh.template flume-env.sh 2 [[email protected] conf]# vim !$ 3 vim flume-env.sh 4 # Licensed to the Apache Software Foundation (ASF) under one 5 # or more contributor license agreements.  See the NOTICE file 6 # distributed with this work for additional information 7 # regarding copyright ownership.  The ASF licenses this file 8 # to you under the Apache License, Version 2.0 (the 9 # "License"); you may not use this file except in compliance10 # with the License.  You may obtain a copy of the License at11 #12 #     http://www.apache.org/licenses/LICENSE-2.013 #14 # Unless required by applicable law or agreed to in writing, software15 # distributed under the License is distributed on an "AS IS" BASIS,16 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.17 # See the License for the specific language governing permissions and18 # limitations under the License.19 20 # If this file is placed at FLUME_CONF_DIR/flume-env.sh, it will be sourced21 # during Flume startup.22 23 # Enviroment variables can be set here.24 25  export JAVA_HOME=/usr/local/src/jdk1.7.0_4526 27 # Give Flume more memory and pre-allocate, enable remote monitoring via JMX28 # export JAVA_OPTS="-Xms100m -Xmx2000m -Dcom.sun.management.jmxremote"29 30 # Note that the Flume conf directory is always included in the classpath.31 #FLUME_CLASSPATH=""

          3)驗證是否安裝成功

1 [[email protected] conf]# /usr/local/src/apache-flume-1.6.0-bin/bin/flume-ng version2 Flume 1.6.03 Source code repository: https://git-wip-us.apache.org/repos/asf/flume.git4 Revision: 2561a23240a71ba20bf288c7c2cda88f443c20805 Compiled by hshreedharan on Mon May 11 11:15:44 PDT 20156 From source with checksum b29e416802ce9ece3269d34233baf43f

         出現上面的資訊,表示安裝成功了

 

\

安裝flume:

 

Flume

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

Tags Index: