天天看點

阿裡雲大資料利器之-使用flume+sql實作流計算做實時展現業務(歸檔Maxcompute)

實時業務處理的需求越來越多,也有各種處理方案,比如storm,spark等都可以。那以資料流的方向可以總結成資料源-資料搜集-緩存隊列-實時處理計算-資料展現。本文就用阿裡雲産品簡單實作了一個實時處理的方案。

一,總體架構

阿裡雲大資料利器之-使用flume+sql實作流計算做實時展現業務(歸檔Maxcompute)

按照資料流向

資料采集:flume(配置故障轉移)

緩存隊列:datahub

<a href="https://help.aliyun.com/product/53345.html?spm=5176.7618386.3.4.cigk2v">https://help.aliyun.com/product/53345.html?spm=5176.7618386.3.4.cigk2v</a>

資料計算:阿裡流計算(streamcompute)

<a href="https://help.aliyun.com/video_list/54212.html?spm=5176.7618386.3.2.cogp6l">https://help.aliyun.com/video_list/54212.html?spm=5176.7618386.3.2.cogp6l</a>

資料落地:rds(mysql)

<a href="https://help.aliyun.com/document_detail/26092.html?spm=5176.7841871.6.539.9ftjxu">https://help.aliyun.com/document_detail/26092.html?spm=5176.7841871.6.539.9ftjxu</a>

資料展現:quick-bi

<a href="https://data.aliyun.com/product/bi?spm=5176.8142029.388261.284.spvis0">https://data.aliyun.com/product/bi?spm=5176.8142029.388261.284.spvis0</a>

或者大屏顯示 data-v

<a href="https://data.aliyun.com/visual/datav?spm=5176.8142029.388261.283.spvis0">https://data.aliyun.com/visual/datav?spm=5176.8142029.388261.283.spvis0</a>

二,搭建過程

1,flume配置搭建

flume在資料采集的開源架構中還是比較常用的,但是在采集輸送到datahub中有可能網絡斷了或者伺服器挂了。那這裡配置了故障轉移,如圖,其中sink1和sink2為上面架構中的agenta和agentb.把agenta和agentb分别部署在兩台伺服器上。

阿裡雲大資料利器之-使用flume+sql實作流計算做實時展現業務(歸檔Maxcompute)

那看下配置檔案

agenta和agentb的配置檔案出了ip位址不一樣,其他完全一緻,這裡貼其中一個

三台服務配置完成後啟動flume(先啟動agenta和agentb)預期結果是agent1發送資料到agenta(優先級高的),如果停止agenta服務,會自動轉換發送到agentb。重新開機agegta的服務後,再次切回到agenta。

如圖:正常啟動資料正常傳輸經過agent1-agentb-datahub

阿裡雲大資料利器之-使用flume+sql實作流計算做實時展現業務(歸檔Maxcompute)

此時,停掉agenta服務,日志報錯,故障轉移。

阿裡雲大資料利器之-使用flume+sql實作流計算做實時展現業務(歸檔Maxcompute)

重新開機agenta服務,恢複到之前狀态,切回到sink1

阿裡雲大資料利器之-使用flume+sql實作流計算做實時展現業務(歸檔Maxcompute)

2,datahub建立,

在datahub控制台建立項目和topic,

設定分片和生命周期,具體方法見連結

datahub中看到有flume傳過來的資料

阿裡雲大資料利器之-使用flume+sql實作流計算做實時展現業務(歸檔Maxcompute)

3,配置阿裡流計算

注冊資料源datahub/rds(也支援阿裡其他類型資料源)-編寫流計算腳本-調試-上線-啟動

如圖先注冊資料源供腳本使用。必須要有資料來源表和資料結果表。

阿裡雲大資料利器之-使用flume+sql實作流計算做實時展現業務(歸檔Maxcompute)

在編寫腳本時,可以直接引用表,會自動插入表結構和配置資訊,非常友善

阿裡雲大資料利器之-使用flume+sql實作流計算做實時展現業務(歸檔Maxcompute)

那開始編寫腳本必須包括三部分

1,建立資料來源表,這裡是datahub表

2,建立資料結果表,這裡是rds表

3,将來源表資料寫入結果表,并進行計算

如圖

阿裡雲大資料利器之-使用flume+sql實作流計算做實時展現業務(歸檔Maxcompute)

三、測試

阿裡雲大資料利器之-使用flume+sql實作流計算做實時展現業務(歸檔Maxcompute)
阿裡雲大資料利器之-使用flume+sql實作流計算做實時展現業務(歸檔Maxcompute)

最後,我們把整個流程全部啟動,到rds中看結果如圖

阿裡雲大資料利器之-使用flume+sql實作流計算做實時展現業務(歸檔Maxcompute)
阿裡雲大資料利器之-使用flume+sql實作流計算做實時展現業務(歸檔Maxcompute)

需要在maxcompute中建立好對應表即可自動歸檔存儲。詳細配置如下

<a href="https://help.aliyun.com/document_detail/47453.html?spm=5176.doc47439.6.555.3gnrrs">https://help.aliyun.com/document_detail/47453.html?spm=5176.doc47439.6.555.3gnrrs</a>

好神奇,幾句sql資料就源源不斷的流過來,那麼前端或者其他業務層可以過來拿資料展示了,資料還可以界面化配置歸檔入庫,十分友善。如果有複雜邏輯計算的,可以申請開通流計算的udf功能,這樣看來,學好sql和java,走遍天下都不怕。