Gerçek Zamanlı Veri Analitiği - Mimari

Oluşturma Tarihi : 22.10.2020

Gerçek zamanlı veri analitiği uygulamalarında kaynaktan başlayarak analitik katmana kadar verilerin alınması, işlenmesi ve gerekli aksiyonların alınması farklı ürün, platform ve yapıların birbirleriyle senkronize çalışmasını gerektirir.

Gerçek Zamanlı Veri Analitiği Platform ve Örnek Uygulamaları

Gerçek zamanlı veri analitiği uygulamalarında kaynaktan başlayarak analitik katmana kadar verilerin alınması, işlenmesi ve gerekli aksiyonların alınması farklı ürün, platform ve yapıların birbirleriyle senkronize çalışmasını gerektirir. Bu yapılara girecek olursak;

Clickhouse Zaman Serisi Veritabanı, HDFS ve Kafka Bağlantıları Gerçek zamanlı veri analitiği mimari yapıları ihtiyaçlara göre oluşturulmalıdır. Aşağıdaki örnek akışta amacımız; Kafka yapısından gelen verilerin Clickhouse Veritabanı üzerinde depolanarak SuperSet Analitik BI Uygulaması ile anlığa yakın sürelerde analiz edilebilmesidir. Böylece kullanıcılar görsel olarak akışı izleyebilmekte ve sorunları zamanında tespit edebilmektedirler. Şimdi bu akışın detaylarına bakalım.

Kafka-HDFS-Clickhouse Mimarisi

Clickhouse Tablo Tipleri Clickhouse içinde barındırdığı farklı tipte tablolar ile oldukça güçlü bir yapıya sahiptir. Bu tablo tipleri ile kolayca Kafka ve HDFS platformlarına bağlanabilir. Biz burada mimari yapımızın alt yapısını oluşturan iki önemli tablo tipine değineceğiz:

HDFS Engine: Bu tablo tipi ile HDFS sistemindeki dosyaları anlık olarak okuyup, SQL formatında sorgulayabiliyoruz. Superset Uygulaması bu tabloya ulaşarak sonuçları kullanıcıya gösterebiliyor. Bu tablo yapısı hızlıca verilere erişim sağlarken, HDFS dosya boyutu artıkça sorgu süreleri artmakta ve rapor sorgu cevap sürelerini de uzatmaktadır. Dolayısıyla küçük boyutlu veri analizleri ve HDFS dosyalarının hızlı analizi için uygun olmakla birlikte anlık (streaming) yapısına uygun bir alt yapı olmadığı görülmektedir. Ayrıca anlık veri senkronizasyon hızı Kafka’dan HDFS yazılan dosyanın güncelliği ile paraleldir.

Kafka Engine: Bu tablo tipi ve materialized view, datamart tablo yapısı kurularak anlığa yakın bir yapı kurulabilir. Bu süreç için gerekli yapılar aşağıdaki şekilde ve sırada yaratılmalıdır. Her sorguda kafka checkpoint değiştiği için bu verileri bir standart CH tablo yapısı içinde depolama ihtiyacı ortaya çıkmaktadır. Bunu sağlayabilmek için:

Kafka Engine Tablosu: Erişilmek istenen Kafka Topicler, grup, format ve consumer bilgileri de girilerek Clickhouse veritabanında Kafka Engine tablosu olarak yaratılır. Bu tablo Kafka Topic-leri anlık olarak dinler, her listeleme ve tetiklemede Kafka CheckPoint’i ilerleterek süreci devam ettirir. Bu veriler Clickhouse’a özgü ve diğer yapıların da kullanabileceği ortak bir Blok Veri katmanına yazılır. Şemada görüldüğü gibi. MergeTree Tablosu: Raporların kullandığı datamart tablosu. Kafka Engine tablosu oluşturulduktan sonra yaratılır. Çünkü bir sonraki adımdaki materilized view bu tabloyu kullanacaktır. Materalized View: Kafka Engine Tablosuna yeni veri geldiğinde tetiklenir ve Blok Veri yapısına yazılmış olan verileri MergeTree DM tablosuna aktarır. Bu veriler öncelikle Blok Veri katmanından alındığı için dakikalık gecikmeler yaşanmaktadır.

Clickhouse Kafka Engine Tablo Yapısının Artıları/Eksileri (+) Artılar: Veriler depolanabiliyor. Veriler anlığa yakın sürelerde online analitical processing (OLAP) süreci ile istenildiği şekilde analiz edilebiliyor. Veriler üzerinde performans, kalite, düzenleme gibi işlemler yapılabiliyor.

(-) Eksiler: Anlık akışı bu yapı ile yakalayamıyoruz, An’lığa yakın dakikalık farklar oluşmaktadır. Bunun sebebi, Materialized View’ın doğrudan verileri Kafka Engine sorgularından değil, Blok Veri katmanından almasıdır. Kafka Engine Tablosu her tetiklendiğinde Kafka Topik CheckPoint’i bir sonraki kuyruk yapısını gösterir. Tekrar sorgu atıldığında anlık verilere ulaşılamaz. Clickhouse bu durumu önceki akış verilerini Blok Veri Katmanında depolayarak çözmüş. Bu sayede geliştirilen her Materialized View ile önceki akış verilerine ulaşılabilmektedir.

Son not olarak; yukarıda anlattığımız mimari ile An’lığa yakın bir akış yakalanabilmektedir. An’lık veriler sadece sorgulanabilmekte, bununla birlikte depolama ve analitik süreçler için yukarıdaki An’lığa yakın mimari yapı kurulmalıdır.

Kafka Streaming Analytics Platform Kafka akan veri analitiğinde kullanılan en önemli platformlardan birisidir, kısaca Kafka’dan bahsedecek olursak; Kafka, Linkedin tarafından geliştirilen Open source bir üründür. 2011’de Apache projesi haline gelmiştir. Kafka, akan verileri depolamak, okumak ve analiz etmek için bir framework sağlayan açık kaynaklı bir yazılımdır. Büyük veriler ile çalışabilen, ölçeklenebilir, dağıtık sistemlere uygun, anlık toplanan veriyi hızla ve hatasız bir biçimde aktarabilen bir mesajlaşma sistemidir. Mesajlaşma Sistemi, verileri bir uygulamadan diğerine aktarmaktan sorumludur. Kafka, “dağıtılmış” bir ortamda çalışacak şekilde tasarlanmıştır. Böylelikle birkaç (veya daha fazla) sunucuda çalışarak ek işlem gücü ve depolama kapasitesinden yararlanabilirsiniz. Dağıtık mimarili bir yapıda verinin kaynaktan hedefe aktarılmasında önemli olan ilk koşul verinin güvenilirliğidir. Veri kaynaktan hedefe aktarılırken her hangi bir bozulmaya uğramaması gerekmektedir. Kafka message queue yapısı ile veriyi bozulmadan aynı sırada korumakta ve sunmaktadır. Kafka mesajları diskte tutar, sıfır kesinti ve sıfır veri kaybını garanti eder.

Linkedin’de Kafka’yı geliştiren ekip tarafından kurulan Confluent firması en kapsamlı Kafka çözüm ve desteğini vermektedir. Son yıllarda şirketin vizyonu Kafka’yı sadece bir akan veri platformu olmaktan çıkarıp bir analitik platform

KAFKA KSQL KSQL, gerçek zamanlı veri analizi için Kafka’da bir SQL frameworküdür. KSQL ölçeklenebilir, esnek ve hataya dayanıklıdır. Herhangi bir programlama dili kullanmadan Kafka topiclerine gelen anlık veriler üzerinde SQL queryleri yazmanızı sağlamaktadır. KSQL artık kendisini Streaming SQL Engine olarak değil Event Streaming Database olarak ifade etmektedir.

Akan veri üzerinde filtering, transformations, aggregations, joins, windowing, and sessionization gibi çeşitli operasyonları desteklemektedir. KSQL query sonuçları, Kafka Connect kullanılarak yeni topiclere veya external data stores lara yönlendirilebilir. KSQL ile veriyi Hadoop, Elastic, Cassandra veya başka herhangi bir veri sistemine aktarmadan önce gerçek zamanlı olarak veri üzerinden ETL işlemleri gerçekleştirebilirsiniz.

KSQL Desteklenen Veri Türleri:

KSQL ile anlık sorgular – Sonsuz SQL KSQL ile bildiğimiz veri tabanı ve Query kavramı da değişmektedir. Aşağıda göreceğiniz gibi klasik bir relational DB’de veri pasif, sorgu aktiftir, yani sadece biz sorgu attığımız zaman veri tabanı bir bilgi döner. KSQL ile ise aktif olan sorgu değil veridir, sorgu-query pasif modda beklemektedir. Bir veri geldiği anda aktif olarak sorgu çalışmakta ve sonuç döndürmektedir. Bu büyük değişiklik anlık verilerin analitiği kapsamında yeni kapılar açmaktadır.

KSQL ile yaptığımız örnek bir çözüm şu şekildedir; Kaynak veriler csv formatında Network File System’de bir dizine dakikalık yazılmaktadır. Java programlama dilini kullanarak geliştirdiğimiz servis ile dizini anlık olarak dinlemekteyiz. Csv formatında veri geldiği an servisimiz veriyi okuyup 4 node dan oluşan kafka brokerlarımızdaki ilgili topic e yazmaktadır. Bağlantı problemleri yaşanması durumunda Java servisimiz ilgili kişilere bilgilendirici mail de atmaktadır.

Kafka’ya gelen verileri anlık olarak sorgulamak için Kafka KSQL analitik yapısını kullanıyoruz. KSQL sorguları bir Kafka topiğini sürekli dinlemekte, filtrelere takılan veriler farklı bir Kafka Topic’e yazılmaktadır. Nasıl ki sql de queryleri bir tabloya create ediyorsak, Kafka mimarisinde queryler topiclere create edilmektedir.

