Google Compute Engine'de Dataproc

1. Giriş - Google Dataproc

Dataproc; Apache Spark, Apache Flink, Presto ve diğer birçok açık kaynak aracı ve çerçeveyi çalıştırmak için tümüyle yönetilen ve yüksek düzeyde ölçeklenebilir bir hizmettir. Dataproc'u geniş ölçekte veri gölü modernizasyonu, ETL / ELT ve güvenli veri bilimi için kullanın. Dataproc ayrıca BigQuery, Cloud Storage, Vertex AI ve Dataplex gibi çeşitli Google Cloud hizmetleriyle tamamen entegredir.

Dataproc üç çeşidiyle sunulur:

  • Dataproc Sunucusuz, altyapı ve otomatik ölçeklendirme yapılandırmaya gerek kalmadan PySpark işlerini çalıştırmanıza olanak tanır. Dataproc Serverless, PySpark toplu iş yüklerini ve oturumları / not defterlerini destekler.
  • Google Compute Engine'de Dataproc, Flink ve Presto gibi açık kaynaklı araçlara ek olarak YARN tabanlı Spark iş yükleri için bir Hadoop YARN kümesini yönetmenize olanak tanır. Otomatik ölçeklendirme de dahil olmak üzere bulut tabanlı kümelerinizi istediğiniz kadar dikey veya yatay ölçeklendirme ile uyarlayabilirsiniz.
  • Google Kubernetes Engine'de Dataproc; Spark, PySpark, SparkR veya Spark SQL işlerini göndermek için GKE altyapınızdaki Dataproc sanal kümelerini yapılandırmanıza olanak tanır.

2. Google Cloud VPC'de Dataproc Kümesi oluşturma

Bu adımda, Google Cloud konsolunu kullanarak Google Cloud'da Dataproc kümesi oluşturacaksınız.

İlk adım olarak konsolda Dataproc hizmeti API'sini etkinleştirin. Etkinleştirdikten sonra "Dataproc" araması yapın. yazıp Küme Oluştur'u tıklayın.

Compute Engine'de küme'yi seçerek Dataproc kümelerini çalıştırmak için temel altyapı olarak Google Compute Engine(GCE) sanal makinelerini kullanın.

a961b2e8895e88da.jpeg

Artık Küme Oluşturma sayfasındasınız.

9583c91204a09c12.jpeg

Bu sayfada:

  • Küme için benzersiz bir ad sağlayın.
  • İlgili bölgeyi seçin. Dilerseniz alt bölge de seçebilirsiniz ancak Dataproc, sizin için otomatik olarak bir alt bölge seçme olanağı sunar. Bu codelab için "us-central1" öğesini seçin ve "us-central1-c"..
  • "Standart"ı seçin Küme türü. Bu, bir ana düğüm olmasını sağlar.
  • Düğümleri yapılandır sekmesinde, oluşturulan çalışan sayısının iki olacağını onaylayın.
  • Kümeyi özelleştir bölümünde, Bileşen Ağ Geçidini Etkinleştir'in yanındaki kutuyu işaretleyin. Bu işlem; Spark Kullanıcı Arayüzü, Yarn Düğüm Yöneticisi ve Jupyter not defterleri gibi kümedeki web arayüzlerine erişim sağlar.
  • Optional Bileşenler'de Jupyter Notebook'u seçin. Bu işlem, kümeyi bir Jupyter not defteri sunucusuyla yapılandırır.
  • Diğer her şeyi olduğu gibi bırakın ve Küme Oluştur'u tıklayın.

Bu işlem bir Dataproc kümesi başlatır.

3. Kümeyi başlatın ve bunun için SSH kullanın

Küme durumu Çalışıyor olarak değiştiğinde, Dataproc konsolunda küme adını tıklayın.

7332f1c2cb25807d.jpeg

Ana düğümü ve kümenin iki çalışma düğümünü görüntülemek için Sanal Makine Örneği sekmesini tıklayın.

25be1578e00f669f.jpeg

Ana düğüme giriş yapmak için ana düğümün yanındaki SSH'yi tıklayın.

2810ffd97f315bdb.jpeg

Dizin yapısını görmek için hdfs komutlarını çalıştırın.

hadoop_commands_example

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

4. Web Arayüzleri ve Bileşen Ağ Geçitleri

Dataproc kümesi konsolunda kümenizin adını ve ardından WEB ARAYÜZLERİ sekmesini tıklayın.

6398f71d6293d6ff.jpeg

Burada, Jupyter de dahil olmak üzere kullanılabilir web arayüzleri gösterilmektedir. Bir Jupyter not defterini açmak için Jupyter'i tıklayın. Bunu, PySpark'ta GCS'de depolanan not defterleri oluşturmak için kullanabilirsiniz. not defterinizi Google Cloud Storage'da depolayın ve bu codelab'de kullanmak üzere bir PySpark not defteri açın.

5. Spark İşlerini İzleme ve Gözlem

Dataproc kümesi çalışır hale geldiğinde bir PySpark toplu işi oluşturun ve işi Dataproc kümesine gönderin.

PySpark komut dosyasını depolamak için bir Google Cloud Storage (GCS) paketi oluşturun. Paketi Dataproc kümesiyle aynı bölgede oluşturduğunuzdan emin olun.

679fd2f76806f4e2.jpeg

GCS paketi oluşturulduğuna göre aşağıdaki dosyayı bu pakete kopyalayın.

https://raw.githubusercontent.com/diptimanr/spark-on-gce/main/test-spark-1.py

Bu komut dosyası örnek bir Spark DataFrame oluşturur ve bunu Hive tablosu olarak yazar.

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 .....")

Bu komut dosyasını Dataproc'ta Spark toplu işi olarak gönderin. Soldaki gezinme menüsünde İşler'i ve ardından İşi Gönder'i tıklayın.

5767fc7c50b706d3.jpeg

İş kimliği ve bölge sağlayın. Kümenizi seçin ve kopyaladığınız Spark komut dosyasının GCS konumunu belirtin. Bu iş, Dataproc'ta Spark toplu işi olarak çalışacak.

Sürücünün çalışma düğümlerinde değil Dataproc ana düğümünde çalıştığından emin olmak için Özellikler bölümünde spark.submit.deployMode anahtarını ve client değerini ekleyin. Toplu işi Dataproc'a göndermek için Gönder'i tıklayın.

a7ca90f5132faa31.jpeg

Spark komut dosyası bir DataFrame oluşturur ve bir Hive tablosuna test_table_1 yazar.

İş başarıyla çalıştırıldıktan sonra, İzleme sekmesinde konsol yazdırma ifadelerini görebilirsiniz.

bdec2f3ae1055f9.jpeg

Artık Hive tablosu oluşturulduğuna göre tablonun içeriğini seçmek ve konsolda görüntülemek için başka bir Hive sorgu işi gönderin.

Aşağıdaki özellikleri kullanarak başka bir iş oluşturun:

c16f02d1b3afaa27.jpeg

İş Türü'nün Hive, sorgu kaynağı türünün ise Sorgu Metni olarak ayarlandığına dikkat edin. Bu, HiveQL ifadesinin tamamını Sorgu Metni metin kutusuna yazacağımız anlamına gelir.

Geri kalan parametreleri varsayılan değer olarak tutarak işi gönderin.

e242e50bc2519bf4.jpeg

HiveQL'nin tüm kayıtları nasıl seçtiğine ve konsolda görüntülendiğini fark edeceksiniz.

6. Otomatik ölçeklendirme

Otomatik ölçeklendirme, hedefin "doğru" Bir iş yükü için küme çalışma düğümlerinin sayısı.

Dataproc AutoscalingPolicies API, küme kaynak yönetimini otomatikleştirmeyi sağlayan bir mekanizma sağlar ve küme çalışanı sanal makine ölçeklendirmesini sağlar. Otomatik Ölçeklendirme Politikası, otomatik ölçeklendirme politikasını kullanan küme çalışanlarının nasıl ölçeklenmesi gerektiğini açıklayan, yeniden kullanılabilir bir yapılandırmadır. Kümenin ömrü boyunca küme kaynakları üzerinde daha ayrıntılı kontrol sağlamak için ölçeklendirme sınırlarını, sıklığını ve agresifliğini tanımlar.

Dataproc otomatik ölçeklendirme politikaları, YAML dosyaları kullanılarak yazılır. Bu YAML dosyaları, küme oluşturmak için CLI komutunda iletilir veya Cloud Console'dan küme oluşturulduğunda bir GCS paketinden seçilir.

Dataproc otomatik ölçeklendirme politikası örneğini aşağıda bulabilirsiniz :

policy.yaml

workerConfig:
  minInstances: 10
  maxInstances: 10
secondaryWorkerConfig:
  maxInstances: 50
basicAlgorithm:
  cooldownPeriod: 4m
  yarnConfig:
    scaleUpFactor: 0.05
    scaleDownFactor: 1.0
    gracefulDecommissionTimeout: 1h

7. Dataproc'un İsteğe Bağlı Bileşenlerini Yapılandırma

Bu işlem bir Dataproc kümesi başlatır.

Dataproc kümesi oluşturduğunuzda, standart Apache Hadoop ekosistem bileşenleri kümeye otomatik olarak yüklenir (Dataproc Sürüm Listesi sayfasına bakın). Kümeyi oluştururken İsteğe Bağlı Bileşenler adlı ek bileşenleri kümeye yükleyebilirsiniz.

e39cc34245af3f01.jpeg

Konsoldan Dataproc kümesini oluştururken isteğe bağlı bileşenleri etkinleştirdik ve isteğe bağlı bileşen olarak Jupyter Notebook'u seçtik.

8. Kaynakları temizleyin

Kümeyi temizlemek için Dataproc konsolundan kümeyi seçtikten sonra Durdur'u tıklayın. Küme durduğunda silmek için Sil'i tıklayın.

Dataproc kümesi silindikten sonra, kodun kopyalandığı GCS paketlerini silin.

Kaynakları temizlemek ve istenmeyen faturalandırmayı durdurmak için Dataproc kümesinin durdurulup silinmesi gerekir.

Kümeyi durdurup silmeden önce HDFS depolama alanına yazılan tüm verilerin uzun ömürlü depolama için GCS'ye kopyalandığından emin olun.

Kümeyi durdurmak için Durdur'u tıklayın.

52065de928ab52e7.jpeg

Küme durduğunda silmek için Sil'i tıklayın.

Onay iletişim kutusunda kümeyi silmek için Sil'i tıklayın.

52065de928ab52e7.jpeg