天天看點

(TopkOnJstorm)第一周工作報告(2014-07-07~2014-07-13)

本周的工作主要有三個部分:

一:完成項目的準備工作

    1. 在CSDN CODE平台上建立新項目JSTopk:《https://code.csdn.net/sinat_16596967/jstopk》

    2. 建立工作報告部落格:《http://blog.csdn.net/sinat_16596967》

二:學習使用Window Azure

    主要通過《window Azure中文部落格》進行學習。

    1. 虛拟機部分

    在《Virtual Machines》文檔中,有詳細的linux虛拟機教程:包含如何建立、連接配接、使用虛拟機。

    根據《如何在Windows Azure虛拟機上部署OpenLogic CentOS鏡像》建立自己的linux叢集時候,但發現已經無法申請Azure公有雲試用服務,正在與商老師溝通中。而根據需求文檔中 “在Azure公有雲的虛拟機環境實作JStorm最小topology的叢集部署” 的要求,我建議2-4台就已經足夠了,配置現在還無法評估(涉及到使用HDFS還是Azrue提供的存儲服務)。

    2. REST API

    REST API 允許使用者按程式設計方式通過存儲模拟器通路 Azure 或開發環境中的 Blob、隊列、表和檔案服務。它可以從 Azure 中運作的服務通路存儲服務,也可以直接通過 Internet 從可以發送 HTTP/HTTPS 請求和接收 HTTP/HTTPS 響應的任何應用程式進行通路。

    3. Azure主要提供三種存儲服務:

    a) Blob Storage:雲端的檔案系統,其中container相當于本地檔案系統的檔案夾;Blob相當于檔案。建立方式與程式設計例子可以看博文《使用Blob Storage》

    b) Queue Storage:提供一個雲端的隊列,相當于分布式消息隊列,可以解耦系統的消息傳遞。伺服器端通過Queue Storage可以把使用者遞交的資訊存儲在隊列中,背景再運作一個程式從隊列中取得資料進行資訊的處理。建立方式與程式設計例子可以看博文《使用Queue Storage》

    c) Table Storage:提供一個雲端的表格結構。類似于資料庫,但是與一般的關系型資料庫不同,Table Storage并不要求一個表中的所有資料都遵循同一模式。舉例來說,在一個表中,可以存儲一條有三個字段的記錄和一條隻有兩個字段的記錄。這也是我們為什麼說可以把Table Storage想象為XML檔案的原因。建立方式與程式設計例子可以看博文《使用Table Storage》

    4. 本項目預計使用的存儲服務:

    a) 原始資料的注入:使用Queue Storage,消息隊列具有先入先出的特點,還可以解耦使用者程式和服務程式的消息傳遞,可以提高系統的容錯性。

    b) top-k結果的讀出:這個涉及是服務程式推送給使用者還是由使用者拉取的方式。我建議使用使用者拉去的方式,使用Table Storage,存儲最新的結果,由使用者自己來拉取,可以減輕服務程式的負擔,增加可靠性,減少無用過程。

    c) 将實時資料持久化到一種分布式檔案系統:使用HDFS或者Table Storage。而我并沒有了解“實時資料”是否指所有的資料,需要與商老師溝通。

    5. 項目将使用java來實作REST API,而Azure也支援,詳細可以參考《Windows Azure Storage 用戶端Java版概覽》

三:JStorm

    JStorm的下載下傳和部署:在實驗室已搭建一個四個節點的JStorm叢集,也實作了一些topology。是以,具體的部署流程将在Azure虛拟機使用後一起介紹,可以參考《如何安裝JStorm》

    根據Top-K算法的需求,可以設計一個這樣的topology:spout->blot1->bolt2

    1. spout是使用REST API從Queue Storage擷取資料,并發度為M。

    2. bolt1是過濾,并發度為N。緩存K個最大值(以最小堆的形式存儲),如果新資料大于最小值,就改變堆,并blot2發送tuple。如果worker失敗,則重新積攢K個最大值,可設計為無狀态處理過程。這樣便可以分布式處理資料,提高性能。

    3. bolt2是彙聚,并發度為1。緩存K個最大值(以最小堆的形式存儲),如果新資料超過最小值,就改變堆,并使用REST推送到Table Storage和持久化到分布式檔案系統。如果worker失敗,則重新開機後需要從Table Storage中讀取原有的top-K資料建立原始堆,保證結果的正确性。

下周計劃

    1. 申請Azure公有雲資源,包括虛拟機資源和存儲服務資源。

    2. 在虛拟機上部署JStorm叢集。

    3. 完成topology的初步版本,達到運作狀态。

    4. 完成REST API使用Queue Storage和Table Storage的例子。

感謝CSDN開源夏令營和商之狄老師的指導與支援!

繼續閱讀