Azure HDInsight’ta Apache Storm nedir?What is Apache Storm on Azure HDInsight?

Apache Storm; dağıtılmış, hataya dayanıklı, açık kaynaklı bir hesaplama sistemidir.Apache Storm is a distributed, fault-tolerant, open-source computation system. Apache Hadoopile gerçek zamanlı olarak veri akışlarını Işlemek için fırtınası kullanabilirsiniz.You can use Storm to process streams of data in real time with Apache Hadoop. Storm çözümleri ayrıca ilk seferde başarılı bir şekilde işlenmemiş verileri yeniden yürütme özelliğiyle birlikte verilerin garantili işlenmesini sağlayabilir.Storm solutions can also provide guaranteed processing of data, with the ability to replay data that was not successfully processed the first time.

HDInsight üzerinde neden Apache Storm kullanmalıyım?Why use Apache Storm on HDInsight?

HDInsight üzerinde Storm aşağıdaki özellikleri sunar:Storm on HDInsight provides the following features:

  • Storm çalışma süresiyle ilgili %99 Hizmet Düzeyi Sözleşmesi : Daha fazla bilgi için HDInsight için SLA bilgileri belgesine göz atın.99% Service Level Agreement (SLA) on Storm uptime: For more information, see the SLA information for HDInsight document.

  • Oluşturma sırasında veya sonrasında Storm kümesinde betik çalıştırarak kolay özelleştirmeyi destekler.Supports easy customization by running scripts against a Storm cluster during or after creation. Daha fazla bilgi için bkz. HDInsight kümelerini betik eylemi kullanarak özelleştirme.For more information, see Customize HDInsight clusters using script action.

  • Birden fazla dilde çözümler oluşturma: Storm bileşenlerini Java, C# ve Python gibi dilediğiniz bir dilde yazabilirsiniz.Create solutions in multiple languages: You can write Storm components in the language of your choice, such as Java, C#, and Python.

    • C# topolojisi geliştirme, yönetme ve izleme için HDInsight ile Visual Studio’yu tümleştirir.Integrates Visual Studio with HDInsight for the development, management, and monitoring of C# topologies. Daha fazla bilgi için bkz. Visual Studio için HDInsight Araçlarıyla C# Storm topolojileri geliştirme.For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

    • Trident Java arabirimini destekler.Supports the Trident Java interface. İ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.You can create Storm topologies that support exactly once processing of messages, transactional datastore persistence, and a set of common stream analytics operations.

  • Dinamik ölçeklendirme: Çalışan Storm topolojilerini etkilemeden çalışan düğümleri ekleyebilir veya kaldırabilirsiniz.Dynamic scaling: You can add or remove worker nodes with no impact to running Storm topologies.

    • Ölçeklendirme işlemleriyle eklenen birkaç yeni düğümden yararlanmak için, çalışan topolojileri devre dışı bırakıp yeniden etkinleştirebilirsiniz.You must deactivate and reactivate running topologies to take advantage of new nodes added through scaling operations.
  • Birden çok Azure hizmetini kullanarak akış işlem hatları oluşturma: HDInsight 'ta fırtınası Event HUBS, SQL veritabanı, Azure depolama ve Azure Data Lake Storage gibi diğer Azure hizmetleriyle tümleştirilir.Create streaming pipelines using multiple Azure services: Storm on HDInsight integrates with other Azure services such as Event Hubs, SQL Database, Azure Storage, and Azure Data Lake Storage.

    Azure hizmetleriyle tümleşen örnek bir çözüm için bkz. HDInsight 'ta Apache Storm Event Hubs olayları işleme.For an example solution that integrates with Azure services, see Process events from Event Hubs with Apache Storm on HDInsight.

Gerçek zamanlı analiz çözümleri için Apache Storm kullanan şirketlerin listesi için bkz. Apache Storm Kullanan Şirketler.For a list of companies that are using Apache Storm for their real-time analytics solutions, see Companies using Apache Storm.

Fırtınası kullanmaya başlamak için bkz. Azure HDInsight 'ta Apache Storm topolojisi oluşturma ve izleme.To get started using Storm, see Create and monitor an Apache Storm topology in Azure HDInsight.

Apache Storm nasıl çalışır?How does Apache Storm work

