1. 總覽
Cloud Dataproc 是一項代管的 Spark 和 Hadoop 服務,能夠讓您利用開放原始碼資料工具,進行批次處理、查詢、串流和機器學習作業。Cloud Dataproc 自動化功能可協助您快速建立叢集、輕鬆管理叢集,並在不使用叢集時關閉叢集來節省費用。省下管理作業所需的時間與費用之後,您就能專心處理工作與資料。
本教學課程內容取自 https://cloud.google.com/dataproc/overview
課程內容
- 如何建立代管 Cloud Dataproc 叢集 (需預先安裝 Apache Spark)。
- 如何提交 Spark 工作
- 如何調整叢集大小
- 如何透過 SSH 連線至 Dataproc 叢集的主要節點
- 如何使用 gcloud 檢查叢集、工作和防火牆規則
- 如何關閉叢集
軟硬體需求
您會如何使用這個教學課程?
根據您使用 Google Cloud Platform 服務的經驗,您會給予什麼評價?
2. 設定和需求
自修環境設定
提醒您,專案 ID 是所有 Google Cloud 專案的專屬名稱 (已經有人使用上述名稱,很抱歉對您不符!)。稍後在本程式碼研究室中會稱為 PROJECT_ID
。
- 接下來,您需要在 Cloud 控制台中啟用計費功能,才能使用 Google Cloud 資源。
執行這個程式碼研究室並不會產生任何費用,如果有的話。請務必依照「清除所用資源」一節指示本節將說明如何關閉資源,這樣您就不會產生本教學課程結束後產生的費用。Google Cloud 的新使用者符合 $300 美元免費試用計畫的資格。
3. 啟用 Cloud Dataproc 和 Google Compute Engine API
按一下畫面左上方的「選單」圖示。
從下拉式選單中選取 API 管理員。
按一下「啟用 API 和服務」。
搜尋「Compute Engine」。按一下「Google Compute Engine API」出現在畫面上的結果清單中
在 Google Compute Engine 頁面上,按一下「啟用」
啟用後,按一下向左箭頭即可返回。
現在搜尋「Google Cloud Dataproc API」然後啟用
4. 啟動 Cloud Shell
這種以 Debian 為基礎的虛擬機器,搭載各種您需要的開發工具。提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作,大幅提高網路效能和驗證能力。換言之,本程式碼研究室只需要在 Chromebook 上運作即可。
- 如要透過 Cloud 控制台啟用 Cloud Shell,只要點選「啟用 Cloud Shell」 圖示 即可 (整個佈建作業只需幾分鐘的時間,操作完畢即可)。
連線至 Cloud Shell 後,您應會發現自己通過驗證,且專案已設為 PROJECT_ID
。
gcloud auth list
指令輸出
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
指令輸出
[core] project = <PROJECT_ID>
如因故未設定專案,請直接發出以下指令:
gcloud config set project <PROJECT_ID>
正在尋找 PROJECT_ID
嗎?查看您在設定步驟中使用的 ID,或在 Cloud 控制台資訊主頁查詢:
根據預設,Cloud Shell 也會設定一些環境變數,方便您之後執行指令。
echo $GOOGLE_CLOUD_PROJECT
指令輸出
<PROJECT_ID>
- 最後,進行預設可用區和專案設定。
gcloud config set compute/zone us-central1-f
您可以選擇各種不同的可用區。詳情請參閱「區域與可用區。
5. 建立 Cloud Dataproc 叢集
Cloud Shell 啟動後,您可以透過指令列叫用 Cloud SDK gcloud 指令,或叫用虛擬機器執行個體提供的其他工具。
選擇要在這個研究室中使用的叢集名稱:
$ CLUSTERNAME=${USER}-dplab
首先,請建立新叢集:
$ gcloud dataproc clusters create ${CLUSTERNAME} \
--region=us-central1 \
--scopes=cloud-platform \
--tags codelab \
--zone=us-central1-c
預設的叢集設定包含兩個工作站節點,應能滿足本教學課程的需求。上述指令包含 --zone
選項,用於指定要在哪個地理區域建立叢集,以及 --scopes
和 --tags
這兩個進階選項 (下文會在您使用這些功能啟用的功能時說明)。想瞭解如何使用指令列旗標來自訂叢集設定,請參閱 Cloud SDK gcloud dataproc clusters create
指令。
6. 將 Spark 工作提交至叢集
您可以使用 Cloud Dataproc API jobs.submit
要求、gcloud
指令列工具或 Google Cloud Platform Console 提交工作。此外,您還可以使用 SSH 連線至叢集中的機器執行個體,然後從執行個體執行工作。
現在,讓我們透過 Cloud Shell 指令列使用 gcloud
工具提交工作:
$ gcloud dataproc jobs submit spark --cluster ${CLUSTERNAME} \
--class org.apache.spark.examples.SparkPi \
--jars file:///usr/lib/spark/examples/jars/spark-examples.jar -- 1000
工作執行時,您將在 Cloud Shell 視窗中看到輸出內容。
輸入 Control-C 來中斷輸出。這麼做會停止 gcloud
指令,不過工作仍會在 Dataproc 叢集中執行。
7. 列出工作並重新連線
列印工作清單:
$ gcloud dataproc jobs list --cluster ${CLUSTERNAME}
最近提交的工作會列在清單頂端。複製工作 ID 並貼到「jobId
」欄位的位置。。指令將重新連線至指定工作,並顯示其輸出內容:
$ gcloud dataproc jobs wait jobId
工作完成後,輸出結果會包含 Pi 的概略值。
8. 調整叢集大小
如要執行較大的運算,建議您在叢集中新增更多節點,以加快執行速度。Dataproc 可讓您隨時為叢集新增節點或移除節點。
檢查叢集設定:
$ gcloud dataproc clusters describe ${CLUSTERNAME}
新增一些先佔節點,藉此擴充叢集:
$ gcloud dataproc clusters update ${CLUSTERNAME} --num-secondary-workers=2
再次檢查叢集:
$ gcloud dataproc clusters describe ${CLUSTERNAME}
請注意,除了原始叢集說明的 workerConfig
以外,現在還有 secondaryWorkerConfig
,包含先佔工作站的兩個 instanceNames
。Dataproc 顯示新節點正在啟動期間的叢集狀態。
您一開始使用了兩個節點,現在有四個節點,因此 Spark 工作執行速度大約是兩倍。
9. 透過 SSH 登入叢集
透過 SSH 連線至主要節點。主要節點的執行個體名稱一律為附加 -m
的叢集名稱:
$ gcloud compute ssh ${CLUSTERNAME}-m --zone=us-central1-c
第一次在 Cloud Shell 中執行 SSH 指令時,系統會為您的帳戶產生 SSH 金鑰。您可以選擇先設定通關密語,也可以使用空白的通關密語;之後如果需要,請使用 ssh-keygen
進行變更。
在執行個體上檢查主機名稱:
$ hostname
由於您在建立叢集時指定了 --scopes=cloud-platform
,因此您可以在叢集上執行 gcloud
指令。列出專案中的叢集:
$ gcloud dataproc clusters list
完成後,請登出 SSH 連線:
$ logout
10. 檢查廣告代碼
建立叢集時,您加入了 --tags
選項,可為叢集中的每個節點新增標記。標記是用來將防火牆規則附加至每個節點。您未在本程式碼研究室中建立任何相符的防火牆規則,不過您還是可以檢查節點上的標記,以及網路的防火牆規則。
列印主要節點的說明:
$ gcloud compute instances describe ${CLUSTERNAME}-m --zone us-central1-c
在輸出內容結尾附近尋找 tags:
,您會看到其包含 codelab
。
列印防火牆規則:
$ gcloud compute firewall-rules list
請記下 SRC_TAGS
和 TARGET_TAGS
欄。透過將標記附加至防火牆規則,您可以指定該標記應用於具有該標記的所有節點。
11. 關閉叢集
透過 Cloud Dataproc API clusters.delete
要求、使用 gcloud dataproc clusters delete
執行檔的指令列,或從 Google Cloud Platform 控制台關閉叢集。
我們使用 Cloud Shell 指令列關閉叢集:
$ gcloud dataproc clusters delete ${CLUSTERNAME} --region us-central1
12. 恭喜!
您已瞭解如何建立 Dataproc 叢集、提交 Spark 工作、調整叢集大小、使用 SSH 登入主要節點,以及透過 gcloud 檢查叢集、工作和防火牆規則,以及透過 gcloud 關閉叢集!
瞭解詳情
- Dataproc 說明文件:https://cloud.google.com/dataproc/overview
- 透過控制台開始使用 Dataproc 程式碼研究室
授權
本作品採用創用 CC 姓名標示 3.0 通用授權,以及 Apache 2.0 授權。