概述
現如今,系統應用日誌不僅可以幫助你解決網站的問題,更可以提供關於業務、客戶以及用戶行為分析的有價值的信息。將日誌數據儲存至hdfs中並不是什麼難事,只需打包然後一個put命令就可以了,但是這樣做的弊端顯而易見,耗時低效而且無法實時處理。所以我們需要的是一個能夠處理流式日誌數據的解決方案,那麼,我們的Flume就登場了。
基本概念以及組件
Flume的基本概念以及優勢請自行百度。下面介紹Flume中的基本定義。
【event(事件)】:Flume傳輸的基本數據負載。由大於等於0個的頭(類似http頭)與體(字節數組)組成;
【source(源)】:數據的輸入;
【sink(接收器)】:數據的輸出;
【channel(管道)】:提供了源與接收器之間的膠水;
【agent(代理)】:源、接收器、管道的集合;
【攔截器】:處於源與接收器之間,類似於Spring的AOP;
。。。。。。等等
安裝與配置
前提條件:需要安裝jdk1.7版本以上。將下載好的包解壓至指定目錄。
拷貝conf下文件
從HelloWorld開始
拷貝安裝目錄conf下flume-conf.properties.template至指定位置,在這裡我把他命名為netcat.conf。
編輯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目錄下,啟動代理
看到如下表示代理啟動成功
可以看到源現在正在監聽12345端口的輸入。
現在我們再打開一個終端,使用nc(yum install -y nc)命令發送‘hello world’並敲入<return>來標識事件的結束。/<return>
圖中的OK來自於代理,表示將文本作為一個Flume事件接受。然後查看代理日誌,胡看到如下內容。
上述日誌信息表明該Flume不包含頭文件,體是以十六進制的形式呈現,並且還有一個字符串便於閱讀。
閱讀更多 安全獁 的文章