圖片來源: 

iThome

手機通訊軟體Line自2011年誕生以來,直至今日已累積超過4億用戶,為應付龐大的使用者基礎,隨時掌握Line全球通訊系統的狀況,所以需要建置相對應的分析報告系統來支援。Line分析平臺團隊工程師Satoshi Tagomori表示, Line使用Lambda架構兼顧批次與即時分析的需求。

Satoshi Tagomori提到3項Line需要採用即時串流處理的原因,第一、串流處理可以更即時取得報告,例如即時的分析指標或是短時間的警示報告。第二、能節省運算資源,他以10Mbps資料流量為例,就批次處理來說,累積一天要處理的資料約是100GB,當考慮處理效率,屆時需要花費不少資源才能縮短運算時間,但是如果採用即時串流處理,隨時不停地運算,只需要一臺伺服器就夠了。第三,不需要設定查詢任務排程,因為即時串流處理不停的運作,查詢指令只需要輸入一次便可不斷執行。

批次與即時分析優缺點互補

不過,即時串流處理也有其缺點,例如查詢指令一旦開始執行便不會中止,當新資料進來時,查詢的結果便會不斷更新,而當使用者需要查詢舊的資料時,便要使用其他方法查詢。另外,當串流處理查詢的過程發生任何錯誤,線上的操作的結果都會遺失,再也無法回復發生錯誤那一段時間的資料。最後,雜亂的資料來源可能污染運算結果,究竟查詢結果是要依據資料被記錄的時間,抑或是資料被送進串流處理的時間,即時串流處理使時間成為敏感條件,因此當資料來源複雜,處理有其困難度。

Line用Lambda架構來實現資料批次以及串流處理,來解決營運上需要非即時與即時的分析報告。批次運算,可以用來處理非即時的月、日或是以小時為單位的報告。而即時的分析,能提供自動更新報告服務,或是服務濫用警示,以及流量負載報告等功能。

根據前推特工程師,同時也是開源分散式運算架構Storm原創作者Nathan Marz的定義,Lambda架構是指有擴展性、容錯的資料處理架構。通常是用來滿足需要強健系統的環境,容許硬體以及人為的使用錯誤,並有能力處理大量的工作負荷,在低延遲的要求下讀取與更新資料,而且最終的系統必須能夠線性擴展。

SQL語法方便分析查詢使用

Satoshi Tagomori表示,他們原本使用Hadoop做批次分析,因此系統產生的各式資料,透過開源資料收集器Fluentd梳理後,以HDFS的形式存放,當需要取用時,才用Hive或是Presto查詢結果。而即時分析的部分,同樣利用Fluentd整理資料,接著輸入無架構串流處理伺服器Norikra中運算分析,當要取用時也可以使用與Hive極為相似的SQL語法查詢。Satoshi Tagomori認為,能使用SQL語法查詢結果,是採用Norikra的重要原因,因為不少主管或分析師並沒有很深的技術基礎。

而Line實際使用這套Lambda架構分析系統的案例,Satoshi Tagomori說,短時間的廣告服務即時報告由Norikra產生,每天的修正報告則是由Hive查詢。另外,伺服器的錯誤Log由Norikra彙整,適時產生錯誤警告,而由Hive與Presto產生詳細報告。


Advertisement

更多 iThome相關內容