Resimde görüldüğü gibi Kafka’ya akan datalar üzerinde business rule içeren query’miz aktive olmakta, ayrı bir Kafka Topic’e bunları yazmakta, yazılan veriler Apache Nifi ile okunarak mail olarak gönderilmektedir

Kafka topiğimize gelen veri aynı zamanda Spark Streaming ile dakikalık olarak okunup, hdfs sistemlerine aktarılmaktadır. Spark job’ını Hadoop Yarn üzerine cluster mode’da submit etmekteyiz. İş yükünü tek bir node üzerine vermek yerine birden fazla node üzerine gerçekleştirdik. Aynı zamanda Spark Job’ını Yarn üzerinde monitor etmekteyiz.

Superset ile Akan Veri Analitiği

SuperSet Genel Bakış: Süperset Airbnb tarafından geliştirilen ve 2017 yılında apache ailesine katılan web tabanlı open source bir iş zekası uygulamasıdır.

SQLAlchemy kütüphanesi ile çok sayıda datasource’a bağlanabilir. Desteklediği datasource’ların bazıları; Clickhouse Elasticsearch Oracle Postgresql MySql SQL Server IBM Db2 Teradata Exasol v.b. Kullanıcıları yetkilendirme ile yönetebilirsiniz. Dashboard’lar için standart template’lerin yanında kendi template’lerinizi CSS yazarak oluşturup farklı dashboard’lar için kullanabilirsiniz. Datasource’larınızı ilgili database üzerinden SQL editör desteği ile query yazarak oluşturabilirsiniz. Matric ve dimensions’lar oluşturabilirsiniz.

Aynı şekilde Clickhouse gibi yine column base bir veri tabanı ile de büyük veriyi analiz edebilirsiniz. Güvenlik açısından, superset eylem günlüğü ve kullanıcı istatistiklerini görmenizi sağlar. Kendi deneyimlediğimiz projemizde, Superset ile Clickhouse’u entegre ederek, akan veriler üzerinden realtime’a yakın bir görselleştirme sağlayarak hızlı ve kolay veriyi analiz edebilme imkanı sağladık. Yukarıda detaylı anlattığımız mimari yapı aşağıdaki gibidir.

Streaming Analytics: Veri görselleştirme aracı olduğu için süperseti hem batch analytics hemde real-time(streaming) analytics için kullanabiliriz.

Streaming data’da veriyi okuma hızı çok önemli olduğu için burada genellikle column base db’ler tercih edilir. Performans olarak çok daha hızlı çalışırlar. Qlickhouse gibi column base database’lere bağlanıp streaming veri üzerinden çıktılar üretebiliriz.

Süperset ile Streaming analytics dediğimizde, mutlaka druid’den bahsetmek gerekir. Durid süperset içerisinden tam entegrasyonu olan bir veri deposu aracıdır. Streaming olarak yüksek hacimli yüksek boyutlu ölçüm verilerini alabilir ve yanıt olarak sorgulayabilir.

Süperset aslında druid ile kullanılmak üzere tasarlanmış bir analitik arayüz olarak değerlendirilebilir. Sonuç olarak, Druid ve Süperset’i kullanarak Streaming analytics alanında geniş bir bakış açısına sahip olabiliriz.

Aşağıdaki mimari yapıyı kullanarak da, örneğin bir tweet analizi yada kullandığınız sistemler üzerinde arıza tahmin süreçleri gibi anlık olarak incelemeniz gereken streaming verileri yönetebilir ve izleyebilirsiniz.

Kürşat ŞahinKoçDigital
İlgili Konular

Gerçek Zamanlı Veri Analitiği - Mimari

Oluşturma Tarihi : 22.10.2020

Sizi arayabilmemiz için iletişim bilgilerinizi bırakabilirsiniz.

KoçDigital'in kurumlara değer yaratan çözümleri ile tanışın!

Şirketimize ileteceğiniz her türlü talep, şikayet ve önerilerin değerlendirilmesi ve sonuçlandırılması ile izin vermiş olmanız halinde tarafınıza ticari elektronik ileti gönderilmesi amacıyla kişisel verilerinizin işlenmesine yönelik detaylı bilgilere Müşteri Aydınlatma Metni üzerinden erişebilirsiniz. Bize iletmiş olduğunuz talep veya şikayetinizde aşağıda sıralanan özel nitelikli kişisel verilerin yer almadığından emin olmanızı rica ederiz: ırk, etnik köken, siyasi düşünce, felsefi inanç, kılık ve kıyafet, dernek, vakıf ya da sendika üyeliği, sağlık, cinsel hayata ilişkin veriler, ceza mahkûmiyeti ve güvenlik tedbirleriyle ilgili veriler, biyometrik ve genetik veriler.

×