Bu proje, Twitter verileri üzerinden havayolu şirketlerine yönelik duygu analizini gerçekleştiren kapsamlı bir Büyük Veri (Big Data) ekosistemidir. Proje; veri depolama, toplu işleme (batch), gerçek zamanlı akış (stream) ve veri ambarı katmanlarını bir araya getiren modern bir veri mühendisliği mimarisine sahiptir.
Sistem, iki ana veri işleme hattı (pipeline) üzerine kuruludur:
-
Batch Processing (Toplu İşleme):
- Veri Kaynağı: HDFS üzerinde saklanan
Tweets.csvham verisi. - İşleme: PySpark ile veriler okunur, şirket bazlı duygu istatistikleri (olumlu, olumsuz, nötr sayıları ve oranları) hesaplanır.
- Depolama: İşlenen sonuçlar performans optimizasyonu için Parquet formatında HDFS'e yazılır ve Hive üzerinden sorgulanabilir hale getirilir.
- Veri Kaynağı: HDFS üzerinde saklanan
-
Stream Processing (Gerçek Zamanlı İşleme):
- Veri Kaynağı: Apache Kafka üzerinden akan tweet verileri.
- İşleme: PyFlink kullanılarak düşük gecikmeli veri işleme yapılır.
- Çıktı (Multi-Sink): * Alert: Olumsuz (negative) tweetler anlık olarak konsola uyarı olarak basılır.
- Persistence: Tüm akış verisi kalıcı depolama için Avro formatında HDFS'e kaydedilir.
- Konteynerleştirme: Docker & Docker-Compose
- Dağıtık Dosya Sistemi: Hadoop HDFS
- Mesaj Kuyruğu: Apache Kafka & Zookeeper
- Veri İşleme: Apache Spark (PySpark) & Apache Flink (PyFlink)
- Veri Ambarı: Apache Hive (Metastore & HiveServer2)
- Veritabanı: PostgreSQL (Hive Metastore DB)
docker-compose.yml: Tüm servislerin (Kafka, Spark, Flink, Hadoop, Hive) orkestrasyonunu sağlar.batch_job.py: Spark üzerinde çalışan, duygu analizi agregasyonlarını yapan script.stream_job.py: Flink üzerinde çalışan, Kafka'dan veri okuyup HDFS'e ve konsola yazan script.init.sh: HDFS dizin yapısını ve Hive dış tablolarını (External Tables) otomatik oluşturan kurulum betiği.
-
Sistemi Ayağa Kaldırın:
docker-compose up -d
-
Batch Analizini Çalıştırın:
docker exec -it spark-master spark-submit --master spark://spark-master:7077 /spark-job/batch_job.py -
Gerçek Zamanlı Akışı Başlatın:
# Kafka'ya veri gönderin docker exec -it flink-jobmanager python /flink-job/producer.py # Flink işini başlatın docker exec -it flink-jobmanager ./bin/flink run -py /flink-job/stream_job.py
-
Sonuçları Hive Üzerinden Sorgulayın:
docker exec -it hive-server beeline -u jdbc:hive2://localhost:10000 -n root -e "SELECT * FROM batch_airline_sentiment;"
Bu proje kapsamında; dağıtık sistemlerin yönetimi, veri serileştirme formatlarının (Avro/Parquet) verimliliği, SQL tabanlı veri ambarı tasarımı ve gerçek zamanlı sistemlerde veri tutarlılığı konularında uçtan uca deneyim kazandım.