共計 1316 個字符,預計需要花費 4 分鐘才能閱讀完成。
本篇內容主要講解“Flume 應用場景及用法有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“Flume 應用場景及用法有哪些”吧!
Flume 簡介
Flume 是一個分布式的、高可用的海量日志采集系統。它支持對日志數據的發送方、接收方進行定義,可將多種來源的日志數據寫到指定的接收方,如:文本、HDFS、Hbase 等。
我認為 Flume 最讓我稱贊的就是,可以在不干涉已有系統運行的情況下,無侵入地對采集到該系統的日志信息。
Flume 的數據流由 event(事件)貫穿始終,event 是 Flume 的基本數據單位,它攜帶日志數據(字節數組形式)和頭信息,這些 event 由 Agent 外部的 Source 生成。當 Source 捕獲到事先設定的事件(這里的事件,是指廣義上的事件),就會生成 event 并推送到單個或多個 Channel 中。你可以把 Channel 看作是一個緩沖區,它保存 event 直到 Sink 對其處理完畢。Sink 負責處理 event,它對日志進行持久化或把 event 轉給另一個 Source。
Flume 以 agent 為最小的獨立運行單位,每臺機器運行一個 agent,一個 agent 由 Source、Sink 和 Channel 三大組件構成,如下圖:
Client 生產數據,運行在一個獨立的線程,比如我們的應用系統。
Source 從 Client 收集數據,傳遞給 Channel。
Sink 從 Channel 收集數據,運行在一個獨立線程。
Channel 連接 sources 和 sinks,這個有點像一個隊列。
Events 可以是日志記錄、avro 對象等。
一個 agent 中包含多個 sources 和 sinks:
應用場景及用法
sources.type = netcat
Flume 可以監聽到某臺計算機(Client)接收到其它計算機發來的 netcat、telnet 消息,然后將這些消息傳送到指定的地方,如 hdfs、HBase、Kafka 等。
sources.type = exec
Flume 可以監聽到某臺計算機(Client)某個指令的執行,然后把指令執行產生的輸出信息發送到指定的地方,如 hdfs、HBase、Kafka。如設定:
sources.command = tail -F /app/xxx.log
那么每當有 10 條新的日志產生后,Flume 就把這 10 條新日志傳送到指定的地方,如 hdfs、HBase、Kafka 等。
sources.type = spooldir
Flume 可以監聽到某臺計算機(Client)上某個目錄文件的變化,當有新的日志文件產生時,Flume 就把這個日志文件的內容傳送到指定的地方,如 hdfs、HBase、Kafka 等。
sources.type = http
sources.type = syslogtcp
Flume 可以監聽到某臺計算機(Client)TCP 的端口,把從端口接收到的消息傳送到指定的地方,如 hdfs、HBase、Kafka 等。
到此,相信大家對“Flume 應用場景及用法有哪些”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!