Co to jest Apache Storm w usłudze Azure HDInsight?What is Apache Storm on Azure HDInsight?

Apache Storm to rozproszony, odporny na uszkodzenia system obliczeniowy typu open source.Apache Storm is a distributed, fault-tolerant, open-source computation system. Można używać burzy do przetwarzania strumieni danych w czasie rzeczywistym za pomocą Apache Hadoop.You can use Storm to process streams of data in real time with Apache Hadoop. Rozwiązanie Storm oferuje również gwarantowane przetwarzanie danych z możliwością powtarzania danych, które nie zostały pomyślnie przetworzone po raz pierwszy.Storm solutions can also provide guaranteed processing of data, with the ability to replay data that was not successfully processed the first time.

Dlaczego warto używać Apache Storm w usłudze HDInsight?Why use Apache Storm on HDInsight?

System Storm w usłudze HDInsight oferuje następujące funkcje:Storm on HDInsight provides the following features:

  • __99% umowa dotycząca poziomu usług (SLA) w__przypadku czasu działania burzy: Aby uzyskać więcej informacji, zobacz dokument HDInsight — umowa SLA.99% Service Level Agreement (SLA) on Storm uptime: For more information, see the SLA information for HDInsight document.

  • Umożliwia łatwe dostosowywanie klastrów Storm dzięki uruchamianiu w nich skryptów podczas procesu tworzenia klastra lub po jego ukończeniu.Supports easy customization by running scripts against a Storm cluster during or after creation. Aby uzyskać więcej informacji, zobacz Dostosowywanie klastrów usługi HDInsight za pomocą akcji skryptu.For more information, see Customize HDInsight clusters using script action.

  • Tworzenie rozwiązań w wielu językach: Składniki systemu Storm można pisać w wybranym języku, takim jak Java, C# i Python.Create solutions in multiple languages: You can write Storm components in the language of your choice, such as Java, C#, and Python.

    • Integruje program Visual Studio z usługą HDInsight na potrzeby tworzenia i monitorowania topologii języka C# oraz zarządzania nimi.Integrates Visual Studio with HDInsight for the development, management, and monitoring of C# topologies. Aby uzyskać więcej informacji, zobacz Develop C# Storm topologies with the HDInsight Tools for Visual Studio (Tworzenie topologii języka C# przy użyciu narzędzi HDInsight Tools dla programu Visual Studio).For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

    • Obsługuje interfejs języka Java Trident.Supports the Trident Java interface. Umożliwia on tworzenie topologii Storm obsługujących dokładnie jednokrotne przetwarzanie komunikatów, transakcyjną trwałość magazynu danych i zestaw typowych operacji analizy strumienia.You can create Storm topologies that support exactly once processing of messages, transactional datastore persistence, and a set of common stream analytics operations.

  • Dynamiczne skalowanie: Można dodawać lub usuwać węzły procesu roboczego bez wpływu na działające topologie Storm.Dynamic scaling: You can add or remove worker nodes with no impact to running Storm topologies.

    • Aby skorzystać z nowych węzłów dodanych za pośrednictwem operacji skalowania, musisz dezaktywować i ponownie aktywować działające topologie.You must deactivate and reactivate running topologies to take advantage of new nodes added through scaling operations.
  • Tworzenie potoków przesyłania strumieniowego przy użyciu wielu usług platformy Azure: Burza w usłudze HDInsight integruje się z innymi usługami platformy Azure, takimi jak Event Hubs, SQL Database, Azure Storage i Azure Data Lake Storage.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.

    Przykładowe rozwiązanie, które integruje się z usługami platformy Azure, znajduje się w temacie przetwarzanie zdarzeń z Event Hubs z Apache Storm w usłudze HDInsight.For an example solution that integrates with Azure services, see Process events from Event Hubs with Apache Storm on HDInsight.

Lista firm, które używają systemu Apache Storm w rozwiązaniach analitycznych działających w czasie rzeczywistym, jest dostępna na stronie Companies Using Apache Storm (Firmy korzystające z systemu Apache Storm).For a list of companies that are using Apache Storm for their real-time analytics solutions, see Companies using Apache Storm.

Aby rozpocząć korzystanie z funkcji burzy, zobacz Tworzenie i monitorowanie topologii Apache Storm w usłudze Azure HDInsight.To get started using Storm, see Create and monitor an Apache Storm topology in Azure HDInsight.

Jak działa Apache StormHow does Apache Storm work

Burze uruchamia topologie, a nie Apache Hadoop zadania MapReduce , które mogą być znane.Storm runs topologies instead of the Apache Hadoop MapReduce jobs that you might be familiar with. Topologie systemu Storm obejmują wiele składników rozmieszczonych w skierowanym grafie acyklicznym (DAG).Storm topologies are composed of multiple components that are arranged in a directed acyclic graph (DAG). Dane przepływają między składnikami tego grafu.Data flows between the components in the graph. Każdy składnik używa przynajmniej jednego strumienia danych i może opcjonalnie emitować przynajmniej jeden strumień.Each component consumes one or more data streams, and can optionally emit one or more streams. Na poniższym diagramie przedstawiono sposób przepływu danych między składnikami w podstawowej topologii zliczania wyrazów:The following diagram illustrates how data flows between components in a basic word-count topology:

Przykładowy układ składników w topologii Storm

  • Składniki typu spout wprowadzają dane do topologii.Spout components bring data into a topology. Wysyłają one co najmniej jeden strumień danych do topologii.They emit one or more streams into the topology.

  • Składniki typu bolt wykorzystują strumienie emitowane przez elementy spout lub inne elementy bolt.Bolt components consume streams emitted from spouts or other bolts. Składniki typu bolt mogą opcjonalnie emitować strumienie do topologii.Bolts might optionally emit streams into the topology. Odpowiadają również za zapisywanie danych w usługach zewnętrznych lub magazynie — takim jak system plików HDFS, platforma Kafka lub usługa HBase.Bolts are also responsible for writing data to external services or storage, such as HDFS, Kafka, or HBase.

NiezawodnośćReliability

System Apache Storm gwarantuje, że każdy przychodzący komunikat jest zawsze w pełni przetwarzany — nawet wtedy, gdy analiza danych jest rozłożona na setki węzłów.Apache Storm guarantees that each incoming message is always fully processed, even when the data analysis is spread over hundreds of nodes.

Węzeł Nimbus zapewnia funkcjonalność podobną do Apache Hadoop JobTracker i przypisuje zadania do innych węzłów w klastrze za pomocą Apache ZooKeeper.The Nimbus node provides functionality similar to the Apache Hadoop JobTracker, and it assigns tasks to other nodes in a cluster through Apache ZooKeeper. Węzły dozorcy zapewniają koordynację klastra i ułatwiają komunikację między węzłem Nimbus i procesem nadzorczym procesów roboczych.Zookeeper nodes provide coordination for a cluster and facilitate communication between Nimbus and the Supervisor process on the worker nodes. Jeśli jeden węzeł przetwarzania przestanie działać, zostanie zawiadomiony węzeł Nimbus, który przypisze zadanie i związane z nim dane do innego węzła.If one processing node goes down, the Nimbus node is informed, and it assigns the task and associated data to another node.

W domyślnej konfiguracji klastrów Apache Storm występuje tylko jeden węzeł Nimbus.The default configuration for Apache Storm clusters is to have only one Nimbus node. System Storm w usłudze HDInsight obejmuje dwa węzły Nimbus.Storm on HDInsight provides two Nimbus nodes. W przypadku awarii węzła podstawowego klaster Storm przechodzi do węzła pomocniczego, a węzeł podstawowy jest przywracany.If the primary node fails, the Storm cluster switches to the secondary node while the primary node is recovered. Na poniższym diagramie przedstawiono konfigurację przepływu zadań systemu Storm w usłudze HDInsight:The following diagram illustrates the task flow configuration for Storm on HDInsight:

Schemat węzłów Nimbus, dozorcy i nadzorcy

Łatwość tworzeniaEase of creation

Nowy klaster Storm można utworzyć w usłudze HDInsight w ciągu kilku minut.You can create a new Storm cluster on HDInsight in minutes. Aby uzyskać więcej informacji na temat tworzenia klastra burzy, zobacz Tworzenie klastrów Apache Hadoop przy użyciu Azure Portal.For more information on creating a Storm cluster, see Create Apache Hadoop clusters using the Azure portal.

Łatwość obsługiEase of use

  • Łączność Secure Shell (SSH) : Możesz uzyskać dostęp do węzłów głównych klastra burzy za pośrednictwem Internetu przy użyciu protokołu SSH.Secure Shell (SSH) connectivity: You can access the head nodes of your Storm cluster over the Internet by using SSH. Polecenia można uruchamiać bezpośrednio w klastrze przy użyciu protokołu SSH.You can run commands directly on your cluster by using SSH.

    Aby uzyskać więcej informacji, zobacz Używanie protokołu SSH w usłudze HDInsight.For more information, see Use SSH with HDInsight.

  • Łączność z siecią Web: Wszystkie klastry usługi HDInsight zapewniają interfejs użytkownika sieci Web Ambari.Web connectivity: All HDInsight clusters provide the Ambari web UI. Pozwala on łatwo monitorować i konfigurować usługi oraz zarządzać nimi w klastrze.You can easily monitor, configure, and manage services on your cluster by using the Ambari web UI. Klastry Storm udostępniają też interfejs Storm.Storm clusters also provide the Storm UI. Interfejs ten pozwala na monitorowanie działających topologii systemu Storm oraz zarządzanie nimi z poziomu przeglądarki przy użyciu interfejsu użytkownika Storm.You can monitor and manage running Storm topologies from your browser by using the Storm UI.

    Aby uzyskać więcej informacji, zobacz Zarządzanie usługą HDInsight przy użyciu interfejsu użytkownika usługi Apache Ambari Web i monitorowanie i zarządzanie przy użyciu dokumentów interfejsu użytkownika Apache Storm .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 i klasyczny interfejs wiersza polecenia platformy Azure: Program PowerShell i klasyczny interfejs wiersza polecenia umożliwiają korzystanie z narzędzi wiersza poleceń, które mogą być używane z systemu klienckiego do pracy z usługą HDInsight i innymi usługami platformy Azure.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.

  • Integracja z programem Visual Studio: Azure Data Lake Tools for Visual Studio uwzględnić szablony projektów służące C# do tworzenia topologii burzy przy użyciu struktury SCP.NET.Visual Studio integration: Azure Data Lake Tools for Visual Studio include project templates for creating C# Storm topologies by using the SCP.NET framework. Narzędzia Data Lake Tools oferują również umożliwiające wdrażanie i monitorowanie rozwiązań systemu Storm w usłudze HDInsight oraz zarządzanie nimi.Data Lake Tools also provide tools to deploy, monitor, and manage solutions with Storm on HDInsight.

    Aby uzyskać więcej informacji, zobacz Develop C# Storm topologies with the HDInsight Tools for Visual Studio (Tworzenie topologii języka C# przy użyciu narzędzi HDInsight Tools dla programu Visual Studio).For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

Integracja z innymi usługami platformy AzureIntegration with other Azure services

Pomoc technicznaSupport

System Storm w usłudze HDInsight jest dostarczany z pełną, stale dostępną pomocą techniczną na poziomie korporacyjnym.Storm on HDInsight comes with full enterprise-level continuous support. System Storm w usłudze HDInsight gwarantuje również dostępność na poziomie 99,9 procent zgodnie z umową SLA.Storm on HDInsight also has an SLA of 99.9 percent. Firma Microsoft gwarantuje więc, że klaster Storm utrzymuje łączność zewnętrzną przez nie mniej niż 99,9% czasu.That means Microsoft guarantees that a Storm cluster has external connectivity at least 99.9 percent of the time.

Aby uzyskać więcej informacji, zobacz Pomoc techniczna platformy Azure.For more information, see Azure support.

Przypadki użycia systemu Apache StormApache Storm use cases

Poniżej przedstawiono kilka typowych scenariuszy, w których można skorzystać z systemu Storm w usłudze HDInsight:The following are some common scenarios for which you might use Storm on HDInsight:

  • Internet rzeczy (IoT)Internet of Things (IoT)
  • Wykrywanie oszustwFraud detection
  • Analityka społecznościowaSocial analytics
  • Wyodrębnianie, transformacja, ładowanie (ETL)Extraction, transformation, and loading (ETL)
  • Monitorowanie sieciNetwork monitoring
  • WyszukajSearch
  • Marketing na urządzeniach przenośnychMobile engagement

Aby uzyskać informacje na temat scenariuszy rzeczywistych, zobacz artykuł jak firmy korzystają z Apache Storm dokumentu.For information about real-world scenarios, see the How companies are using Apache Storm document.

ProgramowanieDevelopment

Korzystając z narzędzi Data Lake Tools for Visual Studio programiści .NET mogą projektować i implementować topologie w języku C#..NET developers can design and implement topologies in C# by using Data Lake Tools for Visual Studio. Można również tworzyć hybrydowe topologie, wykorzystujące składniki Java i C#.You can also create hybrid topologies that use Java and C# components.

Aby uzyskać więcej informacji na ten temat, zobacz Develop C# topologies for Apache Storm on HDInsight using Visual Studio (Tworzenie topologii C# dla Apache Storm w usłudze HDInsight przy użyciu programu Visual Studio).For more information, see Develop C# topologies for Apache Storm on HDInsight using Visual Studio.

Możesz również tworzyć rozwiązania w języku Java przy użyciu wybranego środowiska IDE.You can also develop Java solutions by using the IDE of your choice. Aby uzyskać więcej informacji, zobacz Tworzenie topologii Java dla Apache Storm w usłudze HDInsight.For more information, see Develop Java topologies for Apache Storm on HDInsight.

Składniki systemu Storm można również opracowywać w języku Python.Python can also be used to develop Storm components. Aby uzyskać więcej informacji, zobacz Tworzenie topologii Apache Storm przy użyciu języka Python w usłudze HDInsight.For more information, see Develop Apache Storm topologies using Python on HDInsight.

Typowe wzorce programowaniaCommon development patterns

Gwarantowane przetwarzanie komunikatówGuaranteed message processing

System Apache Storm zapewnia różne poziomy gwarantowanego przetwarzania komunikatów.Apache Storm can provide different levels of guaranteed message processing. Na przykład podstawowa aplikacja burzowa może gwarantować co najmniej jednokrotne przetwarzanie, a Trident może zagwarantować dokładnie jedno przetwarzanie.For example, a basic Storm application can guarantee at-least-once processing, and Trident can guarantee exactly once processing.

Aby uzyskać więcej informacji, zobacz Guarantees on data processing (Gwarancje przetwarzania danych) w serwisie apache.org.For more information, see Guarantees on data processing at apache.org.

IBasicBoltIBasicBolt

Wzorzec odczytywania krotki wejściowej, emitującej zero lub więcej krotek, a następnie potwierdzająca spójność kolekcji wejściowej natychmiast na końcu metody Execute.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. System Storm udostępnia interfejs IBasicBolt w celu automatyzacji tego wzorca.Storm provides the IBasicBolt interface to automate this pattern.

SprzężeniaJoins

Sposób łączenia strumieni danych różni się między aplikacjami.How data streams are joined varies between applications. Na przykład można łączyć poszczególne krotki z wielu strumieni w jeden nowy strumień lub łączyć tylko partie krotek w określonym oknie.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. W obu przypadkach łączenie można przeprowadzić za pomocą metody fieldsGrouping.Either way, joining can be accomplished by using fieldsGrouping. Grupowanie pól polega na określeniu, jak krotki są kierowane do składników bolt.Field grouping is a way of defining how tuples are routed to bolts.

W poniższym przykładzie w języku Java metoda fieldsGrouping służy do kierowana krotek pochodzących ze składników „1”, „2” i „3” do elementu bolt o nazwie MyJoiner: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"));

PartieBatches

System Apache Storm ma wewnętrzny mechanizm zegarowy nazywany „krotką znacznikową”.Apache Storm provides an internal timing mechanism known as a "tick tuple." Można określić częstotliwość emitowania krotki znacznikowej w topologii.You can set how often a tick tuple is emitted in your topology.

Aby zapoznać się z przykładem korzystania z krotki znacznikowej z poziomu składnika języka C#, zobacz PartialBoltCount.cs.For an example of using a tick tuple from a C# component, see PartialBoltCount.cs.

Pamięci podręczneCaches

Buforowanie w pamięci jest często używane jako mechanizm przyspieszania przetwarzania, ponieważ utrzymuje często używane zasoby w pamięci.In-memory caching is often used as a mechanism for speeding up processing because it keeps frequently used assets in memory. Ponieważ topologia jest rozpowszechniana na wiele węzłów i wiele procesów w każdym węźle, należy rozważyć użycie metody fieldsGrouping.Because a topology is distributed across multiple nodes, and multiple processes within each node, you should consider using fieldsGrouping. Użyj metody fieldsGrouping, aby zagwarantować, że krotki z polami używanymi do przeszukiwania pamięci podręcznej są zawsze kierowane do tego samego procesu.Use fieldsGrouping to ensure that tuples containing the fields that are used for cache lookup are always routed to the same process. Funkcja grupowania pozwala uniknąć duplikowania wpisów pamięci podręcznej między procesami.This grouping functionality avoids duplication of cache entries across processes.

Strumień „pierwszych N”Stream "top N"

Jeśli topologia zależy od obliczenia wartości „pierwszych N”, oblicz wartość pierwszych N równolegle.When your topology depends on calculating a top N value, calculate the top N value in parallel. Następnie należy scalić dane wyjściowe z tych obliczeń w obrębie wartości globalnej.Then merge the output from those calculations into a global value. Tę operację można wykonać przy użyciu metody fieldsGrouping, aby przeprowadzić kierowanie według pola na potrzeby przetwarzania równoległego.This operation can be done by using fieldsGrouping to route by field for parallel processing. Następnie można kierować do składnika bolt, który określa globalnie największą wartość N.Then you can route to a bolt that globally determines the top N value.

Aby zapoznać się z przykładem obliczania wartości pierwszych N, zobacz przykład RollingTopWords.For an example of calculating a top N value, see the RollingTopWords example.

RejestrowanieLogging

W przypadku korzystania z oprogramowania Apache Log4J 2 do rejestrowania informacji.Storm uses Apache Log4j 2 to log information. Domyślnie rejestrowana jest duża ilość danych i sortowanie informacji może być trudne.By default, a large amount of data is logged, and it can be difficult to sort through the information. W topologii systemu Storm można uwzględnić plik konfiguracji rejestrowania, aby sterować zachowaniem rejestrowania.You can include a logging configuration file as part of your Storm topology to control logging behavior.

Przykładową topologię pokazującą metodę konfigurowania logowania można znaleźć w przykładzie aplikacji WordCount opartej na języku Java dla systemu Storm w usłudze HDInsight.For an example topology that demonstrates how to configure logging, see Java-based WordCount example for Storm on HDInsight.

Następne krokiNext steps

Dowiedz się więcej na temat rozwiązań analitycznych w czasie rzeczywistym za pomocą Apache Storm w usłudze HDInsight:Learn more about real-time analytics solutions with Apache Storm on HDInsight: