O que é o Apache Storm no Azure HDInsight?What is Apache Storm on Azure HDInsight?

O Apache Storm é um sistema de computação distribuída, tolerante a falhas e de software livre.Apache Storm is a distributed, fault-tolerant, open-source computation system. Você pode usar o Storm para processar fluxos de dados em tempo real com o Apache Hadoop.You can use Storm to process streams of data in real time with Apache Hadoop. As soluções do Storm também podem oferecer um processamento de dados garantido, com a capacidade de reproduzir dados que não tenham sido processados com sucesso da primeira vez.Storm solutions can also provide guaranteed processing of data, with the ability to replay data that was not successfully processed the first time.

Por que usar o Apache Storm no HDInsight?Why use Apache Storm on HDInsight?

O Storm no HDInsight oferece os seguintes recursos:Storm on HDInsight provides the following features:

  • 99% Contrato de Nível de Serviço (SLA) no tempo de atividade do Storm: Para saber mais, veja o documento Informações de SLA para o HDInsight.99% Service Level Agreement (SLA) on Storm uptime: For more information, see the SLA information for HDInsight document.

  • Dá suporte à personalização fácil executando scripts em relação a um cluster Storm durante ou após a criação.Supports easy customization by running scripts against a Storm cluster during or after creation. Para obter mais informações, confira Personalizar clusters HDInsight usando a ação de script.For more information, see Customize HDInsight clusters using script action.

  • Crie soluções em vários idiomas: Você pode escrever componentes do Storm na linguagem de sua escolha, como Java, C# e Python.Create solutions in multiple languages: You can write Storm components in the language of your choice, such as Java, C#, and Python.

    • Integra o Visual Studio ao HDInsight para desenvolvimento, gerenciamento e monitoramento de topologias em C#.Integrates Visual Studio with HDInsight for the development, management, and monitoring of C# topologies. Para obter mais informações, confira Desenvolver topologias Storm C# com as Ferramentas do HDInsight para Visual Studio.For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

    • Dá suporte à interface Java Trident.Supports the Trident Java interface. Você pode criar topologias Storm que dão suporte ao processamento de mensagens exatamente uma vez, à persistência de armazenamento de dados transacional e a um conjunto de operações de análise de fluxo comuns.You can create Storm topologies that support exactly once processing of messages, transactional datastore persistence, and a set of common stream analytics operations.

  • Escala dinâmica: Você pode adicionar ou remover nós de trabalho sem afetar a execução de topologias Storm.Dynamic scaling: You can add or remove worker nodes with no impact to running Storm topologies.

    • Você deve desativar e reativar topologias em execução para aproveitar novos nós adicionados por meio de operações de dimensionamento.You must deactivate and reactivate running topologies to take advantage of new nodes added through scaling operations.
  • Criar pipelines de streaming usando vários serviços do Azure: O Storm no HDInsight integra-se a outros serviços do Azure, como Hubs de Eventos, Banco de Dados SQL, Armazenamento do Azure e 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.

    Para ver um exemplo de solução que se integrar aos serviços do Azure, consulte Processar eventos dos Hubs de Eventos com Apache Storm no HDInsight.For an example solution that integrates with Azure services, see Process events from Event Hubs with Apache Storm on HDInsight.

Para obter uma lista de empresas que estão usando o Apache Storm em suas soluções de análise em tempo real, consulte Empresas que estão usando o Apache Storm.For a list of companies that are using Apache Storm for their real-time analytics solutions, see Companies using Apache Storm.

Para começar a usar o Storm, consulte Criar e monitorar uma topologia Apache Storm no do Azure HDInsight.To get started using Storm, see Create and monitor an Apache Storm topology in Azure HDInsight.

Como funciona o Apache StormHow does Apache Storm work