Fırtınası, tanıdık olabileceğiniz Apache Hadoop MapReduce işleri yerine topolojiler çalıştırır.Storm runs topologies instead of the Apache Hadoop MapReduce jobs that you might be familiar with. Storm topolojileri döngüsel olmayan yönlü grafikte (DAG) düzenlenmiş birden fazla bileşenden oluşur.Storm topologies are composed of multiple components that are arranged in a directed acyclic graph (DAG). Veriler grafikteki bileşenler arasında akar.Data flows between the components in the graph. Her bileşen bir veya daha fazla veri akışı kullanır ve isteğe bağlı olarak bir veya daha fazla akış yayar.Each component consumes one or more data streams, and can optionally emit one or more streams. Aşağıdaki diyagram, temel bir sözcük sayısı topolojisindeki bileşenler arasında verilerin nasıl aktığını gösterir:The following diagram illustrates how data flows between components in a basic word-count topology:

Bileşenlerin bir Storm topolojisinde nasıl düzenlendiğini gösteren örnek

  • Spout bileşenleri, verileri bir topolojiye getirir.Spout components bring data into a topology. Bu bileşenler topolojiye bir veya daha fazla akış yayar.They emit one or more streams into the topology.

  • Bolt bileşenleri, spout veya diğer boltlardan yayılan akışları kullanır.Bolt components consume streams emitted from spouts or other bolts. Boltlar topolojiye isteğe bağlı olarak akışlar yayabilir.Bolts might optionally emit streams into the topology. Boltlar ayrıca HDFS, Kafka veya HBase gibi dış hizmetlere veya depolama alanlarına veri yazmaktan sorumludur.Bolts are also responsible for writing data to external services or storage, such as HDFS, Kafka, or HBase.

GüvenilirlikReliability

Apache Storm, veri analizi yüzlerce düğüme dağıldığında bile tüm gelen iletilerin her zaman tamamen işleneceğini garanti eder.Apache Storm guarantees that each incoming message is always fully processed, even when the data analysis is spread over hundreds of nodes.

Nimbus düğümü, Apache Hadoop JobTracker öğesine benzer işlevler sağlar ve Apache ZooKeeperaracılığıyla bir kümedeki diğer düğümlere görevler atar.The Nimbus node provides functionality similar to the Apache Hadoop JobTracker, and it assigns tasks to other nodes in a cluster through Apache ZooKeeper. Zookeeper düğümleri küme için eşgüdüm sağlar ve çalışan düğümleri üzerinde Nimbus ile Supervisor işlemi arasındaki iletişimi kolaylaştırır.Zookeeper nodes provide coordination for a cluster and facilitate communication between Nimbus and the Supervisor process on the worker nodes. 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.If one processing node goes down, the Nimbus node is informed, and it assigns the task and associated data to another node.

Apache Storm kümeleri için varsayılan yapılandırma yalnızca bir Nimbus düğümü içerir.The default configuration for Apache Storm clusters is to have only one Nimbus node. HDInsight üzerindeki Storm iki Nimbus düğümü sağlar.Storm on HDInsight provides two Nimbus nodes. Birincil düğüm başarısız olursa birincil düğüm kurtarılırken Storm kümesi ikincil düğüme geçiş yapar.If the primary node fails, the Storm cluster switches to the secondary node while the primary node is recovered. Aşağıdaki diyagramda HDInsight üzerinde Storm için görev akışı yapılandırması gösterilmektedir:The following diagram illustrates the task flow configuration for Storm on HDInsight:

Nimbus, zookeeper ve supervisor diyagramı

Oluşturma kolaylığıEase of creation

HDInsight üzerinde dakikalar için yeni bir Storm kümesi oluşturabilirsiniz.You can create a new Storm cluster on HDInsight in minutes. Bir fırtınası kümesi oluşturma hakkında daha fazla bilgi için, bkz. Azure Portal kullanarak Apache Hadoop kümeleri oluşturma.For more information on creating a Storm cluster, see Create Apache Hadoop clusters using the Azure portal.

