1. ข้อมูลเบื้องต้น - บริการที่มีการจัดการสำหรับ Apache Spark
Managed Service สำหรับ Apache Spark เป็นบริการที่มีการจัดการครบวงจรและปรับขนาดได้สูงสำหรับการเรียกใช้ Apache Spark, Apache Flink, Presto รวมถึงเครื่องมือและเฟรมเวิร์กโอเพนซอร์สอื่นๆ อีกมากมาย ใช้ Managed Service สำหรับ Apache Spark เพื่อการปรับปรุงที่เก็บข้อมูลขนาดใหญ่, ETL / ELT และวิทยาศาสตร์ข้อมูลที่ปลอดภัยในระดับโลก นอกจากนี้ Managed Service สำหรับ Apache Spark ยังผสานรวมกับบริการต่างๆ ของ Google Cloud อย่างเต็มรูปแบบ ซึ่งรวมถึง BigQuery, Cloud Storage, Gemini Enterprise Agent Engine และ Knowledge Catalog
บริการที่มีการจัดการสำหรับ Apache Spark พร้อมใช้งานในโหมดการติดตั้งใช้งาน 2 โหมด ได้แก่
- Apache Spark แบบ Serverless ที่มีการจัดการช่วยให้คุณเรียกใช้งาน PySpark ได้โดยไม่ต้องกำหนดค่าโครงสร้างพื้นฐานและการปรับขนาดอัตโนมัติ Apache Spark ที่มีการจัดการรองรับภาระงานแบบกลุ่ม PySpark และเซสชัน / Notebook
- คลัสเตอร์ Apache Spark ที่มีการจัดการช่วยให้คุณจัดการคลัสเตอร์ Hadoop YARN สำหรับเวิร์กโหลด Spark ที่ใช้ YARN นอกเหนือจากเครื่องมือโอเพนซอร์ส เช่น Flink และ Presto ได้ คุณสามารถปรับแต่งคลัสเตอร์ที่ใช้ระบบคลาวด์ด้วยการปรับขนาดแนวตั้งหรือแนวนอนได้มากเท่าที่ต้องการ รวมถึงการปรับขนาดอัตโนมัติ
2. สร้างคลัสเตอร์ Apache Spark ที่มีการจัดการใน VPC ของ Google Cloud
ในขั้นตอนนี้ คุณจะสร้างคลัสเตอร์ Apache Spark ที่มีการจัดการใน Google Cloud โดยใช้คอนโซล Google Cloud
ขั้นตอนแรก ให้เปิดใช้ API ของบริการ Apache Spark ที่มีการจัดการในคอนโซล เมื่อเปิดใช้แล้ว ให้ค้นหา "Managed Apache Spark" ในแถบค้นหา แล้วคลิกสร้างคลัสเตอร์
เลือกคลัสเตอร์ใน Compute Engine เพื่อใช้ VM ของ Google Compute Engine(GCE) เป็นโครงสร้างพื้นฐานที่สำคัญในการเรียกใช้คลัสเตอร์ Apache Spark ที่มีการจัดการ

ตอนนี้คุณอยู่ในหน้าการสร้างคลัสเตอร์แล้ว

ในหน้านี้:
- ระบุชื่อที่ไม่ซ้ำกันสำหรับคลัสเตอร์
- เลือกภูมิภาคที่เฉพาะเจาะจง คุณยังเลือกโซนได้ด้วย แต่ Apache Spark ที่มีการจัดการจะช่วยให้คุณเลือกโซนโดยอัตโนมัติได้ สำหรับ Codelab นี้ ให้เลือก "us-central1" และ "us-central1-c"
- เลือกประเภทคลัสเตอร์ "มาตรฐาน" ซึ่งจะช่วยให้มั่นใจได้ว่ามีโหนดหลัก 1 โหนด
- ในแท็บกำหนดค่าโหนด ให้ยืนยันว่าจำนวน Worker ที่สร้างจะเป็น 2
- ในส่วนปรับแต่งคลัสเตอร์ ให้เลือกช่องข้างเปิดใช้ Component Gateway ซึ่งจะช่วยให้เข้าถึงอินเทอร์เฟซเว็บในคลัสเตอร์ได้ รวมถึง Spark UI, Yarn Node Manager และ Jupyter Notebook
- ในคอมโพเนนต์ที่ไม่บังคับ ให้เลือก Jupyter Notebook ซึ่งจะกำหนดค่าคลัสเตอร์ด้วยเซิร์ฟเวอร์สมุดบันทึก Jupyter
- ปล่อยให้ส่วนอื่นๆ เป็นไปตามเดิม แล้วคลิกสร้างคลัสเตอร์
ซึ่งจะหมุนคลัสเตอร์ Apache Spark ที่มีการจัดการ
3. เปิดคลัสเตอร์และ SSH ไปยังคลัสเตอร์
เมื่อสถานะคลัสเตอร์เปลี่ยนเป็นกำลังทำงาน ให้คลิกชื่อคลัสเตอร์จากคอนโซล Apache Spark ที่มีการจัดการ

คลิกแท็บอินสแตนซ์ VM เพื่อดูโหนดหลักและโหนด Worker 2 โหนดของคลัสเตอร์

คลิก SSH ข้างโหนดหลักเพื่อเข้าสู่ระบบโหนดหลัก

เรียกใช้คำสั่ง hdfs เพื่อดูโครงสร้างไดเรกทอรี
hadoop_commands_example
sudo hadoop fs -ls /
sudo hadoop version
sudo hadoop fs -mkdir /test51
sudo hadoop fs -ls /
4. อินเทอร์เฟซของเว็บและเกตเวย์คอมโพเนนต์
จากคอนโซลคลัสเตอร์ Apache Spark ที่มีการจัดการ ให้คลิกชื่อคลัสเตอร์ แล้วคลิกแท็บ WEB INTERFACES

ซึ่งจะแสดงอินเทอร์เฟซเว็บที่ใช้ได้ รวมถึง Jupyter คลิก Jupyter เพื่อเปิดสมุดบันทึก Jupyter คุณสามารถใช้สิ่งนี้เพื่อสร้าง Notebook ใน PySpark ที่จัดเก็บไว้ใน GCS เพื่อจัดเก็บ Notebook ใน Google Cloud Storage และเปิด Notebook PySpark เพื่อใช้ใน Codelab นี้
5. ตรวจสอบและสังเกตงาน Spark
เมื่อคลัสเตอร์ Apache Spark ที่มีการจัดการพร้อมใช้งานแล้ว ให้สร้างงานแบบกลุ่ม PySpark และส่งงานไปยังคลัสเตอร์ Apache Spark ที่มีการจัดการ
สร้าง Bucket ของ Google Cloud Storage (GCS) เพื่อจัดเก็บสคริปต์ PySpark ตรวจสอบว่าได้สร้าง Bucket ในภูมิภาคเดียวกับคลัสเตอร์ Apache Spark ที่มีการจัดการ

เมื่อสร้าง Bucket ของ GCS แล้ว ให้คัดลอกไฟล์ต่อไปนี้ลงใน Bucket นี้
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 ใน Apache Spark ที่มีการจัดการ คลิกงานในเมนูการนำทางด้านซ้าย แล้วคลิกส่งงาน

ระบุรหัสงานและภูมิภาค เลือกคลัสเตอร์และระบุตำแหน่ง GCS ของสคริปต์ Spark ที่คุณคัดลอก งานนี้จะทำงานเป็นงานแบบกลุ่มของ Spark ใน Apache Spark ที่มีการจัดการ
ในส่วนพร็อพเพอร์ตี้ ให้เพิ่มคีย์ spark.submit.deployMode และค่า client เพื่อให้มั่นใจว่าไดรเวอร์จะทำงานในโหนดมาสเตอร์ Apache Spark ที่มีการจัดการ ไม่ใช่ในโหนด Worker คลิกส่งเพื่อส่งงานแบบกลุ่มไปยัง Managed Apache Spark

สคริปต์ Spark จะสร้าง DataFrame และเขียนลงในตาราง Hive test_table_1
เมื่อเรียกใช้งานสำเร็จแล้ว คุณจะเห็นคำสั่งพิมพ์ของคอนโซลในแท็บการตรวจสอบ

ตอนนี้คุณสร้างตาราง Hive แล้ว ให้ส่งงานการค้นหา Hive อีกรายการเพื่อเลือกเนื้อหาของตารางและแสดงในคอนโซล
สร้างงานอื่นที่มีพร็อพเพอร์ตี้ต่อไปนี้

โปรดสังเกตว่าประเภทงานตั้งค่าเป็น Hive และประเภทแหล่งที่มาของคําค้นหาคือข้อความค้นหา ซึ่งหมายความว่าเราจะเขียนคําสั่ง HiveQL ทั้งหมดภายในกล่องข้อความข้อความค้นหา
ส่งงานโดยเก็บพารามิเตอร์ที่เหลือเป็นค่าเริ่มต้น

สังเกตว่า HiveQL เลือกเรคคอร์ดทั้งหมดและแสดงในคอนโซลอย่างไร
6. การปรับขนาดอัตโนมัติ
การปรับขนาดอัตโนมัติคืองานในการประมาณจำนวนโหนดของผู้ปฏิบัติงานคลัสเตอร์ที่ "เหมาะสม" สำหรับเวิร์กโหลด
API Managed Apache Spark AutoscalingPolicies มีกลไกในการทำให้การจัดการทรัพยากรคลัสเตอร์เป็นแบบอัตโนมัติ และเปิดใช้การปรับขนาดอัตโนมัติของ Worker VM ของคลัสเตอร์ นโยบายการปรับขนาดอัตโนมัติเป็นการกำหนดค่าที่นำมาใช้ใหม่ได้ ซึ่งจะอธิบายว่าเครื่องมือของคลัสเตอร์ที่ใช้นโยบายการปรับขนาดอัตโนมัติควรปรับขนาดอย่างไร นโยบายดังกล่าวจะเป็นตัวกำหนดขอบเขตการปรับขนาด ความถี่ และความเข้มงวดเพื่อระบุการควบคุมทรัพยากรของคลัสเตอร์แบบละเอียดตลอดอายุการใช้งานของคลัสเตอร์
นโยบายการปรับขนาดอัตโนมัติของ Apache Spark ที่มีการจัดการจะเขียนโดยใช้ไฟล์ YAML และไฟล์ YAML เหล่านี้จะส่งในคำสั่ง CLI สำหรับการสร้างคลัสเตอร์ หรือเลือกจาก Bucket ใน GCS เมื่อสร้างคลัสเตอร์จาก Cloud Console
ตัวอย่างนโยบายการปรับขนาดอัตโนมัติของ Apache Spark ที่มีการจัดการมีดังนี้
policy.yaml
workerConfig:
minInstances: 10
maxInstances: 10
secondaryWorkerConfig:
maxInstances: 50
basicAlgorithm:
cooldownPeriod: 4m
yarnConfig:
scaleUpFactor: 0.05
scaleDownFactor: 1.0
gracefulDecommissionTimeout: 1h
7. กำหนดค่าคอมโพเนนต์ที่ไม่บังคับของ Apache Spark ที่มีการจัดการ
ซึ่งจะหมุนคลัสเตอร์ Apache Spark ที่มีการจัดการ
เมื่อสร้างคลัสเตอร์ Apache Spark ที่มีการจัดการ ระบบจะติดตั้งคอมโพเนนต์ของระบบนิเวศ Apache Hadoop มาตรฐานในคลัสเตอร์โดยอัตโนมัติ (ดูรายการเวอร์ชัน Apache Spark ที่มีการจัดการ) คุณสามารถติดตั้งคอมโพเนนต์เพิ่มเติมที่เรียกว่าคอมโพเนนต์ที่ไม่บังคับในคลัสเตอร์ได้เมื่อสร้างคลัสเตอร์

ขณะสร้างคลัสเตอร์ Apache Spark ที่มีการจัดการจากคอนโซล เราได้เปิดใช้คอมโพเนนต์ที่ไม่บังคับและเลือก Jupyter Notebook เป็นคอมโพเนนต์ที่ไม่บังคับ
8. ล้างข้อมูลทรัพยากร
หากต้องการล้างข้อมูลคลัสเตอร์ ให้คลิกหยุดหลังจากเลือกคลัสเตอร์จากคอนโซล Apache Spark ที่มีการจัดการ เมื่อคลัสเตอร์หยุดทำงานแล้ว ให้คลิกลบเพื่อลบคลัสเตอร์
หลังจากลบคลัสเตอร์ Apache Spark ที่มีการจัดการแล้ว ให้ลบบัคเก็ต GCS ที่คัดลอกโค้ดไว้
หากต้องการล้างข้อมูลทรัพยากรและหยุดการเรียกเก็บเงินที่ไม่ต้องการ คุณต้องหยุดคลัสเตอร์ Apache Spark ที่มีการจัดการก่อน แล้วจึงลบ
ก่อนหยุดและลบคลัสเตอร์ ให้ตรวจสอบว่าได้คัดลอกข้อมูลทั้งหมดที่เขียนลงในที่เก็บข้อมูล HDFS ไปยัง GCS เพื่อการจัดเก็บที่ทนทานแล้ว
หากต้องการหยุดคลัสเตอร์ ให้คลิกหยุด

เมื่อคลัสเตอร์หยุดทำงานแล้ว ให้คลิกลบเพื่อลบคลัสเตอร์
ในกล่องโต้ตอบยืนยัน ให้คลิกลบเพื่อลบคลัสเตอร์
