• <menu id="w2i4a"></menu>
  • logo 慧都大數(shù)據(jù)(二)

    文檔首頁>>慧都大數(shù)據(jù)(二)>>關(guān)鍵七步,用Apache Spark構(gòu)建實時分析Dashboard

    關(guān)鍵七步,用Apache Spark構(gòu)建實時分析Dashboard


    大數(shù)據(jù)

    問題描述

    電子商務(wù)門戶希望構(gòu)建一個實時分析儀表盤,對每分鐘發(fā)貨的訂單數(shù)量做到可視化,從而優(yōu)化物流的效率。

    解決方案

    解決方案之前,先快速看看我們將使用的工具:

    Apache Spark – 一個通用的大規(guī)模數(shù)據(jù)快速處理引擎。Spark的批處理速度比Hadoop MapReduce快近10倍,而內(nèi)存中的數(shù)據(jù)分析速度則快近100倍。更多關(guān)于Apache Spark的信息。

    Python – Python是一種廣泛使用的高級,通用,解釋,動態(tài)編程語言。 更多關(guān)于Python的信息。

    Kafka – 一個高吞吐量,分布式消息發(fā)布訂閱系統(tǒng)。 更多關(guān)于Kafka的信息。

    Node.js – 基于事件驅(qū)動的I/O服務(wù)器端JavaScript環(huán)境,運行在V8引擎上。 更多關(guān)于Node.js的信息。

    Socket.io – Socket.IO是一個構(gòu)建實時Web應(yīng)用程序的JavaScript庫。它支持Web客戶端和服務(wù)器之間的實時、雙向通信。

    Highcharts – 網(wǎng)頁上交互式JavaScript圖表。 更多關(guān)于Highcharts的信息。

    CloudxLab – 提供一個真實的基于云的環(huán)境,用于練習和學習各種工具。你可以通過在線注冊立即開始練習。

    如何構(gòu)建數(shù)據(jù)Pipeline?

    下面是數(shù)據(jù)Pipeline高層架構(gòu)圖

    大數(shù)據(jù)

    我們的實時分析Dashboard將如下所示

    大數(shù)據(jù)

    \

     

    讓我們從數(shù)據(jù)Pipeline中的每個階段的描述開始,并完成解決方案的構(gòu)建。

    慧都控件網(wǎng)年末大促

    階段1

    當客戶購買系統(tǒng)中的物品或訂單管理系統(tǒng)中的訂單狀態(tài)變化時,相應(yīng)的訂單ID以及訂單狀態(tài)和時間將被推送到相應(yīng)的Kafka主題中。

    數(shù)據(jù)集

    由于沒有真實的在線電子商務(wù)門戶網(wǎng)站,我們準備用CSV文件的數(shù)據(jù)集來模擬。讓我們看看數(shù)據(jù)集:

    大數(shù)據(jù)

    數(shù)據(jù)集包含三列分別是:“DateTime”、“OrderId”和“Status”。數(shù)據(jù)集中的每一行表示特定時間時訂單的狀態(tài)。這里我們用“xxxxx-xxx”代表訂單ID。我們只對每分鐘發(fā)貨的訂單數(shù)感興趣,所以不需要實際的訂單ID。

    可以從CloudxLab GitHub倉庫克隆完整的解決方案的源代碼和數(shù)據(jù)集。

    數(shù)據(jù)集位于項目的spark-streaming/data/order_data文件夾中。

    推送數(shù)據(jù)集到Kafka

    shell腳本將從這些CSV文件中分別獲取每一行并推送到Kafka。推送完一個CSV文件到Kafka之后,需要等待1分鐘再推送下一個CSV文件,這樣可以模擬實時電子商務(wù)門戶環(huán)境,這個環(huán)境中的訂單狀態(tài)是以不同的時間間隔更新的。在現(xiàn)實世界的情況下,當訂單狀態(tài)改變時,相應(yīng)的訂單詳細信息會被推送到Kafka。

    運行我們的shell腳本將數(shù)據(jù)推送到Kafka主題中。登錄到CloudxLab Web控制臺并運行以下命令。

    大數(shù)據(jù)

    階段2

    在第1階段后,Kafka“order-data”主題中的每個消息都將如下所示

    大數(shù)據(jù)

    階段3

    Spark streaming代碼將在60秒的時間窗口中從“order-data”的Kafka主題獲取數(shù)據(jù)并處理,這樣就能在該60秒時間窗口中為每種狀態(tài)的訂單計數(shù)。處理后,每種狀態(tài)訂單的總計數(shù)被推送到“order-one-min-data”的Kafka主題中。

    請在Web控制臺中運行這些Spark streaming代碼

    大數(shù)據(jù)

    階段4

    在這個階段,Kafka主題“order-one-min-data”中的每個消息都將類似于以下JSON字符串

    大數(shù)據(jù)

    階段5

    運行Node.js server

    現(xiàn)在我們將運行一個node.js服務(wù)器來使用“order-one-min-data”Kafka主題的消息,并將其推送到Web瀏覽器,這樣就可以在Web瀏覽器中顯示出每分鐘發(fā)貨的訂單數(shù)量。

    請在Web控制臺中運行以下命令以啟動node.js服務(wù)器

    大數(shù)據(jù)

    現(xiàn)在node服務(wù)器將運行在端口3001上。如果在啟動node服務(wù)器時出現(xiàn)“EADDRINUSE”錯誤,請編輯index.js文件并將端口依次更改為3002…3003…3004等。請使用3001-3010范圍內(nèi)的任意可用端口來運行node服務(wù)器。

    用瀏覽器訪問

    啟動node服務(wù)器后,請轉(zhuǎn)到http://YOUR_WEB_CONSOLE:PORT_NUMBER訪問實時分析Dashboard。如果您的Web控制臺是f.cloudxlab.com,并且node服務(wù)器正在端口3002上運行,請轉(zhuǎn)到http://f.cloudxlab.com:3002訪問Dashboard。

    當我們訪問上面的URL時,socket.io-client庫被加載到瀏覽器,它會開啟服務(wù)器和瀏覽器之間的雙向通信信道。

    階段6

    一旦在Kafka的“order-one-min-data”主題中有新消息到達,node進程就會消費它。消費的消息將通過socket.io發(fā)送給Web瀏覽器。

    階段7

    一旦web瀏覽器中的socket.io-client接收到一個新的“message”事件,事件中的數(shù)據(jù)將會被處理。如果接收的數(shù)據(jù)中的訂單狀態(tài)是“shipped”,它將會被添加到HighCharts坐標系上并顯示在瀏覽器中。

    我們還錄制了一個關(guān)于如何運行上述所有的命令并構(gòu)建實時分析Dashboard的視頻。

    我們已成功構(gòu)建實時分析Dashboard。這是一個基本示例,演示如何集成Spark-streaming,Kafka,node.js和socket.io來構(gòu)建實時分析Dashboard?,F(xiàn)在,由于有了這些基礎(chǔ)知識,我們就可以使用上述工具構(gòu)建更復(fù)雜的系統(tǒng)。

    慧都控件網(wǎng)超級促銷月,全場6折起,豪禮搶不停>>>

    截止時間:2016年11月30日

    更多大數(shù)據(jù)與分析相關(guān)行業(yè)資訊、解決方案、案例、教程等請點擊查看>>>

    詳情請咨詢在線客服!

    客服熱線:023-66090381

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();