Skip to content

AminAzizzade/real-time-airline-sentiment-analysis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Airline Sentiment Analysis: End-to-End Big Data Pipeline

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.

🏗️ Mimari Yapı (Architecture)

Sistem, iki ana veri işleme hattı (pipeline) üzerine kuruludur:

  1. Batch Processing (Toplu İşleme):

    • Veri Kaynağı: HDFS üzerinde saklanan Tweets.csv ham 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.
  2. 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.

🛠️ Teknoloji Yığını (Tech Stack)

  • 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)

📂 Proje Bileşenleri

  • 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.

🚀 Çalıştırma Talimatları

  1. Sistemi Ayağa Kaldırın:

    docker-compose up -d
  2. Batch Analizini Çalıştırın:

    docker exec -it spark-master spark-submit --master spark://spark-master:7077 /spark-job/batch_job.py
  3. 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
  4. 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;"

🎯 Kazanımlar ve Deneyimler

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.

About

Modern büyük veri araçlarıyla (Spark, Flink, Kafka) Twitter duygu analizi mimarisi. Veri işleme, anlık alarm mekanizması ve çoklu veri saklama (Parquet/Avro) formatlarını içeren full-stack data engineering projesi.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors