Dataproc در موتور محاسباتی گوگل

1. مقدمه - Google Dataproc

Dataproc یک سرویس کاملاً مدیریت شده و بسیار مقیاس پذیر برای اجرای Apache Spark، Apache Flink، Presto و بسیاری دیگر از ابزارها و فریم ورک های منبع باز است. از Dataproc برای نوسازی دریاچه داده، ETL / ELT و علم داده ایمن در مقیاس سیاره استفاده کنید. Dataproc همچنین به طور کامل با چندین سرویس Google Cloud از جمله BigQuery ، Cloud Storage ، Vertex AI و Dataplex یکپارچه شده است.

Dataproc در سه طعم موجود است:

  • Dataproc Serverless به شما اجازه می دهد تا کارهای PySpark را بدون نیاز به پیکربندی زیرساخت و مقیاس خودکار اجرا کنید. Dataproc Serverless از بارهای کاری دسته ای PySpark و جلسات / نوت بوک ها پشتیبانی می کند.
  • Dataproc در موتور محاسباتی Google به شما امکان می دهد تا علاوه بر ابزارهای منبع باز مانند Flink و Presto، یک کلاستر Hadoop YARN را برای بارهای کاری Spark مبتنی بر YARN مدیریت کنید. می‌توانید خوشه‌های مبتنی بر ابر خود را با مقیاس‌بندی عمودی یا افقی که می‌خواهید، از جمله مقیاس‌بندی خودکار، تنظیم کنید.
  • Dataproc در Google Kubernetes Engine به شما اجازه می دهد تا خوشه های مجازی Dataproc را در زیرساخت GKE خود برای ارسال کارهای Spark، PySpark، SparkR یا Spark SQL پیکربندی کنید.

2. یک کلاستر Dataproc در Google Cloud VPC ایجاد کنید

در این مرحله با استفاده از کنسول Google Cloud یک کلاستر Dataproc در گوگل کلود ایجاد می کنید.

به عنوان اولین قدم، API سرویس Dataproc را در کنسول فعال کنید. پس از فعال شدن، "Dataproc" را در نوار جستجو جستجو کنید و روی Create Cluster کلیک کنید.

Cluster on Compute Engine را انتخاب کنید تا از ماشین های مجازی Google Compute Engine (GCE) به عنوان زیرساخت زیربنایی برای اجرای خوشه های Dataproc استفاده کنید.

a961b2e8895e88da.jpeg

اکنون در صفحه ایجاد کلاستر هستید.

9583c91204a09c12.jpeg

در این صفحه:

  • یک نام منحصر به فرد برای خوشه ارائه دهید.
  • منطقه خاص را انتخاب کنید. شما همچنین می توانید یک Zone را انتخاب کنید، با این حال، Dataproc این امکان را فراهم می کند که به طور خودکار یکی را برای شما انتخاب کند. برای این کد، "us-central1" و "us-central1-c" را انتخاب کنید.
  • نوع خوشه "استاندارد" را انتخاب کنید. این تضمین می کند که یک گره اصلی وجود دارد.
  • در تب Configure nodes تأیید کنید که تعداد کارگران ایجاد شده دو نفر باشد.
  • در بخش Customize cluster ، کادر کنار Enable Component Gateway را علامت بزنید. این امکان دسترسی به رابط‌های وب روی خوشه از جمله Spark UI، Yarn Node Manager و نوت‌بوک‌های Jupyter را فراهم می‌کند.
  • در قسمت Optional Components ، Jupyter Notebook را انتخاب کنید. این خوشه را با یک سرور نوت بوک Jupyter پیکربندی می کند.
  • بقیه موارد را همانطور که هست رها کنید و روی Create Cluster کلیک کنید.

این یک خوشه Dataproc را ایجاد می کند.

3. Cluster و SSH را در آن راه اندازی کنید

هنگامی که وضعیت کلاستر به Running تغییر کرد، روی نام کلاستر از کنسول Dataproc کلیک کنید.

7332f1c2cb25807d.jpeg

برای مشاهده گره اصلی و دو گره کارگر خوشه، روی تب VM Instance کلیک کنید.

25be1578e00f669f.jpeg

روی SSH در کنار گره اصلی کلیک کنید تا وارد گره اصلی شوید.

2810ffd97f315bdb.jpeg

دستورات hdfs را اجرا کنید تا ساختار دایرکتوری را ببینید.

hadoop_commands_example

sudo hadoop fs -ls /
sudo hadoop version
sudo hadoop fs -mkdir /test51 
sudo hadoop fs -ls /

4. رابط های وب و دروازه های کامپوننت

از کنسول کلاستر Dataproc روی نام خوشه خود کلیک کنید، سپس روی تب WEB INTERFACES کلیک کنید.

6398f71d6293d6ff.jpeg

این رابط های وب موجود، از جمله Jupyter را نشان می دهد. روی Jupyter کلیک کنید تا یک دفترچه یادداشت Jupyter باز شود. می توانید از این برای ایجاد نوت بوک در PySpark ذخیره شده در GCS استفاده کنید. برای ذخیره نوت بوک خود در Google Cloud Storage و باز کردن یک نوت بوک PySpark برای استفاده در این کد لبه.

5. جابز اسپارک را نظارت و مشاهده کنید

با راه اندازی و اجرای خوشه Dataproc، یک کار دسته ای PySpark ایجاد کنید و کار را به خوشه Dataproc ارسال کنید.

یک سطل Google Cloud Storage (GCS) برای ذخیره اسکریپت PySpark ایجاد کنید . اطمینان حاصل کنید که سطل را در همان منطقه ای که کلاستر Dataproc ایجاد کرده اید.

679fd2f76806f4e2.jpeg

اکنون که سطل 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 ارسال کنید. در منوی ناوبری سمت چپ روی Jobs کلیک کنید و سپس روی Submit Job کلیک کنید

5767fc7c50b706d3.jpeg

یک شناسه شغلی و منطقه ارائه دهید. خوشه خود را انتخاب کنید و مکان GCS اسکریپت Spark را که کپی کردید ارائه دهید. این کار به عنوان یک کار دسته ای Spark در Dataproc اجرا می شود.

در قسمت Properties کلید spark.submit.deployMode و ارزش client را اضافه کنید تا مطمئن شوید که درایور در گره اصلی Dataproc اجرا می شود نه در گره های کارگر. برای ارسال کار دسته ای به Dataproc روی ارسال کلیک کنید.

a7ca90f5132faa31.jpeg

اسکریپت Spark یک Dataframe ایجاد می کند و در جدول Hive test_table_1 می نویسد.

هنگامی که کار با موفقیت اجرا شد، می توانید بیانیه های چاپ کنسول را در زیر تب Monitoring مشاهده کنید.

bdec2f3ae1055f9.jpeg

اکنون که جدول Hive ایجاد شده است، یک شغل Hive query دیگر برای انتخاب محتوای جدول و نمایش در کنسول ارسال کنید.

یک کار دیگر با ویژگی های زیر ایجاد کنید:

c16f02d1b3afaa27.jpeg

توجه داشته باشید که Job Type روی Hive تنظیم شده است و نوع منبع پرس و جو Query Text است، به این معنی که کل عبارت HiveQL را در جعبه متن Query Text می نویسیم.

کار را با حفظ بقیه پارامترها به عنوان پیش فرض ارسال کنید.

e242e50bc2519bf4.jpeg

توجه کنید که HiveQL چگونه تمام رکوردها و نمایش‌های روی کنسول را انتخاب می‌کند.

6. مقیاس خودکار

مقیاس خودکار وظیفه تخمین تعداد "درست" گره های کارگر خوشه برای بار کاری است.

Dataproc AutoscalingPolicies API مکانیزمی برای خودکارسازی مدیریت منابع خوشه ای فراهم می کند و مقیاس خودکار VM کارگر کلاستر را قادر می سازد. یک خط‌مشی مقیاس‌پذیری خودکار یک پیکربندی قابل استفاده مجدد است که توضیح می‌دهد چگونه کارگران خوشه‌ای که از خط‌مشی مقیاس‌بندی خودکار استفاده می‌کنند، باید مقیاس شوند. مرزهای مقیاس بندی، فرکانس و تهاجمی را برای ارائه کنترل دقیق بر منابع خوشه در طول عمر خوشه تعریف می کند.

خط‌مشی‌های مقیاس خودکار Dataproc با استفاده از فایل‌های YAML نوشته می‌شوند و این فایل‌های YAML یا در دستور CLI برای ایجاد خوشه ارسال می‌شوند یا زمانی که یک خوشه از کنسول Cloud ایجاد می‌شود، از یک سطل GCS انتخاب می‌شوند.

در اینجا یک نمونه از سیاست مقیاس خودکار 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 مراجعه کنید). هنگام ایجاد خوشه می توانید اجزای اضافی به نام Optional Components را روی خوشه نصب کنید.

e39cc34245af3f01.jpeg

هنگام ایجاد کلاستر Dataproc از کنسول، اجزای اختیاری را فعال کرده ایم و Jupyter Notebook را به عنوان جزء اختیاری انتخاب کرده ایم.

8. منابع را پاکسازی کنید

برای پاکسازی کلاستر، پس از انتخاب خوشه از کنسول Dataproc، روی Stop کلیک کنید. هنگامی که خوشه متوقف شد، روی Delete کلیک کنید تا خوشه حذف شود.

پس از حذف کلاستر Dataproc، سطل های GCS را که کد در آن کپی شده است حذف کنید.

برای پاکسازی منابع و جلوگیری از هرگونه صورتحساب ناخواسته، ابتدا باید کلاستر Dataproc متوقف شود و سپس حذف شود.

قبل از توقف و حذف خوشه، مطمئن شوید که تمام داده های نوشته شده در حافظه HDFS برای ذخیره سازی بادوام در GCS کپی شده است.

برای توقف خوشه، روی توقف کلیک کنید.

52065de928ab52e7.jpeg

هنگامی که خوشه متوقف شد، روی Delete کلیک کنید تا خوشه حذف شود.

در گفتگوی تایید، روی Delete کلیک کنید تا خوشه حذف شود.

52065de928ab52e7.jpeg