O Storm processa topologias em vez dos trabalhos do Apache Hadoop MapReduce com que você pode estar familiarizado.Storm runs topologies instead of the Apache Hadoop MapReduce jobs that you might be familiar with. As topologias do Storm são compostas por vários componentes organizados em um DAG (grafo direcionado acíclico).Storm topologies are composed of multiple components that are arranged in a directed acyclic graph (DAG). Fluxo de dados entre os componentes no grafo.Data flows between the components in the graph. Cada componente consome um ou mais fluxos de dados e, opcionalmente, pode emitir um ou mais fluxos.Each component consumes one or more data streams, and can optionally emit one or more streams. O diagrama a seguir ilustra como os dados fluem entre componentes em uma topologia de contagem de palavras básica:The following diagram illustrates how data flows between components in a basic word-count topology:

Exemplo de como os componentes são organizados em uma topologia do Storm

  • Os componentes Spout trazem dados para uma topologia.Spout components bring data into a topology. Eles emitem um ou mais fluxos na topologia.They emit one or more streams into the topology.

  • Os componentes Bolt consomem fluxos emitidos de spouts ou de outros bolts.Bolt components consume streams emitted from spouts or other bolts. Os bolts podem opcionalmente emitir fluxos na topologia.Bolts might optionally emit streams into the topology. Os bolts também são responsáveis por gravar dados em armazenamentos ou serviço externos, como HDFS, Kafka ou HBase.Bolts are also responsible for writing data to external services or storage, such as HDFS, Kafka, or HBase.

ConfiabilidadeReliability

O Apache Storm sempre faz com que cada mensagem de entrada seja sempre totalmente processada, mesmo quando a análise de dados é difundida por centenas de nós.Apache Storm guarantees that each incoming message is always fully processed, even when the data analysis is spread over hundreds of nodes.

O nó Nimbus fornece uma funcionalidade semelhante ao Apache Hadoop JobTracker e atribui tarefas a outros nós em um cluster por meio do 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. Os Nós do Zookeeper fazem a coordenação de um cluster e facilitam a comunicação entre o Nimbus e o processo Supervisor nos nós de trabalho.Zookeeper nodes provide coordination for a cluster and facilitate communication between Nimbus and the Supervisor process on the worker nodes. Quando um nó de processamento falha, o nó Nimbus é informado e atribui a tarefa e os dados associados a outro nó.If one processing node goes down, the Nimbus node is informed, and it assigns the task and associated data to another node.

A configuração padrão dos clusters Apache Storm é ter apenas um nó Nimbus.The default configuration for Apache Storm clusters is to have only one Nimbus node. O Storm no HDInsight oferece dois nós Nimbus.Storm on HDInsight provides two Nimbus nodes. Se o nó primário falhar, o cluster Storm alternará para o nó secundário enquanto o nó primário é recuperado.If the primary node fails, the Storm cluster switches to the secondary node while the primary node is recovered. O diagrama a seguir ilustra a configuração de fluxo de tarefa para o Storm no HDInsight:The following diagram illustrates the task flow configuration for Storm on HDInsight:

Diagrama do Nimbus, Zookeeper e Supervisor

Fácil de criarEase of creation

Você pode provisionar um novo cluster Storm no HDInsight em minutos.You can create a new Storm cluster on HDInsight in minutes. Para obter mais informações sobre como criar um cluster Storm, consulte Criar clusters do Apache Hadoop usando o portal do Azure.For more information on creating a Storm cluster, see Create Apache Hadoop clusters using the Azure portal.

Fácil de usoEase of use

  • Conectividade Secure Shell (SSH) : Você pode acessar os nós principais do cluster Storm pela Internet usando o SSH.Secure Shell (SSH) connectivity: You can access the head nodes of your Storm cluster over the Internet by using SSH. Você pode executar comandos diretamente no cluster usando SSH.You can run commands directly on your cluster by using SSH.

    Para obter mais informações, confira Usar SSH com HDInsight.For more information, see Use SSH with HDInsight.

  • Conectividade da Web: Todos os clusters HDInsight fornecem a interface da Web do Ambari.Web connectivity: All HDInsight clusters provide the Ambari web UI. Você pode facilmente monitorar, configurar e gerenciar serviços no cluster usando a interface da Web do Ambari.You can easily monitor, configure, and manage services on your cluster by using the Ambari web UI. Os clusters do Storm também fornecem a interface do usuário do Storm.Storm clusters also provide the Storm UI. Você pode monitorar e gerenciar topologias Storm em execução no navegador usando a interface do usuário do Storm.You can monitor and manage running Storm topologies from your browser by using the Storm UI.

    Para obter mais informações, confira os documentos Administrar o HDInsight usando a interface do usuário do Apache Ambari e Monitorar e gerenciar usando a interface do usuário da interface do usuário do 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 e CLI Clássica do Azure: o PowerShell e a CLI clássica fornecem utilitários de linha de comando que você pode usar no sistema cliente para trabalhar com o HDInsight e outros serviços do 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.

  • Integração do Visual Studio: As Ferramentas do Azure Data Lake para Visual Studio incluem modelos de projeto para criar topologias Storm em C# usando a estrutura 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. O Data Lake Tools também fornece ferramentas para implantar, monitorar e gerenciar soluções com o Storm no HDInsight.Data Lake Tools also provide tools to deploy, monitor, and manage solutions with Storm on HDInsight.

    Para obter mais informações, confira Desenvolver topologias Storm C# com as Ferramentas do HDInsight para Visual Studio.For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

Integração a outros serviços do AzureIntegration with other Azure services

SuporteSupport

O Storm no HDInsight é fornecido com suporte contínuo completo de nível empresarial.Storm on HDInsight comes with full enterprise-level continuous support. O Storm no HDInsight também tem um SLA de 99,9%.Storm on HDInsight also has an SLA of 99.9 percent. Isso significa a Microsoft garante que um cluster Storm tenha conectividade externa pelo menos 99,9% do tempo.That means Microsoft guarantees that a Storm cluster has external connectivity at least 99.9 percent of the time.

Para saber mais, confira o Suporte do Azure.For more information, see Azure support.

Casos de uso do Apache StormApache Storm use cases

Abaixo estão alguns cenários comuns em que você pode usar o Storm no HDInsight:The following are some common scenarios for which you might use Storm on HDInsight:

  • Internet das coisas (IoT)Internet of Things (IoT)
  • Detecção de fraudeFraud detection
  • Análise das redes sociaisSocial analytics
  • Extração, transformação e carregamento (ETL)Extraction, transformation, and loading (ETL)
  • Monitoramento de redeNetwork monitoring
  • SearchSearch
  • Mobile EngagementMobile engagement

Para obter informações sobre cenários do mundo real, consulte o Como as empresas estão usando o documento Apache Storm.For information about real-world scenarios, see the How companies are using Apache Storm document.

DesenvolvimentoDevelopment

Os desenvolvedores do .NET podem projetar e implementar topologias em C# usando Data Lake Tools para Visual Studio..NET developers can design and implement topologies in C# by using Data Lake Tools for Visual Studio. Você também pode criar topologias híbridas que usam componentes Java e C#.You can also create hybrid topologies that use Java and C# components.

Para obter mais informações, consulte Desenvolver topologias C# para o Apache Storm no HDInsight usando o Visual Studio.For more information, see Develop C# topologies for Apache Storm on HDInsight using Visual Studio.

Você também pode desenvolver soluções Java usando o IDE de sua escolha.You can also develop Java solutions by using the IDE of your choice. Para obter mais informações, consulte desenvolver topologias Java para Apache Storm no HDInsight.For more information, see Develop Java topologies for Apache Storm on HDInsight.

Também é possível usar Python para desenvolver componentes do Storm.Python can also be used to develop Storm components. Para obter mais informações, consulte Desenvolver topologias do Apache Storm usando Python no HDInsight.For more information, see Develop Apache Storm topologies using Python on HDInsight.

Padrões de desenvolvimento comunsCommon development patterns

Processamento de mensagem garantidoGuaranteed message processing

O Apache Storm pode oferecer diferentes níveis de processamento de mensagem garantido.Apache Storm can provide different levels of guaranteed message processing. Por exemplo, um aplicativo básico Storm pode garantir um processamento pelo menos uma vez e o Trident pode garantir o processamento exatamente uma vez.For example, a basic Storm application can guarantee at-least-once processing, and Trident can guarantee exactly once processing.

Para obter mais informações, consulte Garantias do processamento de dados em apache.org.For more information, see Guarantees on data processing at apache.org.

IBasicBoltIBasicBolt

O padrão de leitura de uma tupla de entrada, emitindo zero ou mais tuplas, e depois confirmando a tupla de entrada imediatamente no final do método de execução é comum.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. O Storm oferece a interface IBasicBolt para automatizar esse padrão.Storm provides the IBasicBolt interface to automate this pattern.

JunçõesJoins

O modo como os fluxos de dados são unidos varia entre aplicativos.How data streams are joined varies between applications. Por exemplo, você pode juntar cada tupla de vários fluxos em um novo fluxo ou pode juntar somente lotes de tuplas para uma janela específica.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. De qualquer forma, a junção pode ser realizada usando fieldsGrouping.Either way, joining can be accomplished by using fieldsGrouping. O agrupamento de campo é uma maneira de definir como as tuplas são roteadas para os bolts.Field grouping is a way of defining how tuples are routed to bolts.

No exemplo de Java a seguir, fieldsGrouping é usado para rotear tuplas provenientes dos componentes "1", "2" e "3" para o bolt 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"));

LotesBatches

O Apache Storm fornece um mecanismo de cronometragem interno conhecido como "tupla em escala".Apache Storm provides an internal timing mechanism known as a "tick tuple." Você pode definir quantas vezes uma tupla em escala é emitida em sua topologia.You can set how often a tick tuple is emitted in your topology.

Para obter um exemplo de como usar uma tupla de escala de um componente em C#, confira PartialBoltCount.cs.For an example of using a tick tuple from a C# component, see PartialBoltCount.cs.

CachesCaches

O cache na memória geralmente é usado como um mecanismo para acelerar o processamento, uma vez que mantém os ativos usados com mais frequência na memória.In-memory caching is often used as a mechanism for speeding up processing because it keeps frequently used assets in memory. Como uma topologia é distribuída entre vários nós, e entre vários processos dentro de cada nó, considere o uso de fieldsGrouping.Because a topology is distributed across multiple nodes, and multiple processes within each node, you should consider using fieldsGrouping. Use fieldsGrouping para garantir que as tuplas que contêm os campos que são usados para pesquisa em cache sejam sempre roteadas para o mesmo processo.Use fieldsGrouping to ensure that tuples containing the fields that are used for cache lookup are always routed to the same process. Essa funcionalidade de agrupamento evita a duplicação de entradas de cache entre os processos.This grouping functionality avoids duplication of cache entries across processes.

Fluxo "N Superior"Stream "top N"

Quando sua topologia depende do cálculo de um valor de N principal, calcule o valor N principal paralelamente.When your topology depends on calculating a top N value, calculate the top N value in parallel. Em seguida, mescle o resultado desses cálculos em um valor global.Then merge the output from those calculations into a global value. Essa operação pode ser feita usando fieldsGrouping para rotear por campo no processamento paralelo.This operation can be done by using fieldsGrouping to route by field for parallel processing. Em seguida, você pode rotear para um bolt que determina o valor N principal globalmente.Then you can route to a bolt that globally determines the top N value.

Para obter um exemplo do cálculo de um valor de N principal, confira o exemplo RollingTopWords.For an example of calculating a top N value, see the RollingTopWords example.

Registro em logLogging

O Storm usa o Apache Log4j 2 para registrar informações em log.Storm uses Apache Log4j 2 to log information. Por padrão, uma grande quantidade de dados é registrada e pode ser difícil classificar as informações.By default, a large amount of data is logged, and it can be difficult to sort through the information. Você pode incluir um arquivo de configuração de log como parte de sua topologia do Storm para controlar o comportamento de log.You can include a logging configuration file as part of your Storm topology to control logging behavior.

Para uma topologia de exemplo que demonstra como configurar o log, veja o exemplo WordCount baseado em Java para Storm no HDInsight.For an example topology that demonstrates how to configure logging, see Java-based WordCount example for Storm on HDInsight.

Próximas etapasNext steps

Saiba mais sobre as soluções de análise em tempo real com o Apache Storm no HDInsight:Learn more about real-time analytics solutions with Apache Storm on HDInsight: