การจัดสรรและการใช้คลัสเตอร์ Hadoop/Spark ที่มีการจัดการด้วย Cloud Dataproc (บรรทัดคำสั่ง)

1. ภาพรวม

Cloud Dataproc คือบริการ Spark และ Hadoop ที่มีการจัดการ ซึ่งให้คุณใช้ประโยชน์จากเครื่องมือข้อมูลโอเพนซอร์สสำหรับการประมวลผลแบบกลุ่ม การค้นหา สตรีมมิง และแมชชีนเลิร์นนิง การทำงานอัตโนมัติของ Cloud Dataproc ช่วยให้คุณสร้างคลัสเตอร์ได้อย่างรวดเร็ว จัดการได้อย่างง่ายดาย และประหยัดเงินโดยการปิดคลัสเตอร์เมื่อไม่จำเป็นต้องใช้ ด้วยเวลาและเงินที่น้อยลงสำหรับการดูแล คุณสามารถมุ่งเน้นไปที่งานและข้อมูลของคุณได้

บทแนะนำนี้ดัดแปลงมาจาก https://cloud.google.com/dataproc/overview

สิ่งที่คุณจะได้เรียนรู้

  • วิธีสร้างคลัสเตอร์ Cloud Dataproc ที่มีการจัดการ (ที่ติดตั้ง Apache Spark ล่วงหน้า)
  • วิธีส่งงาน Spark
  • วิธีปรับขนาดคลัสเตอร์
  • วิธี SSH ลงในโหนดหลักของคลัสเตอร์ Dataproc
  • วิธีใช้ gcloud เพื่อตรวจสอบคลัสเตอร์ งาน และกฎไฟร์วอลล์
  • วิธีปิดคลัสเตอร์

สิ่งที่คุณต้องมี

  • เบราว์เซอร์ เช่น Chrome หรือ Firefox

คุณจะใช้บทแนะนำนี้อย่างไร

อ่านเท่านั้น อ่านและทำแบบฝึกหัด

คุณจะให้คะแนนความพึงพอใจสำหรับประสบการณ์การใช้บริการ Google Cloud Platform อย่างไร

มือใหม่ ระดับกลาง ผู้ชำนาญ

2. การตั้งค่าและข้อกำหนด

การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก

  1. ลงชื่อเข้าใช้ Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ (หากยังไม่มีบัญชี Gmail หรือ G Suite คุณต้องสร้างบัญชี)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนมีคนใช้แล้ว และจะใช้ไม่ได้ ขออภัย) และจะมีการอ้างอิงใน Codelab ว่า PROJECT_ID ในภายหลัง

  1. ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud

การใช้งาน Codelab นี้น่าจะไม่มีค่าใช้จ่ายใดๆ หากมี ตรวจสอบว่าคุณได้ทำตามวิธีการใน "การล้างข้อมูล" ซึ่งจะแนะนำคุณเกี่ยวกับวิธีปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ผู้ใช้ใหม่ของ Google Cloud จะมีสิทธิ์เข้าร่วมโปรแกรมทดลองใช้ฟรี$300 USD

3. เปิดใช้ Cloud Dataproc และ Google Compute Engine API

คลิกไอคอนเมนูที่ด้านซ้ายบนของหน้าจอ

2bfc27ef9ba2ec7d.png

เลือกตัวจัดการ API จากเมนูแบบเลื่อนลง

408af5f32c4b7c25.png

คลิกเปิดใช้ API และบริการ

a9c0e84296a7ba5b.png

ค้นหา "Compute Engine" ในช่องค้นหา คลิกที่ "Google Compute Engine API" ในรายการผลลัพธ์ที่ปรากฏขึ้น

b6adf859758d76b3.png

คลิกเปิดใช้ในหน้า Google Compute Engine

da5584a1cbc77104.png

เมื่อเปิดใช้แล้ว ให้คลิกลูกศรที่ชี้ไปทางซ้ายเพื่อย้อนกลับ

ค้นหา "Google Cloud Dataproc API" และเปิดใช้ด้วย

f782195d8e3d732a.png

4. เริ่มต้น Cloud Shell

เครื่องเสมือนแบบ Debian นี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่ทำงานอย่างต่อเนื่องใน Google Cloud ซึ่งจะช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก ซึ่งหมายความว่าสิ่งที่คุณต้องมีสำหรับ Codelab นี้คือเบราว์เซอร์ (ใช่แล้ว ทั้งหมดนี้ทำงานได้บน Chromebook)

  1. หากต้องการเปิดใช้งาน Cloud Shell จาก Cloud Console เพียงคลิกเปิดใช้งาน Cloud Shell fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q (จะใช้เวลาเพียงไม่นานในการจัดสรรและเชื่อมต่อกับสภาพแวดล้อม)

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

Screen Shot 14-06-2017 เวลา 22.13.43 น.

เมื่อเชื่อมต่อกับ 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

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

Cloud Shell ยังตั้งค่าตัวแปรสภาพแวดล้อมโดยค่าเริ่มต้นด้วย ซึ่งอาจเป็นประโยชน์เมื่อคุณเรียกใช้คำสั่งในอนาคต

echo $GOOGLE_CLOUD_PROJECT

เอาต์พุตจากคำสั่ง

<PROJECT_ID>
  1. สุดท้าย ให้ตั้งค่าโซนและการกำหนดค่าโปรเจ็กต์เริ่มต้น
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

493928df54f61386.png

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

ดูข้อมูลเพิ่มเติม

ใบอนุญาต

ผลงานนี้ได้รับอนุญาตภายใต้ใบอนุญาตครีเอทีฟคอมมอนส์แบบระบุแหล่งที่มา 3.0 และใบอนุญาต Apache 2.0