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.
Artık Küme Oluşturma sayfasındasınız.
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.
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.
Ana düğüme giriş yapmak için ana düğümün yanındaki SSH'yi 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
Dataproc kümesi konsolunda kümenizin adını ve ardından WEB ARAYÜZLERİ sekmesini tıklayın.
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.
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.
İş 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.
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.
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:
İş 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.
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.
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.
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.