Genel Tanım
Apache Spark, büyük veri işleme ve analitiği için tasarlanmış, dağıtık, bellek içi (in-memory) hesaplama gücü sunan ve çok çeşitli modülleri (Spark SQL, Spark Streaming, MLlib, GraphX) içeren, modern veri mühendisliği ve analitik uygulamalarında vazgeçilmez bir platformdur. Bu eğitim, Apache Spark’ın mimarisi, temel API’leri, performans optimizasyonu, dağıtık işleyişi ve ekosisteme entegrasyonu gibi konuları derinlemesine ele alarak, katılımcıların büyük veri uygulamalarında yüksek verimlilikle çözümler geliştirmelerini sağlamayı amaçlar.
Nedir?
Apache Spark; verinin hızlı ve ölçeklenebilir biçimde işlenmesi için tasarlanmış, RDD, DataFrame, SQL, streaming, makine öğrenmesi ve graf analizi gibi modülleriyle geniş bir yelpazede veri işleme yetenekleri sunan açık kaynaklı bir çerçevedir. Eğitimde, Spark’ın temel prensipleri, API’leri, optimizasyon teknikleri ve gerçek dünya uygulamalarındaki rolü detaylı olarak incelenecektir.
Kimler içindir?
Bu eğitim, aşağıdaki bireyler için uygundur:
• Veri mühendisleri ve büyük veri analistleri,
• Veri bilimcileri ve makine öğrenimi mühendisleri,
• Yazılım geliştiriciler ve sistem mimarları,
• Hadoop ve diğer büyük veri teknolojilerini kullanan profesyoneller,
• Dağıtık hesaplama ve gerçek zamanlı veri işleme konularında uzmanlaşmak isteyenler,
• Akademisyenler ve araştırmacılar.
Neden Apache Spark Eğitimi?
• Hız ve Verimlilik: Bellek içi hesaplama sayesinde büyük veri setlerinin çok daha hızlı işlenmesini sağlar.
• Ölçeklenebilirlik: Yatayda ölçeklenebilir mimarisi ile verinin artan hacmine uyum sağlar.
• Çeşitli Modüller: Spark SQL, Spark Streaming, MLlib ve GraphX gibi modüller ile tüm veri işleme ve analiz ihtiyaçlarını karşılar.
• Endüstri Standartı: Büyük veri ekosisteminde geniş kabul gören ve yaygın olarak kullanılan bir teknolojidir.
• Entegrasyon: Hadoop, bulut platformları ve diğer modern veri araçlarıyla kolay entegrasyon imkanı sunar.
Konular
Giriş ve Temel Kavramlar
Eğitimin Tanıtımı ve Hedefler
Eğitim içeriğinin genel çerçevesi, öğrenme çıktıları ve beklenen kazanımlar
Katılımcı beklentileri, uygulama alanları ve sektör örnekleri
Apache Spark’ın Tarihçesi ve Evrimi
Spark’ın ortaya çıkışı, gelişim süreci ve büyük veri ekosistemindeki rolü
Geleneksel MapReduce ile karşılaştırmalar
Temel Kavramlar ve Terimler
Dağıtık hesaplama, RDD, DataFrame, DAG (Directed Acyclic Graph) kavramları
Spark mimarisi: Driver, Executor, Cluster Manager
Apache Spark Temelleri ve Kurulum
Kurulum ve Ortam Yapılandırması
Spark’ın yerel (local) ve dağıtık modda kurulumu
İlgili araçlar: Spark Shell, PySpark, SparkR ve Not Defteri (Jupyter, Zeppelin)
Spark Ekosistemi ve Modülleri
Spark Core, Spark SQL, Spark Streaming, MLlib, GraphX
Her modülün temel işlevleri ve kullanım senaryoları
Cluster Manager’lar ve Dağıtım Seçenekleri
Spark Standalone, YARN, Mesos, Kubernetes entegrasyonları
Bulut tabanlı kurulum örnekleri (AWS, Azure, Google Cloud)
RDD (Resilient Distributed Datasets) ve Temel API’ler
RDD Temelleri
RDD’lerin tanımı, özellikleri ve faydaları
RDD oluşturma yöntemleri (parallelize, textFile, transformations)
RDD Dönüşümleri ve İşlemleri
Map, filter, flatMap, reduce, union, join gibi temel dönüşümler
Lazy evaluation (tembel değerlendirme) prensibi ve aksiyonlar (collect, count, take)
Hata Toleransı ve Caching
RDD’lerin hata toleransı mekanizması (lineage)
Caching, persistence stratejileri ve bellek yönetimi
DataFrame ve Spark SQL
DataFrame Kavramı
DataFrame’lerin tanımı, avantajları ve API yapısı
Schema, sütun işlemleri ve veri tipleri
Spark SQL ile Sorgulama
SQL sorguları ve DataFrame API kullanarak veri analizi
DataFrame işlemleri: select, filter, groupBy, join, agg
Catalyst Optimizer ve Tungsten Projesi
Catalyst sorgu optimizasyonu ve sorgu planı iyileştirmeleri
Tungsten ile bellek yönetimi ve performans iyileştirmeleri
Veri Kaynakları ve Entegrasyon
Hive, Parquet, JSON, CSV gibi veri formatları ile çalışmak
Dış veri kaynakları ile entegrasyon yöntemleri
Apache Spark Streaming ve Structured Streaming
Spark Streaming’e Giriş
Spark Streaming mimarisi, micro-batch işleyişi
DStream kavramı ve temel API’ler
Structured Streaming
Sürekli veri akışlarını gerçek zamanlı işleme
Windowing, event-time processing ve stateful operations
Streaming Kaynakları ve Entegrasyon
Kafka, Flume, socket, dosya sistemleri gibi veri kaynakları
Uygulamalı örnekler: Gerçek zamanlı veri akışı ve işleme
Performans ve Hata Yönetimi
Streaming uygulamalarında hata toleransı, checkpointing
Kaynak yönetimi, latency optimizasyonu ve monitoring
Machine Learning ve MLlib ile Uygulamalı Makine Öğrenmesi
MLlib’e Giriş
Spark MLlib kütüphanesinin tanıtımı, temel yapısı ve bileşenleri
Veri ön işleme, feature extraction ve veri dönüştürme teknikleri
Algoritmalar ve Modelleme
Sınıflandırma, regresyon, kümeleme, öneri algoritmaları
Örnek uygulamalar: Lojistik regresyon, karar ağaçları, k-means, ALS
Pipelines ve Model Değerlendirme
ML pipeline kavramı, model eğitim, validasyon ve hiperparametre ayarlamaları
Model değerlendirme metrikleri ve çapraz doğrulama
Gerçek Dünya Makine Öğrenmesi Uygulamaları
End-to-end makine öğrenmesi projeleri ve örnek veri setleri
Model dağıtımı ve üretime alınması
GraphX ile Grafik İşleme
GraphX’e Giriş
Grafik veri yapısı, RDD tabanlı graf temsil ve GraphX API’leri
GraphFrame kavramı ve kullanım örnekleri
Grafik Algoritmaları
PageRank, connected components, triangle counting, shortest path
Özel grafik algoritmaları geliştirme ve optimizasyonu
Uygulamalı Grafik İşleme
Sosyal ağ analizi, öneri sistemlerinde grafik temelli yaklaşımlar
Gerçek dünya senaryoları ve vaka çalışmaları
Performans Tuning ve Optimizasyon
Spark Uygulama Performansı
DAG ve execution plan’ların analizi, Spark UI kullanımı
RDD/DataFrame optimizasyon teknikleri ve bellek yönetimi stratejileri
Partitioning ve Caching Stratejileri
Veri bölümlendirme, repartition, coalesce yöntemleri
Caching politikaları ve optimum veri depolama teknikleri
Konfigürasyon Ayarları ve İnce Ayar
Spark konfigürasyon parametreleri, executor, driver ve cluster ayarları
Gerçek dünya uygulamalarında performans iyileştirme örnekleri
Cluster Yönetimi ve Dağıtım Stratejileri
Cluster Manager’lar ve Orkestrasyon
Spark Standalone, YARN, Mesos ve Kubernetes karşılaştırması
Her bir cluster manager’ın özellikleri ve en iyi uygulama örnekleri
Dağıtım ve Üretime Alım
Spark uygulamalarının paketlenmesi, deployment stratejileri
CI/CD süreçleri, otomatik dağıtım, versiyon kontrolü ve izleme yöntemleri
Kritik Uygulamalar ve Gerçek Zamanlı İzleme
Üretim ortamında Spark uygulamalarının performans izleme araçları
Hata yönetimi, otomatik yeniden başlatma ve kaynak yönetimi
Spark Ekosistemi ve İleri Entegrasyonlar
Diğer Büyük Veri Araçları ile Entegrasyon
Hadoop, HDFS, Hive, HBase entegrasyonları
Spark’ın diğer veri araçlarıyla uyumlu çalışması
Bulut Tabanlı Çözümler
AWS, Azure, Google Cloud üzerinde Spark uygulamalarının çalıştırılması
Managed Spark hizmetleri (Databricks, EMR, HDInsight)
Gelişmiş Araçlar ve İleri Konular
SparkR, PySpark ve Sparklyr kullanımı
Delta Lake, Structured Streaming gelişmeleri, MLflow ile model yönetimi
Bizimle iletişime geçin