標籤:
Flume是一種高可用的,高可靠的,分布式的海量日誌採集、彙總和傳輸的系統。
可以看一下模型:
每一個flume代理(agent)可以提供一項flume服務。每一個代理有三個成員:source、channel、sink
如所示,由source擷取資料並發送給channel,channel就好比一個緩衝區,由sink來從channel裡讀取資料。
----------------------------------------------
暫時沒有圖寫個思路先:
模型1:多source---1channel---1sink
模型2:單source---多channel---多sink
-----------------------------------------------
一個JVM環境僅僅只能運行一個agent
but..如果在同一台機器上起多個JVM環境則可以運行多個agent一樣的道理。
應用情境的話多資料來源接入且要匯入到同一類型sink且地址相同的不同路徑下(好吧我文法比較差不知道這句話怎麼描述,後續補圖)
關於多JVM環境啟動並執行話需要更深入的瞭解FLUME的配置..後續有時間瞭解一下。
==========================
關於FLUME的源碼,在flume官網上可以下載它的源碼包,用哪裡讀哪裡,對配置和使用的協助很大。
=============================================
關於shell指令碼:
if[[ $? -ne 0 ]]
$? :指的是上一條指令碼執行的返回結果,如上一條指令碼是一條基本的ls -l命令,如果成功查詢,當然返回就是0了,可如果出錯,傳回值不為0。
如果要修改某一檔案中的某一個欄位,或者某一行或某幾行,sed指令會幫上你大忙。
如果要擷取路徑:那麼pwd、dirname這些都是你的好幫手。
指令碼裡可以將你想要的到的結果直接賦值給變數,好像這樣:
hadoop_path=`hadoop fs -ls /path1/path2/path3/path4`
注意這裡的``可是數字1左邊的鍵呦。
得到這個path了以後我就可以判斷這個path是不是存在了呀呀呀。
活學活用活記。指令碼可以幹很多事。
====================================
SQL,如果別人寫了一條非常長非常長非常繞的SQL命令。
不要覺得看不懂,看不懂放到資料庫跑一把,就懂了。不要死死的一行一行盯著看,看半天也不會看出來的。浪費時間。
慢慢寫。
Flume配置|shell指令碼|python|SQL