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. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก
- ลงชื่อเข้าใช้ Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ (หากยังไม่มีบัญชี Gmail หรือ G Suite คุณต้องสร้างบัญชี)
โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนมีคนใช้แล้ว และจะใช้ไม่ได้ ขออภัย) และจะมีการอ้างอิงใน Codelab ว่า PROJECT_ID
ในภายหลัง
- ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud
การใช้งาน Codelab นี้น่าจะไม่มีค่าใช้จ่ายใดๆ หากมี ตรวจสอบว่าคุณได้ทำตามวิธีการใน "การล้างข้อมูล" ซึ่งจะแนะนำคุณเกี่ยวกับวิธีปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ผู้ใช้ใหม่ของ Google Cloud จะมีสิทธิ์เข้าร่วมโปรแกรมทดลองใช้ฟรี$300 USD
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 ซึ่งจะช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก ซึ่งหมายความว่าสิ่งที่คุณต้องมีสำหรับ Codelab นี้คือเบราว์เซอร์ (ใช่แล้ว ทั้งหมดนี้ทำงานได้บน Chromebook)
- หากต้องการเปิดใช้งาน Cloud Shell จาก Cloud Console เพียงคลิกเปิดใช้งาน 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
ของคุณอยู่ใช่ไหม ตรวจสอบรหัสที่คุณใช้ในขั้นตอนการตั้งค่าหรือดูในแดชบอร์ด Cloud Console
Cloud Shell ยังตั้งค่าตัวแปรสภาพแวดล้อมโดยค่าเริ่มต้นด้วย ซึ่งอาจเป็นประโยชน์เมื่อคุณเรียกใช้คำสั่งในอนาคต
echo $GOOGLE_CLOUD_PROJECT
เอาต์พุตจากคำสั่ง
<PROJECT_ID>
- สุดท้าย ให้ตั้งค่าโซนและการกำหนดค่าโปรเจ็กต์เริ่มต้น
gcloud config set compute/zone us-central1-f
คุณเลือกโซนต่างๆ ได้หลากหลาย ดูข้อมูลเพิ่มเติมได้ที่ภูมิภาคและ โซน
5. สร้างคลัสเตอร์ Cloud Dataproc
หลังจากเปิดตัว Cloud Shell แล้ว คุณจะใช้บรรทัดคำสั่งเพื่อเรียกใช้คำสั่ง gcloud ของ Cloud SDK หรือเครื่องมืออื่นๆ ที่พร้อมใช้งานบนอินสแตนซ์เครื่องเสมือนได้
เลือกชื่อคลัสเตอร์ที่จะใช้ในห้องทดลองนี้
$ CLUSTERNAME=${USER}-dplab
เริ่มต้นใช้งานโดยการสร้างคลัสเตอร์ใหม่ดังนี้
$ gcloud dataproc clusters create ${CLUSTERNAME} \
--region=us-central1 \
--scopes=cloud-platform \
--tags codelab \
--zone=us-central1-c
การตั้งค่าคลัสเตอร์เริ่มต้นซึ่งประกอบด้วยโหนดของผู้ปฏิบัติงาน 2 โหนดควรเพียงพอสำหรับบทแนะนำนี้ คำสั่งด้านบนจะรวมตัวเลือก --zone
เพื่อระบุโซนทางภูมิศาสตร์ที่จะมีการสร้างคลัสเตอร์ และตัวเลือกขั้นสูง 2 รายการ ได้แก่ --scopes
และ --tags
ซึ่งได้อธิบายไว้ด้านล่างเมื่อคุณใช้ฟีเจอร์ที่คลัสเตอร์เปิดใช้ ดูคำสั่ง Cloud SDK gcloud dataproc clusters create
สำหรับข้อมูลเกี่ยวกับการใช้แฟล็กบรรทัดคำสั่งเพื่อปรับแต่งการตั้งค่าคลัสเตอร์
6. ส่งงาน Spark ไปยังคลัสเตอร์ของคุณ
คุณสามารถส่งงานผ่านคำขอ Cloud Dataproc API jobs.submit
โดยใช้เครื่องมือบรรทัดคำสั่ง gcloud
หรือจากคอนโซล Google Cloud Platform นอกจากนี้ คุณยังเชื่อมต่อกับอินสแตนซ์ของเครื่องในคลัสเตอร์ได้โดยใช้ SSH แล้วเรียกใช้งานจากอินสแตนซ์
ส่งงานโดยใช้เครื่องมือ gcloud
จากบรรทัดคำสั่ง Cloud Shell:
$ 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}
งานที่ส่งล่าสุดจะอยู่ด้านบนสุดของรายการ คัดลอกรหัสงานแล้ววางในตำแหน่ง "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
2 รายการสำหรับผู้ปฏิบัติงานที่ยอมให้มีการขัดจังหวะชั่วคราวด้วย Dataproc จะแสดงสถานะคลัสเตอร์เป็น "พร้อม" ขณะที่โหนดใหม่เปิดเครื่อง
นับตั้งแต่ที่คุณเริ่มต้นด้วย 2 โหนดและตอนนี้มี 4 โหนด งาน Spark ของคุณควรทำงานเร็วขึ้นประมาณ 2 เท่า
9. SSH เข้าสู่คลัสเตอร์
เชื่อมต่อผ่าน ssh กับโหนดหลัก ซึ่งมีชื่ออินสแตนซ์เป็นชื่อคลัสเตอร์ที่มี -m
ต่อท้ายเสมอ:
$ gcloud compute ssh ${CLUSTERNAME}-m --zone=us-central1-c
ครั้งแรกที่เรียกใช้คำสั่ง ssh บน Cloud Shell คำสั่ง ssh จะสร้างคีย์ SSH สำหรับบัญชีในนั้น คุณสามารถเลือกรหัสผ่าน หรือใช้รหัสผ่านที่ว่างเปล่าในตอนนี้ และเปลี่ยนรหัสผ่านได้ในภายหลังโดยใช้ ssh-keygen
หากต้องการ
บนอินสแตนซ์ ให้ตรวจสอบชื่อโฮสต์ดังนี้
$ hostname
เนื่องจากคุณระบุ --scopes=cloud-platform
เมื่อสร้างคลัสเตอร์ คุณเรียกใช้คำสั่ง gcloud
บนคลัสเตอร์ได้ แสดงรายการคลัสเตอร์ในโปรเจ็กต์ของคุณ:
$ gcloud dataproc clusters list
ออกจากระบบการเชื่อมต่อ SSH เมื่อดำเนินการเสร็จสิ้น
$ logout
10. ตรวจสอบแท็ก
เมื่อสร้างคลัสเตอร์ คุณได้รวมตัวเลือก --tags
เพื่อเพิ่มแท็กลงในแต่ละโหนดในคลัสเตอร์ แท็กใช้เพื่อแนบกฎไฟร์วอลล์กับแต่ละโหนด คุณไม่ได้สร้างกฎไฟร์วอลล์ที่ตรงกันใน Codelab นี้ แต่คุณยังคงตรวจสอบแท็กในโหนดและกฎไฟร์วอลล์ในเครือข่ายได้
พิมพ์คำอธิบายของโหนดหลัก:
$ 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 โดยใช้ Codelab ของ Console
ใบอนุญาต
ผลงานนี้ได้รับอนุญาตภายใต้ใบอนุญาตครีเอทีฟคอมมอนส์แบบระบุแหล่งที่มา 3.0 และใบอนุญาต Apache 2.0