Amazon DEA-C01: Veri Dönüşümü ve İşleme — Çalışma kılavuzu
Şunun bir parçası: Amazon Data Engineer Associate DEA-C01 — Çalışma kılavuzu. Doğrulanmış cevaplarla şurada pratik yapın: Amazon sınav merkezi, veya şurada süreli deneme sınavları çözün: ExamRoll.io.
Bu alan, verileri büyük ölçekte analiz ve makine öğrenimi için temizlemek, dönüştürmek ve hazırlamak amacıyla kullanılan AWS hizmetlerini ve desenlerini kapsar. Veri hacmi, gecikme gereksinimleri ve maliyet kısıtlamalarına göre doğru işlem (compute) ve araçların (Glue, Lambda, EMR, DataBrew) seçilmesine odaklanır. Güvenilir ve artımlı iş akışları oluşturmak için hizmet limitlerini, iş yapılandırma ayarlarını ve veri formatları ile katalogların nasıl etkileşimde bulunduğunu anlamak kritik öneme sahiptir.
AWS Glue ETL işleri (Spark ve Python shell)
Glue Spark işleri, büyük ölçekli ve dağıtık ETL için birincil seçenektir: AWS Glue tarafından yönetilen Apache Spark üzerinde çalışırlar, GlueContext kullanırlar ve DynamicFrame ile Spark DataFrame türleri üzerinde işlem yaparlar. Konsol veya CLI aracılığıyla “glueetl” iş türü, workerType (G.1X, G.2X, G.4X) ve NumberOfWorkers ile yapılandırılır; CLI ile başlatmak için: aws glue start-job-run --job-name my-spark-job --arguments '--execution-class=STANDARD'. Şema esnekliği gerektiren dönüşümlere, yerleşik dönüşümlere (Relationalize, Unnest) ve yarı yapılandırılmış verilerin otomatik işlenmesine ihtiyaç duyduğunuzda DynamicFrame API’lerini (create_dynamic_frame.from_options, apply_mapping) kullanın; Spark SQL’e, daha yüksek performanslı birleştirmelere (join) veya özel UDF’lere (Kullanıcı Tanımlı Fonksiyonlar) ihtiyaç duyduğunuzda ise dyf.toDF() ile Spark DataFrame’e dönüştürün.
Glue Python shell işleri, hafif betikleme ve kontrol düzlemi görevleri için “pythonshell” iş türünü kullanır. Tek DPU’lu (1 DPU) olup sınırlı paralelliğe sahiptirler ve küçük dosya manipülasyonları, meta veri güncellemeleri veya orkestrasyon için en uygunudur. aws glue create-job --name my-pyjob --command '{"Name":"pythonshell","PythonVersion":"3"}' ile yapılandırılır ve aws glue start-job-run ile başlatılır. Python shell işlerinin 1 DPU limiti olduğunu unutmayın — büyük veri setleri için Spark kullanın.
Glue iş yer imleri (job bookmarks), daha önce işlenmiş S3 nesnelerini ve bölümlerini (partition) takip ederek artımlı işlemeyi mümkün kılar. Yer imlerini iş yapılandırmasında veya işi başlatırken etkinleştirin: aws glue start-job-run --job-name my-job --job-bookmark-option job-bookmark-enable. Yer imleri, yerleşik bağlayıcıları kullanan S3 tabanlı kaynaklar için çalışır; JDBC kaynakları varsayılan olarak yer imlerini desteklemez ve özel damgalama (watermarking) veya durum depolaması gerektirir.
Glue artık maliyet optimizasyonlu, acil olmayan işler için ExecutionClass FLEX’i desteklemektedir. Glue’nun işi daha düşük maliyetle ve esnetilmiş başlangıç zamanı SLA’ları ile zamanlamasına izin vermek için aws glue start-job-run --job-name my-job --execution-class FLEX ile başlatın. FLEX’i toplu geçmiş veri doldurma (batch backfill) ve gecikmeye duyarlı olmayan iş yükleri için kullanın; öngörülebilir gecikme için STANDARD kullanın.
Karar kriterleri — hızlı karşılaştırmalar:
-
DynamicFrame vs Spark DataFrame
- Şema kayması (schema drift) olan yarı yapılandırılmış JSON/Parquet verilerini alırken,
apply_mapping,relationalizeve glue dönüşümlerinden yararlanırken DynamicFrame kullanın. - Spark SQL performansına, karmaşık birleştirmelere (join), pencere fonksiyonlarına (window functions) ve üçüncü parti Spark kütüphanelerine ihtiyaç duyduğunuzda Spark DataFrame kullanın.
DynamicFrame.fromDF(df, glueContext, "name")vedyf.toDF()aracılığıyla aralarında dönüşüm yapın.
- Şema kayması (schema drift) olan yarı yapılandırılmış JSON/Parquet verilerini alırken,
-
Glue Spark vs Python shell
- Büyük veri setleri üzerinde çok düğümlü, dağıtık ETL için ve Glue Catalog entegrasyonunu büyük ölçekte kullanırken Spark’ı seçin.
- 1 DPU sınırları içinde kalan küçük, hızlı görevler veya orkestrasyon adımları için Python shell’i seçin.
Hafif dönüşümler için AWS Lambda
Lambda, doğrudan S3, Kinesis veya EventBridge tarafından tetiklenen olay güdümlü, düşük gecikmeli, hafif dönüşümler için idealdir. Tipik kullanım alanları arasında dosya doğrulama, meta veri çıkarma, küçük dosyalar için JSON’dan CSV’ye dönüştürme veya kayıtların akış halinde işlenmesi yer alır. Belleği ve zaman aşımını aws lambda update-function-configuration --function-name myFunc --memory-size 2048 --timeout 300 ile yapılandırın. Gecikmeye duyarlı akış iş akışları için soğuk başlangıçları (cold start) azaltmak amacıyla aws lambda put-provisioned-concurrency-config ile Sağlanan Eşzamanlılık (Provisioned Concurrency) ayarlanabilir.
Veri işleme için Lambda limitlerine dikkat edin: 15 dakika maksimum çalışma süresi, 10 GB bellek (10.240 MB) ve yalnızca 512 MB geçici /tmp depolama alanı. Daha büyük dosyaları işlemek için, zincirleme işleme (dosyaları bölme), S3’e aşamalandırıp bir Glue veya EMR işi çağırma ya da AWS Step Functions ile çok parçalı işleme kullanın. Küçük yapılandırmalar için ortam değişkenlerini ve en az ayrıcalık ilkesini sıkı bir şekilde uygulayan IAM rolü politikalarını kullanın.
Karar kriterleri — Lambda ne zaman seçilmeli:
- Çağrı başına işlemenin 15 dakika, 10 GB bellek ve 512 MB /tmp kısıtlamaları içine sığdığı ve saniye altı ila saniye düzeyinde gecikme gerektiğinde Lambda’yı kullanın.
- Büyük, uzun süren veya yoğun bellek kullanan dönüşümler için Lambda kullanmaktan kaçının; bunun yerine Glue Spark veya EMR kullanın.
Büyük ölçekli işleme için Amazon EMR
EMR; küme düzeyinde kontrol, özel bootstrap eylemleri veya özelleştirilmiş kütüphaneler gerektiren, özelleştirilebilir, büyük ölçekli büyük veri işleme (Spark, Hadoop, Presto, Flink) için başvurulacak çözümdür. CLI aracılığıyla aws emr create-cluster komutuyla kümeler oluşturun ve --instance-groups ya da --instance-fleets seçeneklerinden birini seçin. Instance fleet’ler esnek örnek türü karışımları ve spot/ON demand kombinasyonları sunar; instance group’lar ise daha basit, sabit boyutlu gruplardır.
Dikkate alınması gereken EMR küme desenleri:
- Geçici kümeler:
--auto-terminateile başlatın ve adımları (step) gönderin, böylece adımlar tamamlandığında küme sonlandırılır. Maliyet kontrolü için iyidir ancak geçici HDFS ve yerel durum (state) sonlandırmada kaybolacaktır. - Uzun süreli çalışan kümeler: Otomatik olarak sonlandırılmaz; etkileşimli iş yükleri, kalıcı HDFS veya birçok küçük işin JVM ısınmasından faydalandığı durumlar için kullanın. Kümenin sonlandırılması bekleniyorsa, kritik verileri S3’te veya EBS destekli Hadoop depolama alanında kalıcı hale getirin.
Yapılandırma örnekleri:
- Instance group CLI:
aws emr create-cluster --name Prod --release-label emr-6.6.0 --use-default-roles --instance-groups InstanceGroupType=MASTER,InstanceType=m5.xlarge,InstanceCount=1 InstanceGroupType=CORE,InstanceType=m5.xlarge,InstanceCount=4 - Instance fleet CLI, dayanıklılık ve maliyet optimizasyonu için OnDemand/Spot tahsisleri ve çoklu örnek türleri ile
--instance-fleetskullanır.
Hadoop ekosistemi bileşenleri üzerinde tam kontrol, özel bootstrap betikleri veya ara veriler için kalıcı HDFS’e ihtiyacınız olduğunda EMR kullanın; aksi takdirde, Glue Data Catalog ile entegre olan yönetilen Spark ETL için Glue Spark daha basittir.
Glue DataBrew ve görsel dönüşümler
Glue DataBrew, etkileşimli olarak çalışan veri analistleri ve mühendislerini hedefleyen; veri profilleme, temizleme ve dönüştürme için kullanılan görsel, kod gerektirmeyen/az kod gerektiren bir araçtır. S3 veya Glue Catalog’dan bir veri seti oluşturun, konsolda dönüşümlerden oluşan bir “recipe” (tarif) oluşturun, bir örnek üzerinde önizleme yapın ve tarifleri büyük ölçekte uygulamak için job’lar çalıştırın. DataBrew job’larını zamanlayın veya CLI aracılığıyla aws databrew start-job-run --name my-databrew-job komutuyla çalıştırın.
DataBrew; standardizasyon, tekilleştirme, tür dönüştürme ve yerleşik fonksiyonlarla sütun düzeyinde dönüşümler gibi veri hazırlama görevleri için optimize edilmiştir. Glue Catalog ile entegre olur ve çıktıları S3’e yazar. İş kullanıcılarının self-servis temizlik ve hızlı profillemeye ihtiyacı olduğunda DataBrew’u seçin; ağır dönüşüm mantığı, karmaşık join’ler veya çok büyük veri setleri için Glue Spark veya EMR’ı tercih edin.
Görsel ve kod tabanlı dönüşümlerin karşılaştırması:
- Glue DataBrew
- Artıları: hızlı profilleme, tarif tabanlı, kodlama bilmeyenlerin pipeline oluşturabilmesi, entegre zamanlama.
- Eksileri: çok büyük veya oldukça karmaşık dağıtık join’ler ve özel kütüphaneler için uygun değildir.
- Glue Spark / EMR
- Artıları: tam programatik kontrol, devasa veri setlerini işleyebilme, üçüncü parti kütüphaneleri destekleme.
- Eksileri: geliştirici becerileri ve daha fazla yapılandırma gerektirir.
Yaygın Hatalar ve Karar Kriterleri
- Glue job bookmark’larının JDBC kaynakları için çalıştığını varsaymak — bookmark’lar yalnızca S3 nesne/partition durumunu izler; JDBC artımlı yüklemeleri için watermark sütunları, change-data-capture kullanın veya ilerlemeyi DynamoDB/S3’te saklayın.
- Geçici EMR kümelerine durum bilgisi tutan sistemler gibi davranmak — geçici kümeler adımlardan sonra sonlandırılır ve HDFS’i kaybeder; ara verileri S3’te kalıcı hale getirin veya dayanıklı depolama için EBS birimlerini kullanın.
- Streaming pipeline’larında Lambda cold start’larını göz ardı etmek — cold start’lar gecikmeyi artırır; kritik yollar için provisioned concurrency ile bunu azaltın veya katı düşük gecikme süresi gereksinimleri için uzun ömürlü işlem kaynakları kullanın.
- Glue Python shell’de büyük dönüşümler çalıştırmak — Python shell job’ları 1 DPU ile sınırlıdır; büyük veri setleri için uygun
workerType/NumberOfWorkersile Glue Spark job’larını kullanın. - EMR örnek türlerini yanlış yapılandırmak: spot örneklerle maliyet ve esneklik için instance fleet’leri seçin; öngörülebilir örnek kompozisyonuna ihtiyacınız olduğunda instance group’ları kullanın.
- Acil iş yükleri için Glue Flex’i aşırı kullanmak — FLEX maliyeti düşürür ancak başlangıç zamanlarını geciktirebilir; öngörülebilir başlangıç ve yürütme süreleri için STANDARD kullanın.
Pratik Problem: Kullanım Senaryosu
AcmeRetail, gecelik clickstream Parquet dosyalarını birleşik bir müşteri aktivite tablosuna işliyor ve acil olmayan geçmişe dönük veri doldurma işlemleri için maliyetleri düşük tutarken aylarca veriyi yeniden işlemekten kaçınmak için artımlı işleme istiyor.
- S3’te partition’lı bir düzen (year=/month=/day=) kullanın ve veri setini Glue Data Catalog’a kaydedin.
- Şema esnekliği için
DynamicFrame.from_catalogile okuma yapan, eşlemeler (mapping) uygulayan, karmaşık join’ler için DataFrame’e dönüştüren ve partition’lı Parquet’ı tekrar S3’e yazan bir Glue Spark job’ı (glueetl) oluşturun. - Gecelik çalıştırmalarda yalnızca yeni partition’ları işlemek için Glue job bookmark’larını (
job-bookmark-enable) etkinleştirin; JDBC zenginleştirme kaynakları için, işlenen maksimum zaman damgasını izlemek üzere DynamoDB’de kalıcı hale getirilen watermark sütunları uygulayın. - Rutin gecelik çalıştırmalar için
ExecutionClass=STANDARDkullanın; acil olmayan geçmişe dönük yeniden işleme için, maliyetten tasarruf etmek amacıyla çalıştırmaları--execution-class FLEXile gönderin. - CloudWatch metrikleri ile izleyin ve job hataları için alarmlar kurun; çok büyük ölçek veya özel kütüphaneler için, ara sonuçları S3’e yazan ve otomatik olarak sonlanan geçici EMR kümelerini değerlendirin.
Gerekçe: Bu yaklaşım, ölçeklenebilir dönüşümler için Glue’nün yönetilen Spark’ından ve yarı yapılandırılmış girdiler için DynamicFrame’lerden yararlanır, S3 artımlı işleme için job bookmark’larını kullanır ve geçmişe dönük veri doldurma işlemlerinin maliyetini düşürmek için FLEX’i kullanarak maliyet, güvenilirlik ve operasyonel basitliği korur.
← Veri Kataloglama ve Metadata Yönetimi · Tüm alanlar · Veri Orkestrasyonu ve İş Akışı Yönetimi →
Bu soruları çözün → · ExamRoll.io’da süreli pratik →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Sınavınızı geçin →