[教學] 使用 Cloud Dataproc 架設 Hadoop Cluster

最近收到任務,希望在 Hadoop Cluster上面跑 Apache log 的分析案例,雖然之前已經架設過環境,但是純手工真的不是件容易事,遇到版本衝突、網路沒設好之類的問題會讓人一個頭兩個大。認真覺得裝(懂)過一次,了解 Hadoop 的安裝方式就可以了,為了快速完成目標,就直接用現成的雲端服務,開一個 Hadoop Cluster。 原本想用 Kubernetes (k8s) 架設,但是最近的 v1.6 版出問題 (Issue #43815),轉而使用 Google Container Engine (k8s v1.5),後來才發現 Google 其實有推出 Cloud Dataproc 服務,能直接幫架設好 Hadoop、Spark 環境,幾分鐘的時間就能建置完成!


什麼是 Cloud Dataproc

Cloud Dataproc 是 Google 去年 (2016) 推出的服務,讓使用者可以更快、更方便的管理 Hadoop 與 Spark。建置叢集不再需要煩雜的設定,只要透過網頁介面或是 gcloud dataproc 指令,幾分鐘的時間就能完成。Hadoop 與 Spark 的環境與工具都已預先設定,直接就能送出工作 (Job) 開始 Map-reduce 計算。至於收費方面,根據實際使用的 vCPU 數量計費,最便宜的機器每小時 0.01 美元 / vCPU,還可以選擇先佔工作站節點 (Preemptible VM Instances) 更進一步降低成本。

Cloud Dataproc 提供更簡易的介面,讓建制更快速,成本更低廉。圖 / Google


透過網頁介面建置

在 GCP 側邊欄,找到巨量資料下的 Cloud Dataproc ,點選建立叢集

試玩的話採用預先設定即可,不過要注意免費額度只提供 8個 vCPU,預設 master 4 vCPU 加上 worker 4 vCPU x2 會超過,需要稍微調整。而依照範例的設定,屆時會在 Google Compute Engine 開三台虛擬機,以 cluster_name-type 命名,整個 Cluster 的管理會在 Google Cloud Dataproc 的叢集面板中出現。

在 Cloud Dataproc 中建立叢集。圖 / 截圖自 Dataproc Console

點選上圖下方藍色文字 (先佔工作站、Bucket…)展開更多詳細設定。

  • 先佔工作站 (Preemptible VM Instance) 的費用較低,最多只會持續運作 24 小時,是由系統自行管理其運作,調派多餘或閒置的機器來服務。
  • 映像檔版本:指的是 Dataproc 版本,目前預設為 v1.1。預裝的套件版本分別有 Spark 2.0.2,Hadoop 2.7.3,Pig 0.16.0,Hive 2.1.0

在 Cloud Dataproc 中建立叢集 (進階設定)。圖 / 截圖自 Dataproc Console


透過指令建立叢集

使用 gcloud 就能建置囉,透過 clusters create 指令建立預設叢集

gcloud dataproc clusters create

下方的指令則是在區域 asia-east1-a 建立 4台 n1-standard-1 (1 vCPU, 3.75 G) 規格的 VM,其中一台為 master 剩下三台是 worker。

gcloud dataproc clusters create cluster2 \
--master-machine-type n1-standard-1 \
--worker-machine-type n1-standard-1 \
--num-workers 3
--zone asia-east1-a

詳細的指令用法請看 gcloud dataproc 說明

備註:想要知道目前使用多少 vCPU額度 (Quota),需要透過 describe 指令。如下圖,最多 8 個已使用  6個 vCPU。

gcloud compute regions describe

asia-northeast1 區域中,CPU限額為 8 個,目前已使用 6 個


透過 SSH 連線進入 master VM

在叢集詳細資料中,點擊 SSH 按鈕,開啟 Terminal 後直接下 hadoop 指令吧!你會發現環境已經幫你設定好囉

在 Cloud Dataproc 中透過 SSH連接 master instance。圖 / 截圖自 Dataproc Console

預設的 Hadoop與 Spark Home 分別如下,也順便記錄個 Hadoop Streaming jar 位置

HADOOP_HOME=/usr/lib/hadoop
SPARK_HOME=/usr/lib/spark
STREAMJAR=/usr/lib/hadoop-mapreduce/hadoop-streaming-2.7.3.jar

手工建置…

如果想要自己架設 Hadoop Cluster,體驗一下複雜的設定,那麼可以參考我以前的文章 (Hadoop 2.6.0)

如何在 Ubuntu14.04上安裝 Hadoop2.6.0

參考資料

平時會觀察網路行銷、雲端運算與資訊安全,同時也在思索人生的課題。當世界越快,心則慢,期許自己能靜靜閱讀,細細品味,然後好好思考。