建立一個 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 //更新資料庫

請支持《傑瑞窩在這》原創文章。原文標題:建立一個 Hadooop Web Service,原文網址:https://jerrynest.io/create-hadooop-web-service/

網頁功能

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

成功登入畫面如下

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

按下新增紐會出現表單

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

執行結果回傳畫面


Source code

可以參考 GitHub

https://github.com/jlee58/IDCC_HW3

樂於分享、盡情玩耍的全端工程師。長期關注資訊安全、雲端運算與網路行銷等議題,曾獲得玉山黑客松金牌,擔任過軟體測試實習生、技術文案寫手。

發表迴響