1. ข้อมูลเบื้องต้น - Google Dataproc
Dataproc เป็นบริการที่มีการจัดการครบวงจรและรองรับการปรับขนาดได้สูงสำหรับการเรียกใช้ Apache Spark, Apache Flink, Presto รวมถึงเครื่องมือและเฟรมเวิร์กโอเพนซอร์สอื่นๆ อีกมากมาย ใช้ Dataproc สำหรับการปรับที่เก็บข้อมูลขนาดใหญ่ให้ทันสมัย, ETL / ELT และวิทยาศาสตร์ข้อมูลที่ปลอดภัยในสเกลระดับโลก นอกจากนี้ Dataproc ยังผสานรวมกับบริการ Google Cloud มากมายอย่างเต็มรูปแบบ ซึ่งรวมถึง BigQuery, Cloud Storage, Vertex AI และ Dataplex
Dataproc มี 3 รสชาติ ได้แก่
- Dataproc Serverless ช่วยให้คุณเรียกใช้งาน PySpark ได้โดยไม่ต้องกำหนดค่าโครงสร้างพื้นฐานและการปรับขนาดอัตโนมัติ Dataproc Serverless รองรับภาระงานแบบกลุ่มและเซสชัน / สมุดบันทึกของ PySpark
- Dataproc บน Google Compute Engine ช่วยให้คุณจัดการคลัสเตอร์ Hadoop YARN สำหรับภาระงาน Spark ที่ใช้ YARN นอกเหนือจากเครื่องมือโอเพนซอร์ส เช่น Flink และ Presto คุณปรับแต่งคลัสเตอร์ในระบบคลาวด์ด้วยการปรับขนาดแนวตั้งหรือแนวนอนได้มากเท่าที่ต้องการ รวมถึงการปรับขนาดอัตโนมัติ
- Dataproc บน Google Kubernetes Engine ช่วยให้คุณกำหนดค่าคลัสเตอร์เสมือนของ Dataproc ในโครงสร้างพื้นฐาน GKE เพื่อส่งงาน Spark, PySpark, SparkR หรือ Spark SQL
2. สร้างคลัสเตอร์ Dataproc บน Google Cloud VPC
ในขั้นตอนนี้ คุณจะต้องสร้างคลัสเตอร์ Dataproc บน Google Cloud โดยใช้คอนโซล Google Cloud
ในขั้นแรก ให้เปิดใช้ Dataproc Service API บนคอนโซล เมื่อเปิดใช้แล้ว ให้ค้นหา "Dataproc" ในแถบค้นหา แล้วคลิกสร้างคลัสเตอร์
เลือกคลัสเตอร์บน Compute Engine เพื่อใช้ VM ของ Google Compute Engine(GCE) เป็นโครงสร้างพื้นฐานสำคัญเพื่อเรียกใช้คลัสเตอร์ Dataproc
ตอนนี้คุณอยู่ในหน้าการสร้างคลัสเตอร์แล้ว
ในหน้านี้:
- ระบุชื่อที่ไม่ซ้ำกันสำหรับคลัสเตอร์
- เลือกภูมิภาคที่เฉพาะเจาะจง คุณอาจเลือกโซนก็ได้ แต่ Dataproc ก็มีความสามารถในการเลือกโซนให้คุณโดยอัตโนมัติ สำหรับ Codelab นี้ ให้เลือก "us-central1" และ "us-central1-c"
- เลือกช่องทำเครื่องหมาย "มาตรฐาน" ประเภทคลัสเตอร์ ซึ่งช่วยให้มั่นใจว่ามีโหนดหลัก 1 โหนด
- ในแท็บกำหนดค่าโหนด ให้ยืนยันว่าจำนวนผู้ปฏิบัติงานที่สร้างขึ้นจะเท่ากับ 2
- ในส่วนปรับแต่งคลัสเตอร์ ให้เลือกช่องข้างเปิดใช้เกตเวย์คอมโพเนนต์ การดำเนินการนี้จะช่วยให้เข้าถึงอินเทอร์เฟซเว็บบนคลัสเตอร์ได้ ซึ่งรวมถึง Spark UI, Yarn Node Manager และสมุดบันทึก Jupyter
- ในคอมโพเนนต์ที่ไม่บังคับ ให้เลือก Jupyter Notebook ซึ่งจะเป็นการกำหนดค่าคลัสเตอร์ด้วยเซิร์ฟเวอร์สมุดบันทึก Jupyter
- ปล่อยทุกอย่างไว้ตามเดิม แล้วคลิกสร้างคลัสเตอร์
การดำเนินการนี้จะสร้างคลัสเตอร์ Dataproc
3. เปิดคลัสเตอร์และ SSH ลงในคลัสเตอร์
เมื่อสถานะคลัสเตอร์เปลี่ยนเป็นกำลังทำงาน ให้คลิกชื่อคลัสเตอร์จากคอนโซล Dataproc
คลิกแท็บอินสแตนซ์ VM เพื่อดูโหนดหลักและโหนดผู้ปฏิบัติงาน 2 โหนดของคลัสเตอร์
คลิกที่ SSH ข้างโหนดหลักเพื่อเข้าสู่ระบบโหนดหลัก
เรียกใช้คำสั่ง hdfs เพื่อดูโครงสร้างไดเรกทอรี
hadoop_commands_example
sudo hadoop fs -ls /
sudo hadoop version
sudo hadoop fs -mkdir /test51
sudo hadoop fs -ls /
4. เว็บอินเทอร์เฟซและเกตเวย์คอมโพเนนต์
คลิกชื่อคลัสเตอร์จากคอนโซลคลัสเตอร์ Dataproc แล้วคลิกแท็บอินเทอร์เฟซบนเว็บ
ซึ่งจะแสดงอินเทอร์เฟซเว็บที่พร้อมใช้งาน รวมถึง Jupyter คลิก Jupyter เพื่อเปิดสมุดบันทึก Jupyter คุณใช้ตัวเลือกนี้เพื่อสร้างสมุดบันทึกใน PySpark ที่จัดเก็บใน GCS ได้ เพื่อจัดเก็บสมุดบันทึกบน Google Cloud Storage และเปิดสมุดบันทึก PySpark เพื่อใช้ใน Codelab นี้
5. ตรวจสอบและติดตามงาน Spark
เมื่อคลัสเตอร์ Dataproc เริ่มทำงานแล้ว ให้สร้างงานกลุ่ม PySpark และส่งงานไปยังคลัสเตอร์ Dataproc
สร้างที่เก็บข้อมูล Google Cloud Storage (GCS) เพื่อจัดเก็บสคริปต์ PySpark โปรดสร้างที่เก็บข้อมูลในภูมิภาคเดียวกับคลัสเตอร์ Dataproc
เมื่อสร้างที่เก็บข้อมูล GCS แล้ว ให้คัดลอกไฟล์ต่อไปนี้ลงในที่เก็บข้อมูลนี้
https://raw.githubusercontent.com/diptimanr/spark-on-gce/main/test-spark-1.py
สคริปต์นี้สร้างตัวอย่าง Spark DataFrame และเขียนเป็นตาราง Hive
hive_job.py
from pyspark.sql import SparkSession
from datetime import datetime, date
from pyspark.sql import Row
spark = SparkSession.builder.master("local").enableHiveSupport().getOrCreate()
df = spark.createDataFrame([ (1, 2., 'string1', date(2000, 1, 1), datetime(2000, 1, 1, 12, 0)),
(2, 3., 'string2', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)), (3, 4., 'string3', date(2000, 3, 1), datetime(2000, 1, 3, 12, 0))
], schema='a long, b double, c string, d date, e timestamp')
print("..... Writing data .....")
df.write.mode("overwrite").saveAsTable("test_table_1")
print("..... Complete .....")
ส่งสคริปต์นี้เป็นงานแบบกลุ่ม Spark ใน Dataproc คลิกงานในเมนูการนำทางด้านซ้าย แล้วคลิกส่งงาน
ระบุรหัสงานและภูมิภาค เลือกคลัสเตอร์และระบุตำแหน่ง GCS ของสคริปต์ Spark ที่คุณคัดลอกไว้ งานนี้จะเรียกใช้เป็นงานแบบกลุ่ม Spark บน Dataproc
ในส่วนพร็อพเพอร์ตี้ ให้เพิ่มคีย์ spark.submit.deployMode
และค่า client
เพื่อให้มั่นใจว่าไดรเวอร์จะทำงานในโหนดหลักของ Dataproc ไม่ใช่ในโหนดของผู้ปฏิบัติงาน คลิกส่งเพื่อส่งงานแบบกลุ่มไปยัง Dataproc
สคริปต์ Spark จะสร้าง Dataframe และเขียนไปยังตาราง Hive test_table_1
เมื่องานทำงานเสร็จสมบูรณ์แล้ว คุณสามารถดูคำสั่งการพิมพ์ของคอนโซลใต้แท็บการตรวจสอบ
ตอนนี้เมื่อสร้างตาราง Hive แล้ว ให้ส่งงานการค้นหาของ Hive อีกงานเพื่อเลือกเนื้อหาของตารางและจะแสดงในคอนโซล
สร้างงานอื่นด้วยพร็อพเพอร์ตี้ต่อไปนี้
โปรดสังเกตว่าประเภทงานได้รับการตั้งค่าเป็น Hive และประเภทของแหล่งที่มาของคำค้นหาคือข้อความค้นหา ซึ่งหมายความว่าเราจะเขียนคำสั่ง HiveQL ทั้งหมดภายในช่องข้อความข้อความค้นหา
ส่งงานโดยเก็บพารามิเตอร์ที่เหลือไว้เป็นค่าเริ่มต้น
สังเกตวิธีที่ HiveQL เลือกระเบียนทั้งหมดและแสดงในคอนโซล
6. การปรับขนาดอัตโนมัติ
การปรับขนาดอัตโนมัติเป็นงานเกี่ยวกับการประมาณ "ที่เหมาะสม" จำนวนโหนดของผู้ปฏิบัติงานคลัสเตอร์สำหรับภาระงาน
Dataproc AutoscalingPolicies API มีกลไกสำหรับการทำให้การจัดการทรัพยากรคลัสเตอร์เป็นแบบอัตโนมัติและเปิดใช้การปรับขนาด VM ของผู้ปฏิบัติงานคลัสเตอร์อัตโนมัติ นโยบายการปรับขนาดอัตโนมัติเป็นการกำหนดค่าที่นำมาใช้ใหม่ได้ ซึ่งจะอธิบายว่าผู้ปฏิบัติงานของคลัสเตอร์ที่ใช้นโยบายการปรับขนาดอัตโนมัติควรปรับขนาดอย่างไร นโยบายดังกล่าวจะเป็นตัวกำหนดขอบเขตการปรับขนาด ความถี่ และความเข้มงวดเพื่อระบุการควบคุมทรัพยากรของคลัสเตอร์แบบละเอียดตลอดอายุการใช้งานของคลัสเตอร์
นโยบายการปรับขนาดอัตโนมัติของ Dataproc ถูกเขียนโดยใช้ไฟล์ YAML และส่งไฟล์ YAML เหล่านี้ด้วยคำสั่ง CLI สำหรับการสร้างคลัสเตอร์หรือเลือกจากที่เก็บข้อมูล GCS เมื่อมีการสร้างคลัสเตอร์จาก Cloud Console
ต่อไปนี้คือตัวอย่างของนโยบายการปรับขนาดอัตโนมัติสำหรับ Dataproc
policy.yaml
workerConfig:
minInstances: 10
maxInstances: 10
secondaryWorkerConfig:
maxInstances: 50
basicAlgorithm:
cooldownPeriod: 4m
yarnConfig:
scaleUpFactor: 0.05
scaleDownFactor: 1.0
gracefulDecommissionTimeout: 1h
7. กำหนดค่าคอมโพเนนต์ที่ไม่บังคับของ Dataproc
การดำเนินการนี้จะสร้างคลัสเตอร์ Dataproc
เมื่อสร้างคลัสเตอร์ Dataproc ระบบจะติดตั้งคอมโพเนนต์ระบบนิเวศ Apache Hadoop มาตรฐานบนคลัสเตอร์โดยอัตโนมัติ (ดูรายการเวอร์ชันของ Dataproc) คุณติดตั้งคอมโพเนนต์เพิ่มเติมที่เรียกว่าคอมโพเนนต์ที่ไม่บังคับบนคลัสเตอร์ได้เมื่อสร้างคลัสเตอร์
ขณะสร้างคลัสเตอร์ Dataproc จากคอนโซล เราได้เปิดใช้คอมโพเนนต์ที่ไม่บังคับและเลือก Jupyter Notebook เป็นคอมโพเนนต์ที่ไม่บังคับ
8. ล้างทรัพยากร
หากต้องการล้างคลัสเตอร์ ให้คลิกหยุดหลังจากเลือกคลัสเตอร์จากคอนโซล Dataproc เมื่อคลัสเตอร์หยุดแล้ว ให้คลิกลบเพื่อลบคลัสเตอร์
หลังจากลบคลัสเตอร์ Dataproc แล้ว ให้ลบที่เก็บข้อมูล GCS ที่มีการคัดลอกโค้ด
หากต้องการล้างทรัพยากรและหยุดการเรียกเก็บเงินที่ไม่ต้องการ ให้หยุดคลัสเตอร์ Dataproc ก่อนแล้วจึงลบ
ก่อนหยุดและลบคลัสเตอร์ โปรดตรวจสอบว่าได้คัดลอกข้อมูลทั้งหมดที่เขียนลงในพื้นที่เก็บข้อมูล HDFS ไปยัง GCS เพื่อพื้นที่เก็บข้อมูลที่คงทน
หากต้องการหยุดคลัสเตอร์ ให้คลิกหยุด
เมื่อคลัสเตอร์หยุดแล้ว ให้คลิกลบเพื่อลบคลัสเตอร์
ในกล่องโต้ตอบการยืนยัน ให้คลิกลบเพื่อลบคลัสเตอร์