Kullanım kolaylığıEase of use

  • Secure Shell (SSH) bağlantısı: Storm kümenizin baş düğümlerine İnternet üzerinden SSH kullanarak erişebilirsiniz.Secure Shell (SSH) connectivity: You can access the head nodes of your Storm cluster over the Internet by using SSH. SSH kullanarak komutları doğrudan kümeniz üzerinde çalıştırabilirsiniz.You can run commands directly on your cluster by using SSH.

    Daha fazla bilgi için bkz. HDInsight ile SSH kullanma.For more information, see Use SSH with HDInsight.

  • Web bağlantısı: Tüm HDInsight kümeleri Ambari web kullanıcı arabirimini sunar.Web connectivity: All HDInsight clusters provide the Ambari web UI. Ambari web kullanıcı arabirimini kullanarak kümenizdeki hizmetleri kolayca izleyebilir, yapılandırabilir ve yönetebilirsiniz.You can easily monitor, configure, and manage services on your cluster by using the Ambari web UI. Storm kümeleri ayrıca Storm Kullanıcı Arabirimini sağlar.Storm clusters also provide the Storm UI. Storm kullanıcı arabirimini kullanarak, çalışan Storm topolojilerini tarayıcınızdan izleyip yönetebilirsiniz.You can monitor and manage running Storm topologies from your browser by using the Storm UI.

    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 .For more information, see the Manage HDInsight using the Apache Ambari Web UI and Monitor and manage using the Apache Storm UI documents.

  • Azure PowerShell ve Azure klasık CLI: PowerShell ve klasik CLI, HDInsight ve diğer Azure hizmetleriyle çalışmak için istemci sisteminizden kullanabileceğiniz komut satırı yardımcı programları sağlar.Azure PowerShell and Azure Classic CLI: PowerShell and classic CLI both provide command-line utilities that you can use from your client system to work with HDInsight and other Azure services.

  • Visual Studio tümleştirmesi: Visual Studio için Azure Data Lake Araçları, SCP.NET çerçevesini kullanarak bir C# fırtınası topolojisi oluşturmaya yönelik proje şablonları içerir.Visual Studio integration: Azure Data Lake Tools for Visual Studio include project templates for creating C# Storm topologies by using the SCP.NET framework. Data Lake Araçları ayrıca HDInsight üzerinde Storm ile çözümleri dağıtma, izleme ve yönetmeye yönelik araçlar sağlar.Data Lake Tools also provide tools to deploy, monitor, and manage solutions with Storm on HDInsight.

    Daha fazla bilgi için bkz. Visual Studio için HDInsight Araçlarıyla C# Storm topolojileri geliştirme.For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

Diğer Azure hizmetleriyle tümleştirmeIntegration with other Azure services

DestekSupport

HDInsight üzerinde Storm kurumsal düzeyde kesintisiz tam destek ile birlikte gelir.Storm on HDInsight comes with full enterprise-level continuous support. HDInsight üzerinde Storm ayrıca yüzde 99,9 SLA’ya sahiptir.Storm on HDInsight also has an SLA of 99.9 percent. 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.That means Microsoft guarantees that a Storm cluster has external connectivity at least 99.9 percent of the time.

Daha fazla bilgi için bkz. Azure desteği.For more information, see Azure support.

Apache Storm kullanım örnekleriApache Storm use cases

HDInsight üzerinde Storm kullanabileceğiniz bazı yaygın senaryolar aşağıda verilmiştir:The following are some common scenarios for which you might use Storm on HDInsight:

  • Nesnelerin İnterneti (IoT)Internet of Things (IoT)
  • Sahtekarlık algılamaFraud detection
  • Sosyal analizSocial analytics
  • Ayıklama, dönüşüm ve yükleme (ETL)Extraction, transformation, and loading (ETL)
  • Ağ izlemeNetwork monitoring
  • SearchSearch
  • Mobil katılımMobile engagement

Gerçek zamanlı senaryolar hakkında daha fazla bilgi için bkz. şirketler Apache Storm belge kullanma .For information about real-world scenarios, see the How companies are using Apache Storm document.

GeliştirmeDevelopment

.NET geliştiricileri, Visual Studio için Data Lake Araçları kullanarak C# dilinde topolojiler tasarlayıp uygulayabilir..NET developers can design and implement topologies in C# by using Data Lake Tools for Visual Studio. Ayrıca Java ve C# bileşenlerini kullanan karma topolojiler de oluşturabilirsiniz.You can also create hybrid topologies that use Java and C# components.

Daha fazla bilgi için bkz. Visual Studio kullanarak HDInsight üzerinde Apache Storm için C# topolojileri geliştirme.For more information, see Develop C# topologies for Apache Storm on HDInsight using Visual Studio.

Ayrıca seçtiğiniz IDE’yi kullanarak Java çözümleri geliştirebilirsiniz.You can also develop Java solutions by using the IDE of your choice. Daha fazla bilgi için bkz. HDInsight üzerinde Apache Storm Için Java topolojileri geliştirme.For more information, see Develop Java topologies for Apache Storm on HDInsight.

Storm bileşenleri geliştirmek için Python da kullanılabilir.Python can also be used to develop Storm components. Daha fazla bilgi için bkz. HDInsight 'Ta Python kullanarak Apache Storm topolojileri geliştirme.For more information, see Develop Apache Storm topologies using Python on HDInsight.

Yaygın geliştirme desenleriCommon development patterns

Garantili ileti işlemeGuaranteed message processing

Apache Storm farklı düzeylerde garantili ileti işleme sağlayabilir.Apache Storm can provide different levels of guaranteed message processing. Örneğin, temel bir fırtınası uygulaması en az bir kez işlemeyi garanti edebilir ve Trident tam bir kez işlemeyi garanti edebilir.For example, a basic Storm application can guarantee at-least-once processing, and Trident can guarantee exactly once processing.

Daha fazla bilgi için apache.org sayfasındaki Veri işleme garantileri bölümüne bakın.For more information, see Guarantees on data processing at apache.org.

IBasicBoltIBasicBolt

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ş kayıt kümesini hemen ele verme düzeni ortaktır.The pattern of reading an input tuple, emitting zero or more tuples, and then acknowledging the input tuple immediately at the end of the execute method is common. Storm bu deseni otomatik hale getirmek için IBasicBolt arabirimini kullanır.Storm provides the IBasicBolt interface to automate this pattern.

BirleştirmeJoins

Uygulamalar arasına veri akışları nasıl katılır?How data streams are joined varies between applications. Örneğin, yeni birden fazla akıştaki her bir tanımlama grubunu yeni bir akışta birleştirebilir veya yalnızca toplu tanımlama gruplarını belirli bir pencere için birleştirebilirsiniz.For example, you can join each tuple from multiple streams into one new stream, or you can join only batches of tuples for a specific window. Her iki durumda da katılım, fieldsGrouping kullanılarak gerçekleştirilebilir.Either way, joining can be accomplished by using fieldsGrouping. Alan gruplandırma, tanımlama gruplarının boltlara nasıl yönlendirileceğini tanımlamanın bir yoludur.Field grouping is a way of defining how tuples are routed to bolts.

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:In the following Java example, fieldsGrouping is used to route tuples that originate from components "1", "2", and "3" to the MyJoiner bolt:

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şlerBatches

Apache Storm "değer çizgisi tanımlama grubu" olarak bilinen bir iç zamanlama mekanizmasını sağlar.Apache Storm provides an internal timing mechanism known as a "tick tuple." Değer çizgisi tanımlama grubunun topolojiniz içinde ne sıklıkta yayıldığını ayarlayabilirsiniz.You can set how often a tick tuple is emitted in your topology.

Bir C# bileşeninden değer çizgisi tanımlama grubu kullanımı örneği için bkz. PartialBoltCount.cs.For an example of using a tick tuple from a C# component, see PartialBoltCount.cs.

CachesCaches

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.In-memory caching is often used as a mechanism for speeding up processing because it keeps frequently used assets in memory. 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.Because a topology is distributed across multiple nodes, and multiple processes within each node, you should consider using fieldsGrouping. Ö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.Use fieldsGrouping to ensure that tuples containing the fields that are used for cache lookup are always routed to the same process. Bu gruplandırma işlevi, süreçler arasında önbellek girişlerinin yinelenmesini önler.This grouping functionality avoids duplication of cache entries across processes.

"İlk N" akışStream "top N"

Topolojiniz bir "ilk N" değeri hesaplamaya bağlıysa, ilk N değeri paralel olarak hesaplayın.When your topology depends on calculating a top N value, calculate the top N value in parallel. Ardından bu hesaplamaların çıktısını genel bir değerde birleştirmeniz gerekir.Then merge the output from those calculations into a global value. Bu işlem, alanı paralel işleme için yönlendirmek üzere fieldsGrouping kullanılarak yapılabilir.This operation can be done by using fieldsGrouping to route by field for parallel processing. Ardından, ilk n değerini genel olarak belirleyen bir bolta yönlendirebilirsiniz.Then you can route to a bolt that globally determines the top N value.

İlk N değeri hesaplama örneği için RollingTopWords örneğine bakın.For an example of calculating a top N value, see the RollingTopWords example.

Günlüğe kaydetmeLogging

Fırtınası, bilgileri günlüğe kaydetmek için Apache Log4J 2 kullanır.Storm uses Apache Log4j 2 to log information. Varsayılan olarak, büyük miktarlarda veriler günlüğe kaydedilir ve bilgilerin sıralanması zor olabilir.By default, a large amount of data is logged, and it can be difficult to sort through the information. Günlüğe kaydetme davranışını denetlemek üzere Storm topolojinizin bir parçası olarak günlük yapılandırma dosyası ekleyebilirsiniz.You can include a logging configuration file as part of your Storm topology to control logging behavior.

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.For an example topology that demonstrates how to configure logging, see Java-based WordCount example for Storm on HDInsight.

Sonraki adımlarNext steps

HDInsight üzerinde Apache Storm ile gerçek zamanlı analiz çözümleri hakkında daha fazla bilgi edinin:Learn more about real-time analytics solutions with Apache Storm on HDInsight: