Azure HDInsight’ta Apache Storm nedir?
Apache Storm; dağıtılmış, hataya dayanıklı, açık kaynaklı bir hesaplama sistemidir. Apache Hadoopile gerçek zamanlı olarak veri akışlarını Işlemek için fırtınası kullanabilirsiniz. Storm çözümleri ayrıca veriler için işleme garantisi sunabilir ve ilk seferinde başarıyla işlenmemiş olan veriler yeniden kullanılabilir.
HDInsight üzerinde neden Apache Storm kullanmalıyım?
HDInsight üzerinde Storm aşağıdaki özellikleri sunar:
%99 hizmet düzeyi sözleşmesi (SLA) fırtınası çalışma süresi: HDInsight üzerinde fırtınası, tam sürekli destek ile birlikte gelir. HDInsight üzerinde Storm ayrıca yüzde 99,9 SLA’ya sahiptir. Diğer bir deyişle Microsoft, Storm kümesinin, sürenin en az yüzde 99,9’unda dış bağlantıya sahip olacağını garanti eder. Daha fazla bilgi için bkz. Azure desteği. Ayrıca bkz. HDInsight Için SLA bilgileri belgesi.
Oluşturma sırasında veya sonrasında Storm kümesinde betik çalıştırarak kolay özelleştirmeyi destekler. Daha fazla bilgi için bkz. HDInsight kümelerini betik eylemi kullanarak özelleştirme.
Birden fazla dilde çözümler oluşturma: Storm bileşenlerini Java, C# ve Python gibi dilediğiniz bir dilde yazabilirsiniz.
C# topolojisi geliştirme, yönetme ve izleme için HDInsight ile Visual Studio’yu tümleştirir. Daha fazla bilgi için bkz. Visual Studio için HDInsight Araçlarıyla C# Storm topolojileri geliştirme.
Trident Java arabirimini destekler. İletilerin tam olarak bir kez işlenmesini, işlemsel veri deposu kalıcılığını ve sık kullanılan Stream Analytics işlemlerini destekleyen Storm topolojileri oluşturabilirsiniz.
Dinamik ölçeklendirme: Çalışan Storm topolojilerini etkilemeden çalışan düğümleri ekleyebilir veya kaldırabilirsiniz. Ölçeklendirme işlemleri aracılığıyla eklenen yeni düğümlerden yararlanmak için çalışan topolojileri devre dışı bırakıp yeniden etkinleştirin.
Birden çok Azure hizmetini kullanarak akış işlem hatları oluşturma: HDInsight 'ta fırtınası diğer Azure hizmetleriyle tümleştirilir. Event Hubs, SQL veritabanı, Azure depolama ve Azure Data Lake Storage gibi. Azure hizmetleriyle tümleşen örnek bir çözüm için bkz. HDInsight 'ta Apache Storm Event Hubs olayları işleme.
Gerçek zamanlı analiz çözümleri için Apache Storm kullanan şirketlerin listesi için, bkz. Apache Storm kullanan şirketler.
Fırtınası kullanmaya başlamak için bkz. Azure HDInsight 'ta Apache Storm topolojisi oluşturma ve izleme.
Apache Storm nasıl çalışır?
Fırtınası, tanıdık olabileceğiniz Apache Hadoop MapReduce işleri yerine topolojiler çalıştırır. Storm topolojileri döngüsel olmayan yönlü grafikte (DAG) düzenlenmiş birden fazla bileşenden oluşur. Veriler grafikteki bileşenler arasında akar. Her bileşen bir veya daha fazla veri akışı kullanır ve isteğe bağlı olarak bir veya daha fazla akış yayar. Aşağıdaki diyagram, temel bir sözcük sayısı topolojisindeki bileşenler arasında verilerin nasıl aktığını gösterir:
Spout bileşenleri, verileri bir topolojiye getirir. Bu bileşenler topolojiye bir veya daha fazla akış yayar.
Bolt bileşenleri, spout veya diğer boltlardan yayılan akışları kullanır. Boltlar topolojiye isteğe bağlı olarak akışlar yayabilir. Boltlar ayrıca HDFS, Kafka veya HBase gibi dış hizmetlere veya depolama alanlarına veri yazmaktan sorumludur.
Güvenilirlik
Apache Storm, veri analizi yüzlerce düğüme dağıldığında bile tüm gelen iletilerin her zaman tamamen işleneceğini garanti eder.
Nimbus düğümü Apache Hadoop JobTracker şuna benzer işlevsellik sağlar. Nimbus, Apache ZooKeeper aracılığıyla bir kümedeki diğer düğümlere görevler atar. Zookeeper düğümleri bir küme için koordinasyon sağlar ve çalışan düğümlerinde Nimbus ile gözetmen işlemi arasındaki iletişime yardımcı olur. Bir işleme düğümü devre dışı kalırsa Nimbus düğümü bilgilendirilir ve görevi ve ilişkili verileri başka bir düğüme atar.
Apache Storm kümeleri için varsayılan yapılandırma yalnızca bir Nimbus düğümü içerir. HDInsight üzerindeki Storm iki Nimbus düğümü sağlar. Birincil düğüm başarısız olursa birincil düğüm kurtarılırken Storm kümesi ikincil düğüme geçiş yapar. Aşağıdaki diyagramda HDInsight üzerinde Storm için görev akışı yapılandırması gösterilmektedir:
Kullanım kolaylığı
| Kullanın | Description |
|---|---|
| Secure Shell (SSH) bağlantısı | SSH kullanarak, Internet üzerinden fırtınası kümenizin baş düğümlerine erişebilirsiniz. SSH kullanarak komutları doğrudan kümeniz üzerinde çalıştırabilirsiniz. Daha fazla bilgi için bkz. HDInsight ile SSH kullanma. |
| Web bağlantısı | Tüm HDInsight kümeleri, ambarı Web Kullanıcı arabirimi sağlar. Ambari web kullanıcı arabirimini kullanarak kümenizdeki hizmetleri kolayca izleyebilir, yapılandırabilir ve yönetebilirsiniz. Storm kümeleri ayrıca Storm Kullanıcı Arabirimini sağlar. Storm kullanıcı arabirimini kullanarak, çalışan Storm topolojilerini tarayıcınızdan izleyip yönetebilirsiniz. Daha fazla bilgi için bkz. Apache ambarı Web Kullanıcı arabirimini kullanarak HDInsight 'ı yönetme ve Apache Storm UI belgelerini kullanarak izleme ve yönetme . |
| Azure PowerShell ve Azure CLı | Hem PowerShell hem de Azure CLı, HDInsight ve diğer Azure hizmetleriyle çalışmak için istemci sisteminizden kullanabileceğiniz komut satırı yardımcı programları sağlar. |
| Visual Studio tümleştirmesi | Visual Studio için Azure Data Lake Araçları, SCP.NET çerçevesini kullanarak C# fırtınası topolojileri oluşturmaya yönelik proje şablonları içerir. Data Lake Araçları ayrıca HDInsight üzerinde Storm ile çözümleri dağıtma, izleme ve yönetmeye yönelik araçlar sağlar. Daha fazla bilgi için bkz. Visual Studio için HDInsight Araçlarıyla C# Storm topolojileri geliştirme. |
Diğer Azure hizmetleriyle tümleştirme
Azure Data Lake Storage: bkz. hdınsight üzerinde Apache Storm Azure Data Lake Storage kullanma.
Event Hubs: Event Hubs’ı bir Storm kümesi ile kullanma örneği için aşağıdaki örneklere bakın:
SQL Veritabanı, Cosmos DB, Event Hubs ve HBase: Visual Studio için Data Lake Araçlarına şablon örnekleri eklenmiştir. Daha fazla bilgi için bkz. HDInsight üzerinde Apache Storm Için C# topolojisi geliştirme.
Apache Storm kullanım örnekleri
HDInsight üzerinde Storm kullanabileceğiniz bazı yaygın senaryolar aşağıda verilmiştir:
- Nesnelerin İnterneti (IoT)
- Sahtekarlık algılama
- Sosyal analiz
- Ayıklama, dönüşüm ve yükleme (ETL)
- Ağ izleme
- Arayın
- Mobil katılım
Gerçek zamanlı senaryolar hakkında daha fazla bilgi için bkz. şirketler Apache Storm belge kullanma .
Geliştirme
.NET geliştiricileri, Visual Studio için Data Lake Araçları kullanarak C# dilinde topolojiler tasarlayıp uygulayabilir. Ayrıca Java ve C# bileşenlerini kullanan karma topolojiler de oluşturabilirsiniz. Daha fazla bilgi için bkz. Visual Studio kullanarak HDInsight üzerinde Apache Storm için C# topolojileri geliştirme.
Ayrıca seçtiğiniz IDE’yi kullanarak Java çözümleri geliştirebilirsiniz. Daha fazla bilgi için bkz. HDInsight üzerinde Apache Storm Için Java topolojileri geliştirme.
Storm bileşenleri geliştirmek için Python da kullanılabilir. Daha fazla bilgi için bkz. HDInsight 'Ta Python kullanarak Apache Storm topolojileri geliştirme.
Yaygın geliştirme desenleri
Garantili ileti işleme
Apache Storm farklı düzeylerde garantili ileti işleme sağlayabilir. Örneğin, temel bir fırtınası uygulaması en az bir kez işlemeyi garanti eder ve Trident tam bir kez işlemeyi garanti edebilir. Bkz. apache.org adresindeki veri Işleme garantisi .
IBasicBolt
Bir giriş tanımlama grubunu okuma, sıfır veya daha fazla tanımlama grubu yayma ve ardından yürütme yönteminin sonunda giriş tanımlama alanının hemen onaylanmasının düzeni yaygındır. Storm bu deseni otomatik hale getirmek için IBasicBolt arabirimini kullanır.
Birleştirmeler
Uygulamalar arasına veri akışları nasıl katılır? Örneğin, birden çok akıştan her bir tanımlama grubunu yeni bir akışta birleştirebilirsiniz veya yalnızca belirli bir pencere için tanımlama grubu toplu işlerini birleştirebilirsiniz. Her iki durumda da katılım, fieldsGrouping kullanılarak gerçekleştirilebilir. Alan gruplandırma, tanımlama gruplarının boltlara nasıl yönlendirileceğini tanımlamanın bir yoludur.
Aşağıdaki Java örneğinde fieldsGrouping, "1", "2" ve "3" bileşenlerinden kaynaklanan tanımlama gruplarını MyJoiner boltuna yönlendirmek için kullanılır:
builder.setBolt("join", new MyJoiner(), parallelism) .fieldsGrouping("1", new Fields("joinfield1", "joinfield2")) .fieldsGrouping("2", new Fields("joinfield1", "joinfield2")) .fieldsGrouping("3", new Fields("joinfield1", "joinfield2"));
Toplu işler
Apache Storm "değer çizgisi tanımlama grubu" olarak bilinen bir iç zamanlama mekanizmasını sağlar. Değer çizgisi tanımlama grubunun topolojiniz içinde ne sıklıkta yayıldığını ayarlayabilirsiniz.
Bir C# bileşeninden değer çizgisi tanımlama grubu kullanımı örneği için bkz. PartialBoltCount.cs.
Önbellekler
Bellek içi önbelleğe alma, sık kullanılan varlıkları bellekte tuttuğu için çoğunlukla işlemeyi hızlandırmaya yönelik bir mekanizma olarak kullanılır. Bir topoloji birden fazla düğüme ve her bir düğüm içindeki birden fazla işleme dağıtıldığı için, fieldsGrouping kullanmayı düşünmeniz gerekir. Önbellek araması için kullanılan alanları içeren tanımlama gruplarının her zaman aynı işleme yönlendirildiğinden emin olmak için fieldsGrouping kullanın. Bu gruplandırma işlevi, süreçler arasında önbellek girişlerinin yinelenmesini önler.
"İlk N" akış
Topolojiniz bir "ilk N" değeri hesaplamaya bağlıysa, ilk N değeri paralel olarak hesaplayın. Ardından bu hesaplamaların çıktısını genel bir değerde birleştirmeniz gerekir. Bu işlem, alanı paralel işleme için yönlendirmek üzere fieldsGrouping kullanılarak yapılabilir. Ardından, ilk n değerini genel olarak belirleyen bir bolta yönlendirebilirsiniz.
İlk N değeri hesaplama örneği için Rollingtopwords örneğine bakın.
Günlüğe Kaydetme
Fırtınası, bilgileri günlüğe kaydetmek için Apache Log4J 2 kullanır. Varsayılan olarak, büyük miktarlarda veriler günlüğe kaydedilir ve bilgilerin sıralanması zor olabilir. Günlüğe kaydetme davranışını denetlemek üzere Storm topolojinizin bir parçası olarak günlük yapılandırma dosyası ekleyebilirsiniz.
Günlüğün nasıl yapılandırılacağını gösteren örnek bir topoloji için HDInsight üzerinde Storm için Java tabanlı WordCount örneğine bakın.
Sonraki adımlar
HDInsight üzerinde Apache Storm ile gerçek zamanlı analiz çözümleri hakkında daha fazla bilgi edinin: