Flume+Kafka+Sparkstreaming日誌分析
最近要做一個日誌實時分析的應用,採用了flume+kafka+sparkstreaming框架,先搞了一個測試Demo,本文沒有分析其架構原理。
簡介:flume是一個分散式,高可靠,可用的海量日誌聚合系統,kafka是一高吞吐量的分散式釋出訂閱系統,sparkstreaming是建立在spark上的實時計算框架,這這個Demo中,以上內容均為單機版偽分佈,flume的source為exec,agent的名稱為producer,sink為kafka。
執行所需要的環境直接到官網上下載即可:
我的環境是:flume1.6+kafka_2.10+spark1.2.0
flume的配置:
在conf下編輯配置檔案roomy.conf如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
.log #監聽日誌所在
|
在flume資料夾下執行
1 |
|
flume的部分完成。
在kafka目錄下執行:
1 |
|
啟動zookeeper
執行:
1 |
|
啟動kafka,這裡無需做什麼額外配置。
最後編寫spark streaming測試Demo程式
直接新建SBT專案,build.sbt如下:
1 2 3 4 5 6 7 8 9 10 11 |
|
需要注意的是,由於GFW,下載慢的要死,接下來就是測試程式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
|
可以通過StreamContext的建構函式設定資料採集分析的間隔。
程式會監聽/Users/roomy/Desktop/Coding/scala/real_time_project/debug.log中的變動,並以20秒一次的頻率總計增加行數輸出在控制檯。
日誌沒有變動的時候如下:
執行測試程式產生日誌:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
控制檯輸出如下:
streaming的輸出操作會把每個批次的前十個元素輸出如下:
在這20秒內總共產生的日誌行數為:
參考文件:
https://flume.apache.org/FlumeUserGuide.html
http://kafka.apache.org/documentation.html
Spark快速大資料分析
轉載於:https://my.oschina.net/hblt147/blog/1840271