「大數據篇」實時日誌抽取-Flume基礎篇

概述

現如今,系統應用日誌不僅可以幫助你解決網站的問題,更可以提供關於業務、客戶以及用戶行為分析的有價值的信息。將日誌數據儲存至hdfs中並不是什麼難事,只需打包然後一個put命令就可以了,但是這樣做的弊端顯而易見,耗時低效而且無法實時處理。所以我們需要的是一個能夠處理流式日誌數據的解決方案,那麼,我們的Flume就登場了。


基本概念以及組件

Flume的基本概念以及優勢請自行百度。下面介紹Flume中的基本定義。

event(事件)】:Flume傳輸的基本數據負載。由大於等於0個的頭(類似http頭)與體(字節數組)組成;

source(源)】:數據的輸入;

sink(接收器)】:數據的輸出;

channel(管道)】:提供了源與接收器之間的膠水;

agent(代理)】:源、接收器、管道的集合;

攔截器】:處於源與接收器之間,類似於Spring的AOP;

。。。。。。等等

安裝與配置

前提條件:需要安裝jdk1.7版本以上。將下載好的包解壓至指定目錄。

「大數據篇」實時日誌抽取-Flume基礎篇

拷貝conf下文件

「大數據篇」實時日誌抽取-Flume基礎篇

「大數據篇」實時日誌抽取-Flume基礎篇

從HelloWorld開始

拷貝安裝目錄conf下flume-conf.properties.template至指定位置,在這裡我把他命名為netcat.conf。

「大數據篇」實時日誌抽取-Flume基礎篇

編輯netcat.conf寫入代理的配置。

agent.sources = s1

agent.channels = c1

agent.sinks = k1

agent.sources.s1.type=netcat //表示打開一個socket監聽事件

agent.sources.s1.channels=c1

agent.sources.s1.bind=0.0.0.0 //表示監聽任何地址的java預約定

agent.sources.s1.port=12345

agent.channels.c1.type=memory

agent.sinks.k1.type=logger //會使用log4j將info級別的日誌記錄下來

agent.sinks.k1.channel=c1

這裡我們定義了一個名為agent的代理,他有一個名為s1的源,一個名為c1的通道,以及一個名為k1的接收器。

源類型為netcat,接收器類型為logger,主要用於調試和測試。

寫好配置文件後進入bin目錄下,啟動代理

「大數據篇」實時日誌抽取-Flume基礎篇

看到如下表示代理啟動成功

「大數據篇」實時日誌抽取-Flume基礎篇

可以看到源現在正在監聽12345端口的輸入。

現在我們再打開一個終端,使用nc(yum install -y nc)命令發送‘hello world’並敲入<return>來標識事件的結束。/<return>

圖中的OK來自於代理,表示將文本作為一個Flume事件接受。然後查看代理日誌,胡看到如下內容。

「大數據篇」實時日誌抽取-Flume基礎篇

上述日誌信息表明該Flume不包含頭文件,體是以十六進制的形式呈現,並且還有一個字符串便於閱讀。

「大數據篇」實時日誌抽取-Flume基礎篇


分享到:


相關文章: