1. Giriş - Managed Service for Apache Spark
Managed Service for Apache Spark; Apache Spark, Apache Flink, Presto ve diğer birçok açık kaynak aracı ve çerçevesini çalıştırmak için tümüyle yönetilen ve yüksek oranda ölçeklenebilir bir hizmettir. Veri gölü modernizasyonu, ETL / ELT ve gezegen ölçeğinde güvenli veri bilimi için Managed Service for Apache Spark'ı kullanın. Managed Service for Apache Spark; BigQuery, Cloud Storage, Gemini Enterprise Agent Engine ve Knowledge Catalog dahil olmak üzere çeşitli Google Cloud hizmetleriyle de tamamen entegre edilmiştir.
Managed Service for Apache Spark iki dağıtım modunda kullanılabilir:
- Yönetilen Apache Spark sunucusuz, altyapı ve otomatik ölçeklendirme yapılandırmanıza gerek kalmadan PySpark işlerini çalıştırmanıza olanak tanır. Yönetilen Apache Spark, PySpark toplu iş yüklerini ve oturumlarını / not defterlerini destekler.
- Yönetilen Apache Spark kümeleri, 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.
2. Google Cloud VPC'sinde Managed Apache Spark kümesi oluşturma
Bu adımda, Google Cloud konsolunu kullanarak Google Cloud'da bir Managed Apache Spark kümesi oluşturacaksınız.
İlk adım olarak, konsolda Managed Apache Spark hizmeti API'sini etkinleştirin. Etkinleştirildikten sonra arama çubuğunda "Managed Apache Spark"ı arayın ve Create Cluster'ı (Küme Oluştur) tıklayın.
Yönetilen Apache Spark kümelerini çalıştırmak için temel altyapı olarak Google Compute Engine (GCE) sanal makinelerini kullanmak üzere Cluster on Compute Engine'i (Compute Engine'de Küme) seçin.

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

Bu sayfada:
- Küme için benzersiz bir ad girin.
- Belirli bir bölgeyi seçin. Bir bölge de seçebilirsiniz ancak Managed Apache Spark, 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çidi'ni etkinleştir seçeneğinin yanındaki kutuyu işaretleyin.Bu işlem, Spark kullanıcı arayüzü, Yarn Node Manager ve Jupyter not defterleri dahil olmak üzere kümedeki web arayüzlerine erişimi etkinleştirir.
- İ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, Managed Apache Spark kümesini başlatır.
3. Kümeyi başlatma ve kümeye SSH uygulama
Küme durumu Çalışıyor olarak değiştiğinde Managed Apache Spark konsolunda küme adını tıklayın.

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.

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

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
Managed Apache Spark kümesi konsolunda kümenizin adını, ardından WEB ARAYÜZLERİ sekmesini tıklayın.

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 arayüzü, 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 de kullanabilirsiniz.
5. Spark işlerini izleme ve gözlemleme
Managed Apache Spark kümesi çalışır durumdayken bir PySpark toplu işi oluşturun ve bu işi Managed Apache Spark kümesine gönderin.
PySpark komut dosyasını depolamak için Google Cloud Storage (GCS) paketi oluşturun. Paketi, Managed Apache Spark kümesiyle aynı bölgede oluşturduğunuzdan emin olun.

GCS paketi oluşturulduktan sonra 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ı, Managed Apache Spark'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.

İş kimliği ve bölge belirtin. Kümenizi seçin ve kopyaladığınız Spark komut dosyasının GCS konumunu girin. Bu iş, Managed Apache Spark'ta Spark toplu işi olarak çalıştırılır.
Sürücünün, çalışan düğümlerinde değil, yönetilen Apache Spark ana düğümünde çalıştığından emin olmak için Özellikler bölümünde anahtar spark.submit.deployMode ve değeri client ekleyin. Toplu işi Managed Apache Spark'a göndermek için Gönder'i tıklayın.

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.

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:

İş 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.

HiveQL'in tüm kayıtları nasıl seçtiğine ve konsolda nasıl gösterdiğine dikkat edin.
6. Otomatik ölçeklendirme
Otomatik ölçeklendirme, bir iş yükü için "doğru" küme çalışanı düğümü sayısını tahmin etme işlemidir.
Yönetilen Apache Spark 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. Kümenin kullanım süresi boyunca küme kaynakları üzerinde ayrıntılı denetim sağlamak için ölçekleme sınırlarını, sıklıkları ve ölçekleme agresifliğini tanımlar.
Managed Apache Spark 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.
Yönetilen Apache Spark 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. Yönetilen Apache Spark İsteğe Bağlı Bileşenlerini Yapılandırma
Bu işlem, Managed Apache Spark kümesini başlatır.
Yönetilen bir Apache Spark kümesi oluşturduğunuzda, standart Apache Hadoop ekosistem bileşenleri kümeye otomatik olarak yüklenir (bkz. Yönetilen Apache Spark Sürüm Listesi). Küme oluştururken kümeye isteğe bağlı bileşenler adı verilen ek bileşenler yükleyebilirsiniz.

Konsoldan Managed Apache Spark 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 Managed Apache Spark 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.
Yönetilen Apache Spark kümesi silindikten sonra kodun kopyalandığı GCS paketlerini silin.
Kaynakları temizlemek ve istenmeyen faturalandırmayı durdurmak için önce yönetilen Apache Spark 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.

Küme durduktan sonra, kümeyi silmek için Sil'i tıklayın.
Küme silme işlemini onaylamak için onay iletişim kutusunda Sil'i tıklayın.
