建立一個 Hadooop Web Service

架設好 Hadoop 環境後,試著建立自己的 Hadoop Web Service,類似 Amazon 的 MapReduce 服務,只不過這是非常簡單的陽春版。讓使用者能夠通過網頁介面,上傳 Wordcount Python 程式,執行後直接在網頁上看到結果。

詳細的實作可以參考 Source code,參考即可,小弟這部分沒有寫得很好。


開發環境

  • 雲端平台:Google Cloud Platform
  • Hadoop 版本:2.6.0
  • 網站前端:jQuery + ajax + bootstrap (bootswatch)
  • 網站後端:Python/Django + REST

系統架構

使用 Python 與 Django Framework 來實作網站,提供一個線上的 Hadoop MapReduce服務,自行撰寫REST架構API,並用 Ajax 來做非同步的服務請求。使用者可以透過以下幾種方式來存取服務:

  • 上傳 job:POST http://IP:8000/upload 上傳的資料會存放在 /media/[user_id]/[upload_id]/[user files],用來區分不同使用者、不同時間上傳的檔案,並將上傳資訊與時間儲存在資料庫中
  • 刪除 job:DELETE http://IP:8000/delete/[id] 刪除資料庫中資料與/media/[user_id]/[upload_id]目錄下的所有檔案
  • 執行 job:GET http://IP:8000/execute 使用 user上傳的檔案來執行 MapReduce,執行完後會產生output.txt檔案,最後將結果回傳給 client。

以下是網站目錄結構

hdweb
– account //管理帳號app
– hdweb
– job //處理hadoop service app
– media //上傳檔案存放位置
– static //靜態資料(css,js,fonts)
– template //網頁模板
– db.sqlite3 //資料庫
– manage.py //Django管理程式
– run.sh //開啟server
– db.sh //更新資料庫


網頁功能

  • 會員登入/登出:必須要登入網站才可以使用服務

hadoop1 e1456467602462 - 建立一個 Hadooop Web Service

成功登入畫面如下

hadoop2 e1456467649401 - 建立一個 Hadooop Web Service

  • 提交/刪除工作:下圖為工作列表,使用者可以透過「New job」新增工作,也可以透過下面的按鈕執行或刪除,會呼叫對應的Ajax request 向 Server 請求服務。Client 端再透過回傳的 Response,來顯示請求結果。

hadoop3 e1456467687709 - 建立一個 Hadooop Web Service

按下新增紐會出現表單

hadoop4 e1456467726391 - 建立一個 Hadooop Web Service

輸入錯誤或漏填會出現警告

hadoop5 e1456467757862 - 建立一個 Hadooop Web Service

執行結果回傳畫面

hadoop6 e1456467786759 - 建立一個 Hadooop Web Service


Source code

可以參考 GitHub

https://github.com/jlee58/IDCC_Homework/tree/master/homework3

Jerry
Jerry

樂於分享的軟體工程師,曾在新創與大型科技公司實習,獲得黑客松競賽冠軍,擔任資安研討會講者。長期熱衷於資訊安全、雲端服務、網路行銷等領域,希望將科技知識分享給更多人。內容轉載請來信:jlee58tw@gmail.com

發表回應