Apache Storm - Temel Kavramlar

Apache Storm, gerçek zamanlı verilerin ham akışını bir uçtan okur ve bunu bir dizi küçük işlem biriminden geçirir ve diğer uçta işlenmiş / yararlı bilgileri verir.

Aşağıdaki diyagram, Apache Storm'un temel konseptini tasvir etmektedir.

Şimdi Apache Storm'un bileşenlerine daha yakından bakalım -

Bileşenler Açıklama
Tuple Tuple, Storm'daki ana veri yapısıdır. Sıralı elemanların bir listesidir. Varsayılan olarak, bir Tuple tüm veri türlerini destekler. Genellikle, virgülle ayrılmış değerler kümesi olarak modellenir ve bir Storm kümesine aktarılır.
Akış Akış, sıralanmamış bir demet dizisidir.
Musluklar Akışın kaynağı. Storm genellikle Twitter Akış API'si, Apache Kafka kuyruğu, Kestrel kuyruğu vb. Gibi ham veri kaynaklarından girdi verilerini kabul eder. Aksi takdirde veri kaynaklarından veri okumak için spout'lar yazabilirsiniz. "ISpout", ağları uygulamak için temel arabirimdir. Belirli arabirimlerin bazıları IRichSpout, BaseRichSpout, KafkaSpout vb.
Cıvatalar Cıvatalar mantıksal işlem birimleridir. Kanallar verileri cıvatalara ve cıvatalara aktarır ve yeni bir çıktı akışı üretir. Cıvatalar; filtreleme, toplama, birleştirme, veri kaynakları ve veritabanları ile etkileşim kurma işlemlerini gerçekleştirebilir. Bolt verileri alır ve bir veya daha fazla cıvataya yayar. "IBolt", cıvataların uygulanması için temel arayüzdür. Ortak arayüzlerden bazıları IRichBolt, IBasicBolt, vs.'dir.

Gerçek zamanlı bir "Twitter Analizi" örneğini ele alalım ve Apache Storm'da nasıl modellenebileceğini görelim. Aşağıdaki şema yapıyı göstermektedir.

"Twitter Analizi" girdisi, Twitter Akış API'sinden gelir. Spout, Twitter Akış API'sini kullanan kullanıcıların tweet'lerini okuyacak ve bir demet akışı olarak çıktı alacaktır. Musluktan tek bir demet, virgülle ayrılmış değerler olarak bir twitter kullanıcı adına ve tek bir tweet'e sahip olacaktır. Ardından, bu tuple buharı Bolt'a iletilecek ve Bolt, tweet'i ayrı kelimeye bölecek, kelime sayısını hesaplayacak ve bilgileri yapılandırılmış bir veri kaynağında saklayacaktır. Artık veri kaynağını sorgulayarak sonucu kolayca alabiliyoruz.

Topoloji

Musluklar ve cıvatalar birbirine bağlanır ve bir topoloji oluştururlar. Gerçek zamanlı uygulama mantığı, Storm topolojisinde belirtilir. Basit bir deyişle, bir topoloji, köşelerin hesaplama ve kenarların veri akışı olduğu yönlendirilmiş bir grafiktir.

Basit bir topoloji musluklarla başlar. Spout, verileri bir veya daha fazla cıvataya yayar. Cıvata, topolojide en küçük işleme mantığına sahip bir düğümü temsil eder ve bir cıvatanın çıkışı, girdi olarak başka bir cıvataya gönderilebilir.

Fırtına, topolojiyi siz topolojiyi yok edene kadar çalışır durumda tutar. Apache Storm'un ana görevi topolojiyi çalıştırmaktır ve belirli bir zamanda herhangi bir sayıda topolojiyi çalıştıracaktır.

Görevler

Artık musluklar ve cıvatalar hakkında temel bir fikriniz var. Topolojinin en küçük mantıksal birimleridir ve tek bir ağız ve bir dizi cıvata kullanılarak bir topoloji oluşturulur. Topolojinin başarılı bir şekilde çalışması için belirli bir sırada düzgün bir şekilde yürütülmeleri gerekir. Her bir musluğun ve cıvatanın Storm tarafından yürütülmesine "Görevler" denir. Basit bir deyişle, bir görev ya bir musluğun ya da bir cıvatanın yürütülmesidir. Belirli bir zamanda, her ağız ve cıvata, birden çok ayrı dişte çalışan birden çok örneğe sahip olabilir.

İşçiler

Bir topoloji, birden çok çalışan düğümde dağıtılmış bir şekilde çalışır. Storm, görevleri tüm çalışan düğümlerine eşit olarak yayar. Çalışan düğümünün rolü, işleri dinlemek ve yeni bir iş geldiğinde işlemleri başlatmak veya durdurmaktır.

Akış Gruplaması

Veri akışı, ağızlardan cıvatalara veya bir cıvatadan başka bir cıvataya akar. Akış gruplama, tupleların topolojide nasıl yönlendirildiğini kontrol eder ve topolojideki tuple akışını anlamamıza yardımcı olur. Aşağıda açıklandığı gibi dört yerleşik grup vardır.

Karışık Gruplama

Karışık gruplamada, cıvataları çalıştıran tüm çalışanlara rastgele eşit sayıda tuple dağıtılır. Aşağıdaki şema yapıyı göstermektedir.

Alan Gruplaması

Demetlerdeki aynı değerlere sahip alanlar birlikte gruplanır ve kalan demetler dışarıda tutulur. Daha sonra, aynı alan değerlerine sahip demetler, cıvataları uygulayan aynı işçiye iletilir. Örneğin, akım "kelime" alanına göre gruplandırılmışsa, aynı dizeye sahip tuplelar, "Merhaba" aynı işçiye taşınacaktır. Aşağıdaki diyagram, Alan Gruplamasının nasıl çalıştığını gösterir.

Küresel Gruplama

Tüm akışlar gruplanabilir ve tek bir cıvataya iletilebilir. Bu gruplama, kaynağın tüm örnekleri tarafından oluşturulan demetleri tek bir hedef örneğe gönderir (özellikle, en düşük kimliğe sahip çalışanı seçin).

Tüm Gruplamalar

Tüm Gruplama, alıcı cıvatanın tüm örneklerine her demetin tek bir kopyasını gönderir. Bu tür bir gruplama, cıvatalara sinyal göndermek için kullanılır. Tüm gruplama, birleştirme işlemleri için kullanışlıdır.