Google Cloud Platform’da Gerçek Zamanlı Veri Akışı

Muhammed Celik
İstanbul Data Science Academy
6 min readOct 6, 2022

Aviationstack web API’sini kullanarak gerçek zamanlı havacılık verilerini Apache nifi ile uygulamalar arasında verilerin alışverişi için kullanılan Cloud Pub/Sub’a çekip Dataflow aracı ile BigQuery ortamına aktarıyor olacağız.

Bu projenin Google Cloud Platformu ve çeşitli veri mühendisliği araçları hakkında biraz bilgi sahibi olduğu varsayıldığını unutmayın.

Proje Adımları

  1. Api key alma
  2. VM üzerinde nifi ortamını oluşturma
  3. Pub/Sub Topic oluşturma
  4. Cloud Storage oluşturma
  5. Bigquery’de akış tablosu oluşturma
  6. Dataflow işlevini kullanarak verileri yönlendirme
  7. Nifi akış diagramı oluşturup çekilen datayı işleme
  8. Pub\Sub işlenen verileri yayınlama
  9. Bigquery’de sorgu işlemleri
  10. Data Studio görselleştirme

Aviationstack API

Birçok farklı kaynaktan veri çıkarmak için birçok yöntem vardır, ancak muhtemelen en basit ve yaygın yol bir API kullanmaktır. Aviationstack API’si, gerçek zamanlı ve geçmiş uçuşlar için küresel havacılık verilerine erişmenin basit bir yoludur. Ayrıca müşterilerin kapsamlı bir havayolu rotaları veri kümesine ve havacılıkla ilgili diğer güncel bilgilere erişmesine olanak sağlamak için oluşturulmuştur. REST API’ye yapılan istekler, basit bir HTTP GET URL yapısı kullanılarak yapılır ve yanıtlar JSON biçiminde sağlanır.

Hizmetlerini aşırı kullanmadığımız sürece, API istekleri göndermemize ve verilerini almamıza izin vermekte sorun yaşatmaz. Bir API anahtarı aldıktan sonra, verileri çekip web kazıma yapmak için Apache nifi aracını kullandım.

Başlangıç

İlk olarak ücretsiz API üyeliği oluşturup erişim anahtarını almalıyız. Doküman kısmında çeşitli bağlantı araçları örneklerini de bulabilirsiniz. https://aviationstack.com/documentation

Nifi Ortamı Oluşturun

Apache nifi kurulum aşamasına bir önceki yazıdan ulaşabilirsiniz.

Bir Api datası alan Nifi Dataflow Pipeline örneği aşağıdaki gibidir:

InvokeHTTP: URL kısmına API’mizin bağlantı ve anahtarını veriyoruz. Diğer ayarları olduğu gibi bırakabilirsiniz.

SplitJson: API den çektiğimiz Json datasında ihtiyacınız olmayan bölümü kesin.

JoltTransformJSON: Verinizi daha sade bir hale dönüştürün. Json datalarınızı farklı gruplara bölebilirsiniz. Buradan farklı türleri keşfedin : https://jolt-demo.appspot.com/#inception

Bu Json düzenlemesini Configure bölümünden Specification alanına kopyalayıp kullanabilirsiniz

Neden Nifi’yi kullanıyorsun?

Öncelikle, NiFi’yi öğretmek için burada yazmadığımı belirtmek isterim. Amacım, veri hattınızı oluşturmanın en iyi yolu hakkında bilinçli bir karar verebilmeniz için size yeterli öğeyi vermektir.

Yukarıdaki veri akışını NiFi’ye çevirmek için NiFi grafik kullanıcı ara yüzüne gidin, bileşenleri tuvale sürükleyip bırakın ve
bu kadar. İnşa etmek iki dakika sürer.

Şimdi, aynı şeyi yapmak için kod yazarsanız, benzer bir sonuç elde etmek için birkaç yüz satır uzunluğunda olması muhtemeldir.

Akış tabanlı bir yaklaşımla yaptığınız gibi, ardışık düzenin özünü kod aracılığıyla yakalamazsınız. Nifi, bir veri hattı oluşturmak için daha anlamlıdır. Bunu yapmak için tasarlanmıştır.

Verilerimizi küçük parçalara ayrılarak daha kolay işlem yapılmasına olanak sağlayan, dağıtık çalışan uygulamalardan anlık gelen mesajları belirli bir sırada almaya ve bu mesajları kaybetmemeye çalışan Google Cloud servisidir.

Yeni bir topic oluşturun ve ardından nifi ile haberleşmesi için service account’a erişmek istediğiniz hizmet hesap anahtarı ekleyin. Daha fazla bilgi için bir önceki nifi kurulumu yazısını rehber edinebilir, buradan eklenecek erişim izinlerinin aynını uygulayabilirsiniz.

Cloud’da oluşturduğunuz hesap anahtarını nifi Credentials servisine kopyalayın. Bu sayede nifi üzerinden istediğimiz datayı Cloud’a gönderebiliriz.

Sonraki adımda oluşturacağımız BigQuery servisinin Temp dosyalarını yol olarak göstereceğimiz Cloud Storage alanı oluşturacağız. Sol tarafta bulunan menüden ya da arama çubuğuna Cloud Storage yazıp servis alanına gidin ve bucket oluşturun.

BigQuery, makine öğrenimi, coğrafi analiz ve iş zekası gibi yerleşik özelliklerle verilerinizi yönetmenize ve analiz etmenize yardımcı olan, tümüyle yönetilen bir kurumsal veri ambarıdır. BigQuery’nin sunucusuz mimarisi, sıfır altyapı yönetimiyle kuruluşunuzun en büyük sorularını yanıtlamak için SQL sorgularını kullanmanıza olanak tanır. BigQuery’nin ölçeklenebilir, dağıtılmış analiz motoru, terabaytları saniyeler içinde ve petabaytları dakikalar içinde sorgulamanıza olanak tanır.https://cloud.google.com/bigquery/docs/introduction

Api’den çektiğimiz datayı anlık olarak yollayacağımız bu servise çektiğimiz datalara göre tablo oluşturacağız.

Kendi projemize ya da açtığınız farklı bir projeye dataset oluşturun ve ardından oluşturulan datasete yeni bir tablo açın.

Api’den çektiğiniz dataya göre tablo oluşturun ve select sorgusu atın.

Verilerimizi Pub/Sub üzerinden BigQuery servisine yönlendirmemize yarayacak olan DataFlow servisini kurun.

Google Cloud Dataflow, Amazon Kinesis , Apache Storm, Apache Spark ve Facebook Flux gibi rakip yazılım çerçeveleri ve hizmetleriyle örtüşür.

Cloud Dataflow, Google Cloud Pub/Sub ara yazılım feed’lerinden veya toplu modda herhangi bir veri tabanı veya dosya sisteminden veri alabilir. “Paralel koleksiyonlar” için kısa olan PCollections adlı bir biçimi kullanarak değişen boyut ve yapılardaki verileri agnostik olarak işler. Google Cloud Dataflow hizmeti ayrıca, temel şablonlar kullanarak sık tekrarlanan görevlerin yüksek düzeyde programlanmasına olanak tanıyan bir paralel dönüşüm veya PTransforms kitaplığı içerir; ek olarak, veri dönüşümlerinin geliştirici tarafından özelleştirilmesini destekler. Hizmet, işleme görevlerini optimize eder. Örneğin, birden çok görevi tek yürütme geçişlerine indirgeyerek. Ayrıca , bulut tabanlı bir analiz hizmeti olan Google BigQuery aracılığıyla SQL sorgularını destekler.https://www.techtarget.com/searchdatamanagement/definition/Google-Cloud-Dataflow

DataFlow servisinde yeni bir Job oluşturun.

Eğer böyle bir hata alırsanız konsol açarak şu komutu kullanın:

$gcloud services enable dataflow.googleapis.com

DataFlow oluşturduktan sonra aşağıdaki gibi bir Job çalışacaktır.

Nifi işlemcilerini çalıştırın ve BigQuery’de sorgu gerçekleştirin. Aşağıda görüldüğü üzere verileriler anlık olarak tabloya ekleniyor.

Data Studio

Veri kaynaklarınızı içeri aktardıktan sonra artık rapor oluşturmaya başlayabilirsiniz. Raporlar sekmesinde artı butonuna basarak yeni bir rapor oluşturabilirsiniz. Rapor sayfası açıldığında ilk olarak sağ taraftan veri kaynağı seçmeniz gerekecek. Daha sonra ise raporunuzu düzenlemeye başlayabilirsiniz.

BONUS

Yapmış olduğumuz CloudStorage, Pub/Sub ve DataFlow uygulamalarını hiç kullanmadan nifi üzerinde PutBigQueryBach işlemcisini kullanarak datalarınızı direk BigQuery servisine gönderebilirsiniz. Buradaki amacım Google Cloud’da veri akışı uygulamalarını göstermekti. Umarım faydalı olmuştur. İyi çalışmalar.

Bu çalışmayı yaparken birlikte tasarım yaptığımız Muhammet Ali Çınar’a teşekkür ederim.

--

--