Co je Apache Storm ve službě Azure HDInsight?What is Apache Storm on Azure HDInsight?

Apache Storm je distribuovaný výpočetní systém typu open source a je odolný vůči poruchám.Apache Storm is a distributed, fault-tolerant, open-source computation system. Pro zpracování datových proudů dat v reálném čase pomocí Apache Hadoopmůžete použít proces.You can use Storm to process streams of data in real time with Apache Hadoop. Řešení na platformě Storm můžou také poskytnout zaručené zpracování dat s možností opětovného přehrání dat, která nebyla poprvé úspěšně zpracována.Storm solutions can also provide guaranteed processing of data, with the ability to replay data that wasn't successfully processed the first time.

Proč používat Apache Storm ve službě HDInsight?Why use Apache Storm on HDInsight?

Storm v HDInsight poskytuje následující funkce:Storm on HDInsight provides the following features:

  • 99% smlouva SLA (SLA) v době provozuschopnosti: v HDInsight se dodává plná podpora.99% Service Level Agreement (SLA) on Storm uptime: Storm on HDInsight comes with full continuous support. Storm v HDInsight má také SLA 99,9 %.Storm on HDInsight also has an SLA of 99.9 percent. To znamená, že Microsoft zaručuje možnost externího připojení ke clusteru Storm alespoň 99,9 % času.That means Microsoft guarantees that a Storm cluster has external connectivity at least 99.9 percent of the time. Další informace najdete v článku Podpora Azure.For more information, see Azure support. Viz také informace o smlouvě SLA pro dokument HDInsight .See also, SLA information for HDInsight document.

  • Podporuje snadné přizpůsobení prostřednictvím spouštění skriptů v clusteru Storm během nebo po jeho vytvoření.Supports easy customization by running scripts against a Storm cluster during or after creation. Další informace obsahuje článek Přizpůsobení clusterů HDInsight pomocí skriptových akcí.For more information, see Customize HDInsight clusters using script action.

  • Vytváření řešení v různých jazycích: Komponenty pro Storm můžete psát v jazyce, který vám vyhovuje, například Java, C# nebo Python.Create solutions in multiple languages: You can write Storm components in the language of your choice, such as Java, C#, and Python.

    • Integruje Visual Studio a HDInsight pro vývoj, správu a monitorování topologií C#.Integrates Visual Studio with HDInsight for the development, management, and monitoring of C# topologies. Další informace naleznete v tématu Vývoj topologií C# Storm pomocí sady HDInsight Tools pro Visual Studio.For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

    • Podporuje rozhraní Java Trident.Supports the Trident Java interface. Můžete vytvářet topologie Storm, které podporují právě jedno zpracování zpráv, transakční trvalé uchovávání datového skladu a sadu běžných operací pro analýzy datového proudu.You can create Storm topologies that support exactly once processing of messages, transactional datastore persistence, and a set of common stream analytics operations.

  • Dynamické škálování: Můžete přidávat a odebírat pracovní uzly bez jakéhokoli dopadu na činnost topologií Storm.Dynamic scaling: You can add or remove worker nodes with no impact to running Storm topologies. Deaktivujte a znovu aktivujte spuštěné topologie, abyste mohli využívat nové uzly přidané prostřednictvím operací škálování.Deactivate and reactivate running topologies to take advantage of new nodes added through scaling operations.

  • Vytváření kanálů streamování s využitím několika služeb Azure: v HDInsight se integruje s dalšími službami Azure.Create streaming pipelines using multiple Azure services: Storm on HDInsight integrates with other Azure services. Například Event Hubs, SQL Database, Azure Storage a Azure Data Lake Storage.Such as Event Hubs, SQL Database, Azure Storage, and Azure Data Lake Storage. Ukázkové řešení, které se integruje se službami Azure, najdete v tématu zpracování událostí z Event Hubs pomocí Apache Storm v HDInsight.For an example solution that integrates with Azure services, see Process events from Event Hubs with Apache Storm on HDInsight.

Seznam společností, které používají pro svá řešení pro analýzu v reálném čase Apache Storm, najdete v tématu Společnosti využívající Apache Storm.For a list of companies that are using Apache Storm for their real-time analytics solutions, see Companies using Apache Storm.

Pokud chcete začít používat, přečtěte si téma Vytvoření a monitorování Apache Storm topologie ve službě Azure HDInsight.To get started using Storm, see Create and monitor an Apache Storm topology in Azure HDInsight.

Jak funguje Apache StormHow does Apache Storm work

K dispozici jsou topologie spuštění, místo Apache Hadoop úloh MapReduce , se kterými jste se mohli seznámit.Storm runs topologies instead of the Apache Hadoop MapReduce jobs that you might be familiar with. Topologie Storm se skládají z několika součástí, které jsou uspořádány do orientovaného acyklického grafu (DAG).Storm topologies are composed of multiple components that are arranged in a directed acyclic graph (DAG). Data proudí mezi komponentami v grafu.Data flows between the components in the graph. Každá komponenta spotřebovává jeden či více datových streamů a případně může i jeden či více streamů vysílat.Each component consumes one or more data streams, and can optionally emit one or more streams. Následující diagram znázorňuje tok dat mezi součástmi v topologii pro základní počet slov:The following diagram illustrates how data flows between components in a basic word-count topology:

Příklad uspořádání součástí v topologii Storm

  • Součásti spout přenášejí data do topologie.Spout components bring data into a topology. Vysílají do topologie jeden nebo více datových proudů.They emit one or more streams into the topology.

  • Součásti bolt zpracovávají datové proudy vyslané ze spoutů nebo z jiných boltů.Bolt components consume streams emitted from spouts or other bolts. Bolty mohou volitelně vysílat do topologie datové streamy.Bolts might optionally emit streams into the topology. Bolty také odpovídají za zápis dat do externích služeb nebo úložiště, například HDFS, Kafka nebo HBase.Bolts are also responsible for writing data to external services or storage, such as HDFS, Kafka, or HBase.

SpolehlivostReliability

Apache Storm zaručuje, že příchozí zprávy budou vždy plně zpracovány, i když je analýza dat rozdělena do stovek uzlů.Apache Storm guarantees that each incoming message is always fully processed, even when the data analysis is spread over hundreds of nodes.

Uzel Nimbus poskytuje podobné funkce jako Apache Hadoop JobTracker.The Nimbus node provides functionality similar to the Apache Hadoop JobTracker. Nimbus přiřazuje úlohy jiným uzlům v clusteru prostřednictvím Apache ZooKeeper.Nimbus assigns tasks to other nodes in a cluster through Apache ZooKeeper. Uzly Zookeeper poskytují koordinaci pro cluster a pomáhají komunikovat mezi Nimbus a procesem vedoucího procesu na pracovních uzlech.Zookeeper nodes provide coordination for a cluster and assist communication between Nimbus and the Supervisor process on the worker nodes. Pokud dojde k selhání jednoho uzlu zpracování, uzel Nimbus je informován a přiřadí úlohu a přidružená data do jiného uzlu.If one processing node goes down, the Nimbus node is informed, and it assigns the task and associated data to another node.

Výchozí konfigurace pro clustery Apache Storm může obsahovat pouze jeden uzel Nimbus.The default configuration for Apache Storm clusters is to have only one Nimbus node. Storm v HDInsight poskytuje dva uzly Nimbus.Storm on HDInsight provides two Nimbus nodes. V případě selhání primárního uzlu se cluster Storm přepne na sekundární uzel a primární uzel se obnoví.If the primary node fails, the Storm cluster switches to the secondary node while the primary node is recovered. Následující diagram znázorňuje tok konfigurace úlohy pro Storm v HDInsight:The following diagram illustrates the task flow configuration for Storm on HDInsight:

Graf nimbusu, zookeeper a supervisor

Jednoduché používáníEase of use

PoužitíUse PopisDescription
Připojení k Secure Shell (SSH)Secure Shell (SSH) connectivity K hlavním uzlům clusteru s převzetím služeb při selhání můžete přistupovat přes Internet pomocí SSH.You can access the head nodes of your Storm cluster over the Internet by using SSH. Příkazy můžete spouštět přímo v clusteru prostřednictvím SSH.You can run commands directly on your cluster by using SSH. Další informace najdete v tématu Použití SSH se službou HDInsight.For more information, see Use SSH with HDInsight.
Připojení k webuWeb connectivity Všechny clustery HDInsight poskytují webové uživatelské rozhraní Ambari.All HDInsight clusters provide the Ambari web UI. Webové uživatelské rozhraní Ambari umožňuje snadno monitorovat, konfigurovat a spravovat služby v clusteru.You can easily monitor, configure, and manage services on your cluster by using the Ambari web UI. Clustery Storm také poskytují uživatelské rozhraní Storm.Storm clusters also provide the Storm UI. Prostřednictvím uživatelského rozhraní Storm můžete monitorovat a spravovat spuštěné topologie Storm z prohlížeče.You can monitor and manage running Storm topologies from your browser by using the Storm UI. Další informace najdete v tématu Správa HDInsight pomocí webového uživatelského rozhraní Apache Ambari a monitorování a správa pomocí Apache STORMCH dokumentů uživatelského rozhraní .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 a Azure CLIAzure PowerShell and Azure CLI PowerShell a Azure CLI poskytují nástroje příkazového řádku, které můžete použít v klientském systému pro práci s prostředím HDInsight a dalšími službami Azure.PowerShell and Azure CLI both provide command-line utilities that you can use from your client system to work with HDInsight and other Azure services.
integrace sady Visual StudioVisual Studio integration Nástroje Azure Data Lake pro Visual Studio zahrnout šablony projektů pro vytváření topologií v jazyce C# pomocí architektury SCP.NET.Azure Data Lake Tools for Visual Studio include project templates for creating C# Storm topologies by using the SCP.NET framework. Nástroje Data Lake poskytují také nástroje pro nasazení, monitorování a správu řešení se Stormem v HDInsight.Data Lake Tools also provide tools to deploy, monitor, and manage solutions with Storm on HDInsight. Další informace naleznete v tématu Vývoj topologií C# Storm pomocí sady HDInsight Tools pro Visual Studio.For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

Integrace s dalšími službami AzureIntegration with other Azure services

Případy použití Apache StormApache Storm use cases

Následují některé obvyklé scénáře, pro které můžete použít Storm v HDInsight:The following are some common scenarios for which you might use Storm on HDInsight:

  • Internet věcí (IoT)Internet of Things (IoT)
  • Odhalování podvodůFraud detection
  • Sociální analýzySocial analytics
  • Extrakce, transformace a načítání (ETL)Extraction, transformation, and loading (ETL)
  • Monitorování sítěNetwork monitoring
  • SearchSearch
  • Mobile engagementMobile engagement

Informace o reálných scénářích najdete v tématu jak společnosti používají Apache Storm dokumentu.For information about real-world scenarios, see the How companies are using Apache Storm document.

VývojDevelopment

Nástroje Data Lake Tools pro Visual Studio umožňují vývojářům .NET navrhovat a implementovat topologie v jazyce C#..NET developers can design and implement topologies in C# by using Data Lake Tools for Visual Studio. Můžete také vytvářet hybridní topologie, které využívají součásti Java a C#.You can also create hybrid topologies that use Java and C# components. Další informace naleznete v tématu Vývoj topologií C# pro Apache Storm v HDInsight pomocí sady Visual Studio.For more information, see Develop C# topologies for Apache Storm on HDInsight using Visual Studio.

Můžete také vyvíjet řešení v jazyce Java s použitím rozhraní IDE podle svého výběru.You can also develop Java solutions by using the IDE of your choice. Další informace najdete v tématu Vývoj topologií Java pro Apache Storm v HDInsight.For more information, see Develop Java topologies for Apache Storm on HDInsight.

K vývoji součástí Storm je možné použít i jazyk Python.Python can also be used to develop Storm components. Další informace najdete v tématu vývoj Apache Stormch topologií pomocí Pythonu v HDInsight.For more information, see Develop Apache Storm topologies using Python on HDInsight.

Běžné vývojové vzoryCommon development patterns

Zaručené zpracování zprávyGuaranteed message processing

Apache Storm můžete poskytovat různé úrovně zaručeného zpracování zprávy.Apache Storm can provide different levels of guaranteed message processing. Například základní aplikace pro zaplavování zaručuje alespoň jedno zpracování a Trident může zaručit přesně jedno zpracování.For example, a basic Storm application guarantees at-least-once processing, and Trident can guarantee exactly once processing. Viz záruky při zpracování dat na Apache.org.See Guarantees on data processing at apache.org.

IBasicBoltIBasicBolt

Vzor čtení vstupní řazené kolekce členů, generování nulových nebo více řazených kolekcí členů a následné potvrzení vstupní řazené kolekce členů okamžitě na konci metody Execute je běžné.The pattern of reading an input tuple, emitting zero or more tuples, and then confirming the input tuple immediately at the end of the execute method is common. Storm pro automatizaci tohoto vzoru poskytuje rozhraní IBasicBolt.Storm provides the IBasicBolt interface to automate this pattern.

SpojeníJoins

Způsob spojení datových proudů se v jednotlivých aplikacích liší.How data streams are joined varies between applications. Například můžete spojit jednotlivé řazené kolekce členů z více datových proudů do jednoho nového datového proudu nebo spojit pouze dávky řazené kolekce členů pro konkrétní okno.For example, you can join each tuple from multiple streams into one new stream, or join only batches of tuples for a specific window. V obou případech můžete spojení provést pomocí příkazu fieldsGrouping.Either way, joining can be accomplished by using fieldsGrouping. Seskupení polí je způsob, který definuje, jak se řazené kolekce členů směrují do boltů.Field grouping is a way of defining how tuples are routed to bolts.

V následujícím příkladu Java se příkaz fieldsGrouping využívá ke směrování řazených kolekcí členů, které pocházejí z komponent „1“, „2“ a „3“, do boltu 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"));

DávkyBatches

Apache Storm poskytuje interní mechanismus časování, který je znám jako odškrtávání řazených kolekcí členů.Apache Storm provides an internal timing mechanism known as a "tick tuple." Můžete nastavit, jak často se odškrtávání řazených kolekcí členů ve vaší topologii vysílá.You can set how often a tick tuple is emitted in your topology.

Příklad použití odškrtávaní řazených kolekcí členů v součásti v C# najdete v souboru PartialBoltCount.cs.For an example of using a tick tuple from a C# component, see PartialBoltCount.cs.

MezipamětiCaches

Ukládání do mezipaměti se často používá jako mechanismus pro urychlení zpracování, protože udržuje často používané prostředky v paměti.In-memory caching is often used as a mechanism for speeding up processing because it keeps frequently used assets in memory. Protože se topologie distribuuje mezi více uzlů a v rámci každého uzlu se distribuuje více procesů, měli byste zvážit použití příkazu fieldsGrouping.Because a topology is distributed across multiple nodes, and multiple processes within each node, you should consider using fieldsGrouping. Pomocí příkazu fieldsGrouping můžete zajistit, aby se řazené kolekce členů obsahující pole, která se používají pro vyhledávání v mezipaměti, vždy směrovaly do stejného procesu.Use fieldsGrouping to ensure that tuples containing the fields that are used for cache lookup are always routed to the same process. Díky této funkci seskupování předejdete duplikaci položek mezipaměti napříč procesy.This grouping functionality avoids duplication of cache entries across processes.

Datový proud „horních N“Stream "top N"

Pokud vaše topologie závisí na výpočtu hodnoty „horních N“, počítejte hodnotu „horních N“ paralelně.When your topology depends on calculating a top N value, calculate the top N value in parallel. Poté je třeba výstup z těchto výpočtů sloučit do globální hodnoty.Then merge the output from those calculations into a global value. Tuto operaci můžete provést pomocí příkazu fieldsGrouping a provést směrování podle pole pro paralelní zpracování.This operation can be done by using fieldsGrouping to route by field for parallel processing. Potom můžete provést směrování na bolt, který globálně určuje hodnotu horních N.Then you can route to a bolt that globally determines the top N value.

Příklad výpočtu hodnoty TOP N najdete v příkladu části rollingtopwords .For an example of calculating a top N value, see the RollingTopWords example.

protokolováníLogging

K protokolování informací používá protokol Apache log4j 2.Storm uses Apache Log4j 2 to log information. Ve výchozím nastavení se zaznamenává velké množství dat a může být obtížné informace roztřídit.By default, a large amount of data is logged, and it can be difficult to sort through the information. Konfigurační soubor protokolování můžete zahrnout jako součást topologie Storm k řízení chování protokolování.You can include a logging configuration file as part of your Storm topology to control logging behavior.

Topologii příkladu, která ukazuje, jak nakonfigurovat protokolování, najdete v části Počet slov na základě jazyka Java pro Storm v HDInsight.For an example topology that demonstrates how to configure logging, see Java-based WordCount example for Storm on HDInsight.

Další krokyNext steps

Další informace o řešení pro analýzu v reálném čase pomocí Apache Storm ve službě HDInsight:Learn more about real-time analytics solutions with Apache Storm on HDInsight: