Google Compute Engine'de Dataproc

1. Giriş - Google Dataproc

Dataproc; Apache Spark, Apache Flink, Presto ve diğer birçok açık kaynak aracı ile çerçevesini çalıştırmak için sunulan, tümüyle yönetilen ve son derece ölçeklenebilir bir hizmettir. Gezegen ölçeğinde veri gölü modernizasyonu, ETL / ELT ve güvenli veri bilimi için Dataproc'u kullanın. Dataproc, BigQuery, Cloud Storage, Vertex AI ve Dataplex dahil olmak üzere çeşitli Google Cloud hizmetleriyle de tam olarak entegre edilmiştir.

Dataproc üç farklı seçenek olarak mevcuttur:

  • Dataproc Serverless, altyapı ve otomatik ölçeklendirme yapılandırmanıza gerek kalmadan PySpark işlerini çalıştırmanıza olanak tanır. Dataproc Serverless, PySpark toplu iş yüklerini ve oturumlarını / not defterlerini destekler.
  • Google Compute Engine'de Dataproc, Flink ve Presto gibi açık kaynak araçların yanı sıra 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 özelleştirebilirsiniz.
  • Google Kubernetes Engine'de Dataproc, Spark, PySpark, SparkR veya Spark SQL işleri göndermek için GKE altyapınızda Dataproc sanal kümelerini yapılandırmanıza olanak tanır.

2. Google Cloud VPC'sinde Dataproc kümesi oluşturma

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

İlk adım olarak konsolda Dataproc hizmeti API'sini etkinleştirin. Etkinleştirildikten sonra arama çubuğunda "Dataproc"u arayın ve Küme Oluştur'u tıklayın.

Dataproc kümelerini çalıştırmak için temel altyapı olarak Google Compute Engine(GCE) VM'lerini kullanmak üzere Compute Engine'de küme'yi seçin.

a961b2e8895e88da.jpeg

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

9583c91204a09c12.jpeg

Bu sayfada:

  • Küme için benzersiz bir ad girin.
  • Belirli bir bölge seçin. Bir bölge de seçebilirsiniz ancak Dataproc, sizin için otomatik olarak bir bölge seçme olanağı sunar. Bu codelab için "us-central1" ve "us-central1-c"yi seçin.
  • "Standart" küme türünü seçin. 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üme özelleştirme bölümünde, Bileşen ağ geçidini etkinleştir'in yanındaki kutuyu işaretleyin. Bu, Spark kullanıcı arayüzü, Yarn Node Manager ve Jupyter not defterleri dahil olmak üzere kümedeki web arayüzlerine erişimi sağlar.
  • İsteğe Bağlı Bileşenler bölümünde Jupyter Notebook'u seçin. Bu işlem, kümeyi Jupyter not defteri sunucusuyla yapılandırır.
  • Diğer her şeyi olduğu gibi bırakıp Create Cluster'ı (Küme Oluştur) tıklayın.

Bu işlem, bir Dataproc kümesi oluşturur.

3. Kümeyi başlatma ve kümeye SSH uygulama

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

7332f1c2cb25807d.jpeg

Kümenin ana düğümünü ve iki çalışma düğümünü görüntülemek için VM Instance (Sanal Makine Örneği) sekmesini tıklayın.

25be1578e00f669f.jpeg

Ana düğüme giriş yapmak için ana düğümün yanındaki SSH'ı 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üme konsolunda kümenizin adını, ardından WEB ARAYÜZLERİ sekmesini tıklayın.

6398f71d6293d6ff.jpeg

Bu bölümde, Jupyter da dahil olmak üzere kullanılabilir web arayüzleri gösterilir. Jupyter not defteri açmak için Jupyter'ı tıklayın. Bu aracı, GCS'de depolanan PySpark not defterleri oluşturmak için kullanabilirsiniz. Not defterinizi Google Cloud Storage'da depolamak ve bu codelab'de kullanmak üzere bir PySpark not defteri açmak için bu aracı kullanabilirsiniz.

5. Spark işlerini izleme ve gözlemleme

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

PySpark komut dosyasını depolamak için 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 Jobs'u (İşler) ve ardından Submit Job'u (İşi Gönder) 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 girin. Bu iş, Dataproc'ta Spark toplu işi olarak çalıştırılır.

Sürücünün çalışan düğümlerinde değil, Dataproc ana düğümünde çalışmasını sağlamak için Özellikler bölümünde anahtar spark.submit.deployMode ve değeri client 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 yazar test_table_1.

İş başarıyla tamamlandıktan sonra konsol yazdırma ifadelerini İzleme sekmesinde görebilirsiniz.

bdec2f3ae1055f9.jpeg

Hive tablosu oluşturulduktan sonra, 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 özelliklere sahip başka bir iş oluşturun:

c16f02d1b3afaa27.jpeg

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

Diğer parametreleri varsayılan olarak bırakıp işi gönderin.

e242e50bc2519bf4.jpeg

HiveQL'in tüm kayıtları nasıl seçtiğine ve konsolda nasıl görüntülediğine dikkat edin.

6. Otomatik ölçeklendirme

Otomatik ölçeklendirme, bir iş yükü için "doğru" küme çalışma düğümü sayısını tahmin etme işlemidir.

Dataproc AutoscalingPolicies API, küme kaynak yönetimini otomatikleştirmeyi sağlayan bir mekanizmaya sahiptir ve küme çalışanı sanal makinelerinin otomatik ölçeklendirilmesini sağlar. Otomatik Ölçeklendirme Politikası, otomatik ölçeklendirme politikası kullanan küme çalışanlarının nasıl ölçeklenmesi gerektiğini açıklayan tekrar kullanılabilir bir yapılandırmadır. Bu politika, kümenin kullanım süresi boyunca küme kaynakları üzerinde ayrıntılı denetim sağlamak için ölçeklendirme sınırlarını, sıklıkları ve ölçeklendirme 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 komutuna iletilir veya Cloud Console'dan küme oluşturulurken bir GCS paketinden seçilir.

Aşağıda bir Dataproc otomatik ölçeklendirme politikası örneği verilmiştir :

policy.yaml

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

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

Bu işlem, bir Dataproc kümesi oluşturur.

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

e39cc34245af3f01.jpeg

Konsoldan Dataproc kümesi 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ı temizleme

Kümeyi temizlemek için Dataproc konsolundan kümeyi seçtikten sonra Durdur'u tıklayın. Küme durduktan sonra kümeyi 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 önce Dataproc kümesinin durdurulması, ardından silinmesi gerekir.

Küme durdurulup silinmeden önce, HDFS depolama alanına yazılan tüm verilerin kalıcı depolama için GCS'ye kopyalandığından emin olun.

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

52065de928ab52e7.jpeg

Küme durduktan sonra kümeyi silmek için Sil'i tıklayın.

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

52065de928ab52e7.jpeg