Apache Storm é um sistema de processamento de stream em tempo real, e neste tutorial do Apache Storm, você aprenderá tudo sobre ele, seu modelo de dados, arquitetura e componentes.
Recursos do Apache Storm
A seguir estão os recursos do Apache Storm.
É um código-fonte aberto e faz parte dos projetos do Apache. Ajuda a processar big data . É um sistema de processamento rápido e confiável. Ele pode ingerir dados de alto volume e alta velocidade. É altamente paralelizável, escalonável e tolerante a falhas.
Na próxima seção do tutorial do Apache Storm, discutiremos os Usos do Storm.
Usos do Storm
O Storm fornece o sistema de computação que pode ser usado para análises em tempo real , aprendizado de máquina e processamento de stream ilimitado. Ele pode receber mensagens produzidas continuamente e pode enviar para vários sistemas.
Na próxima seção do tutorial do Apache Storm, vamos entender o que é um fluxo.
O que é um fluxo
Na computação, um fluxo representa um fluxo contínuo seqüência de bytes de dados. É produzido por um programa e consumido por outro. É consumido na sequência”Primeiro a entrar, primeiro a sair”(ou FIFO). Isso significa que se 12345 é produzido por um programa, outro programa o consome apenas na ordem 12345. Ele pode ser limitado ou ilimitado.
Limitado significa que os dados são limitados. Ilimitado significa que não há limite e o produtor continuará produzindo os dados enquanto eles forem executados e o consumidor continuará consumindo os dados. Um canal do Linux é um exemplo de fluxo.
O comando do Linux é cat logfile | wc-l (barra vertical cat space logfile wc hífen l)
Neste comando, o comando cat logfile produz um fluxo que é consumido pelo comando wc-l para exibir o número de linhas no arquivo.
Programa de mestrado em engenheiro de Big Data
Domine todas as habilidades de Big Data de que você precisa hoje Inscreva-se agora
Casos de uso do setor para STORM
Muitos setores podem usar o Storm para processamento de big data em tempo real, como:
Empresas de cartão de crédito podem usá-lo para detecção de fraude em furto. Os bancos de investimento podem usá-lo para análise de padrões de comércio em tempo real. As lojas de varejo podem usá-lo para preços dinâmicos. Os provedores de transporte podem usá-lo para sugestões de rota com base em dados de tráfego. Os profissionais de saúde podem usá-lo para monitorar os sensores da UTI. Organizações de telecomunicações podem usá-lo para processar dados de switch.
Na próxima seção do tutorial do Apache Storm, vamos dar uma olhada no modelo de dados Storm.
STORM Data Model
O modelo de dados Storm consiste em tuplas e fluxos.
Uma tupla é uma lista ordenada de valores nomeados semelhante a uma linha do banco de dados. Cada campo da tupla possui um tipo de dados que pode ser dinâmico. O campo pode ser de qualquer tipo de dados, como string, inteiro, flutuante, duplo, booleano ou matriz de bytes. Tipos de dados definidos pelo usuário também são permitidos em tuplas.
Por exemplo, para os dados do mercado de ações, se o esquema estiver no formato de cotação, ano, valor e status, então algumas tuplas podem ser ABC, 2011, 20, GOOD ABC, 2012, 30, GOOD ABC, 2012, 32, BAD XYZ, 2011, 25, GOOD.
Um stream de Storm é uma sequência ilimitada de tuplas.
Por exemplo, se as tuplas acima forem armazenadas em um formato de arquivo stocks.txt, o comando cat stocks.txt produzirá um fluxo. Se o processo está continuamente colocando dados no formato stocks.txt, então ele se torna um fluxo ilimitado.
Arquitetura Storm
Storm tem uma arquitetura mestre-escravo. Existe um servidor mestre chamado Nimbus em execução em um único nó chamado nó mestre. Existem serviços escravos chamados supervisores que estão em execução em cada nó de trabalho. Os supervisores iniciam um ou mais processos de trabalho chamados de trabalhadores que são executados em paralelo para processar a entrada.
Os processos de trabalho armazenam a saída em um sistema de arquivos ou banco de dados. Storm usa Zookeeper para coordenação de processos distribuídos.
O diagrama mostra a arquitetura Storm com um nó mestre e cinco nós de trabalho. O processo Nimbus está sendo executado no nó mestre. Há um processo de supervisor em execução em cada nó de trabalho. Existem vários processos de trabalho em execução em cada nó de trabalho. Os trabalhadores obtêm a entrada do sistema de arquivos ou banco de dados e armazenam a saída também em um sistema de arquivos ou banco de dados.
Na próxima seção do tutorial do Apache Storm, discutiremos os processos de tempestade.
Processos de tempestade
Um cluster Zookeeper é usado para coordenar os processos mestre, supervisor e de trabalho. Continuando, vamos explorar o processo Nimbus, que é o daemon mestre do cluster Storm.
É executado em apenas um nó chamado nó mestre Atribui e distribui as tarefas aos nós de trabalho Monitora as tarefas Reatribui tarefas em caso de falha do nó.
Em seguida, vem o processo de supervisor que é o daemon de trabalho do cluster Storm.
É executado em cada nó de trabalho do cluster. Executa cada tarefa como um processo separado chamado processo de trabalho Comunica-se com o daemon Nimbus usando zookeeper Número de processos de trabalho para cada tarefa pode ser configurada
Em seguida, é o processo de trabalho, que faz o trabalho real de Storm.
É executado em qualquer nó de trabalho do cluster Iniciado e monitorado pelo processo de supervisão Executa tarefas de bico ou parafuso Número de trabalhador processos para cada tarefa podem ser configurados
Programa de amostra
Um programa de processamento de log pega cada linha do arquivo de log e filtra as mensagens com base no tipo de log e produz o tipo de log.
: Um arquivo de log contendo mensagens de erro, aviso e informativas. Este é um arquivo crescente, obtendo linhas contínuas de mensagens de log. Saída: Tipo de mensagem de saída (ERROR ou WARNING ou INFO). Vamos continuar com o programa de exemplo.
Este programa fornecido a seguir contém um único spout e um único parafuso.
O spout faz o seguinte:
Abre o arquivo, lê cada linha e produz a linha inteira como um tupla.
O bolt faz o seguinte: Lê cada tupla do spout e verifica se a tupla contém a string ERROR ou WARNING ou INFO. Produz apenas ERROR ou WARNING ou INFO.
LineSpout {
foreach line=readLine (logfile) {
emit (linha)
}
LogTypeBolt (tupla) {
if (tupla contém “ERROR”) emite (“ERROR”);
if (tupla contém (“AVISO” ) emit (“AVISO”);
if (tupla contém “INFO”) emit (“INFO”);
}
O spout se chama LineSpout. Ele tem um loop para ler cada linha de entrada e produz a linha inteira. A função emit é usada para produzir a linha como um fluxo de tuplas. O bolt é denominado LogTypeBolt. Ele usa a tupla como entrada. Se a linha contiver o string ERROR, em seguida, ele exibe a string ERROR. Se a linha contiver a string WARNING, então ele produz a string WARNING.
Da mesma forma, se a linha contiver a string INFO, então ele produzirá a string INFO.
A seguir, vamos explorar os componentes do Storm.
Componentes do Storm
O Storm fornece dois tipos de componentes que processam o fluxo de entrada, spouts e bolts. dados externos para produzir e fluxos de tuplas. Spouts produzem tuplas e as enviam para os parafusos. Bolts processam as tuplas de fluxos de entrada e produzem algumas tuplas de saída. Os fluxos de entrada para o parafuso podem vir de bicos ou de outro parafuso.
O diagrama mostra um cluster do Storm que consiste em um bico e dois parafusos. O spout obtém os dados de uma fonte de dados externa e produz um fluxo de tuplas. O primeiro parafuso pega as tuplas de saída do spout e as processa para produzir outro conjunto de tuplas. O segundo bolt pega as tuplas de saída do bolt 1 e as armazena em um fluxo de saída.
Agora, vamos entender o funcionamento do Storm spout.
Storm Spout
O Spout é um componente do Storm que ingere os dados e cria o fluxo de tuplas para processamento pelos parafusos. Um spout pode criar um fluxo de tuplas a partir da entrada e serializar automaticamente os dados de saída. Ele pode obter dados de outros sistemas de enfileiramento como Kafka, Twitter, RabitMQ, etc. As implementações do Spout estão disponíveis para produtores de mensagens populares, como Kafka e Twitter. Um único bico pode produzir vários fluxos de saída. Cada saída de stream pode ser consumida por um ou mais bolts.
O diagrama mostra um spout do Twitter que obtém posts de um feed do Twitter e os converte em um stream de tuplas. Ele também mostra um spout Kafka que recebe mensagens do servidor Kafka e produz uma tupla de mensagens.
A seguir, vamos ver como o Storm Bolt funciona.
Storm Bolt
O Storm Bolt processa as tuplas de spouts e saídas para sistemas externos ou outros parafusos. A lógica de processamento em um bolt pode incluir filtros, junções e agregação.
Os exemplos de dados de filtro incluem processamento apenas de registros com STATUS=GOOD, processamento apenas de registros com volume> 100, etc.
Os exemplos de agregação incluem o cálculo da soma do valor da venda, o cálculo do valor máximo do estoque, etc. Um bolt pode processar qualquer número de fluxos de entrada. Os dados de entrada são desserializados e os dados de saída são serializados. Os fluxos são tratados como tuplas; os parafusos são executados em paralelo e podem ser distribuídos pelas máquinas no cluster Storm.
O diagrama mostra quatro parafusos funcionando em paralelo. O parafuso 1 produz a saída que é recebida pelo parafuso 3 e pelo parafuso 4. O parafuso 2 produz a saída que é recebida pelo parafuso 3 e pelo parafuso 4. O parafuso 3 armazena a saída em um banco de dados Cassandra enquanto o parafuso 4 armazena a saída no armazenamento Hadoop.
A seguir, exploraremos o funcionamento da topologia Storm.
Curso de desenvolvedor de Big Data Hadoop e Spark (GRATUITO)
Aprenda noções básicas de Big Data com os principais especialistas-GRATUITAMENTE Inscreva-se Agora
Topologia de tempestade
Um grupo de bicos e parafusos em execução em um cluster Storm formam a topologia Strom. Bicos e parafusos correm em paralelo. Pode haver vários bicos e parafusos. A topologia determina como a saída de um bico está conectada à entrada de parafusos e como a saída de um parafuso é conectada à entrada de outros parafusos.
O diagrama mostra uma topologia de tempestade com um bico e cinco parafusos. A saída do bico 1 é processada por três parafusos: parafuso 1, parafuso 2 e parafuso 3. O parafuso 4 obtém a saída do parafuso 2 e parafuso 3. O parafuso 5 obtém a entrada do parafuso 5. Isso representa a topologia de tempestade. A entrada para o spout 1 vem de uma fonte de dados externa. A saída do parafuso 4 vai para a Saída 1 e a saída do parafuso 5 vai para a saída 2.
Vamos entender isso de uma maneira melhor com a ajuda de um exemplo na próxima seção do tutorial do Apache Storm.
Storm Exemplo
Vamos ilustrar a tempestade com um exemplo.
Problema: Os dados do mercado de ações que são continuamente enviados por um sistema externo devem ser processados, para que os dados com status BOM sejam inseridos em um banco de dados, enquanto os dados com status RUIM são gravados em um log de erros.
Solução STORM: Isso terá um spout e dois parafusos na topologia. O Spout obterá os dados do sistema externo e os converterá em um fluxo de tuplas. Essas tuplas serão processadas por dois parafusos. Aqueles com status GOOD serão processados por bolt1. Aqueles com status RUIM serão processados por bolt2. Bolt1 salvará as tuplas no banco de dados do Cassandra. Bolt2 salvará as tuplas em um arquivo de log de erros.
O diagrama mostra a topologia Storm para a solução acima. Existe um bico que obtém a entrada de uma fonte de dados externa. Existe o bolt 1 que processa as tuplas do spout e armazena as tuplas com status BOM para o Cassandra. Existe o bolt 2 que processa as tuplas do spout e armazena as tuplas com status RUIM em um registro de erro.
A seguir, vamos entender a serialização e a desserialização.
Serialização e desserialização
Serialização é o processo para converter estruturas de dados ou objetos em um fluxo de bytes independente de plataforma. Ele é usado para armazenar dados em disco ou memória e para transmitir dados pela rede. O objetivo da serialização é tornar os dados legíveis por outros programas.
Por exemplo, O objeto (nome: char (10), id: inteiro) pode ter dados {‘John’, 101}. Isso pode ser serializado como “John \ 00×65”. Isso representa que a string John é seguida por um caractere nulo e, em seguida, pela representação hexadecimal de 101.
Para ler os dados, os programas precisam reverter o processo de serialização. Isso é chamado de desserialização. Serialization-Deserialization também é conhecido como SerDe (abreviação de Serialization-Deserialization).
Agora vamos passar pelas etapas envolvidas no envio de um trabalho para Storm.
Enviando um trabalho para Storm.
Um trabalho é submetido ao processo Nimbus. Para enviar um trabalho, você precisa:
Criar funções spout e bolt Construir topologia usando spout e bolts Configurar paralelismo Enviar topologia para Nimbus
builder=new TopologyBuilder ();
builder.setSpout (“spout”, LineSpout ());
builder.setBolt (“bolt”, LogTypeBolt ()). shuffleGrouping (“spout”);
conf.setNumWorkers (2) ;//use dois processos de trabalho
StormSubmitter.submitTopology (builder.createTopology, conf);
O diagrama mostra um fragmento de programa Java para enviar um trabalho para Storm. Primeiro, ele obtém um Objeto construtor de topologia Storm. Em seguida, ele define o spout e bolts para a topologia com os métodos setSpout e setBolt. Ele também define a conexão da saída de spout para bolt usando o método shuffleGrouping.
shuffleGrouping é um tipo de agrupamento de entrada que discutiremos em uma lição subsequente. Depois de definir o bico e o parafuso, o programa define o número de trabalhadores para o trabalho como 2; o que representa o número de trabalhadores que serão executados em paralelo. Finalmente, usando o método submitTopology, a topologia é submetida ao processo Nimbus.
Agora, finalmente, veremos os Tipos de topologias.
Tipos de topologias
Storm suporta diferentes tipos de topologias:
Topologia simples: consiste em bicos e parafusos simples. A saída dos bicos é enviada aos parafusos. Topologia transacional: Garante o processamento de tuplas apenas uma vez. Esta é uma abstração da topologia simples acima. As bibliotecas Storm garantem que uma tupla seja processada exatamente uma vez, mesmo se o sistema cair no meio. Esta topologia se tornou obsoleta e substituída pela topologia trident na versão atual do Storm. RPC distribuído: o RPC distribuído também é chamado de DRPC. Esta topologia fornece bibliotecas para paralelizar qualquer computação usando Storm. Topologia Trident: é uma abstração de nível superior sobre Storm. Isso significa que ele possui bibliotecas que rodam em cima das bibliotecas do Storm para oferecer suporte a funcionalidades adicionais. Trident fornece bicos e parafusos que fornecem funcionalidade muito superior, como processamento de transações e processamento em lote.
Resumo
Aqui está o resumo do tutorial do Apache Storm:
Storm é usado para processar fluxos de dados. O modelo de dados Storm consiste em tuplas e fluxos. Storm consiste em bicos e parafusos. Spouts criam tuplas que são processadas por bolts. Bicos e parafusos juntos formam a topologia do Storm. Storm segue uma arquitetura mestre-escravo. O processo mestre é chamado de Nimbus e os processos escravos são chamados de supervisores. O processamento de dados é feito por trabalhadores que são monitorados por supervisores.
Ansioso para se tornar um desenvolvedor Hadoop? Confira a Big Data Hadoop Certification Curso de treinamento e obtenha a certificação hoje.
Próxima etapa para o sucesso
Agora que cobrimos tudo sobre a tempestade Apache, sua próxima etapa deve ser dominar o ecossistema de Big Data em em geral. Se você acabou de entrar no mundo do Big Data, o Certificação Apache Spark e Scala deve ser sua próxima parada. Este curso de certificação o ajudará a obter as habilidades mais exigidas do Apache Spark e a desenvolver uma vantagem competitiva para uma carreira como Desenvolvedor Spark. Por outro lado, se você já é proficiente no ecossistema de Big Data, tornar-se um engenheiro de Big Data pode ser sua meta de carreira. E nós temos o curso certo para ajudá-lo a chegar lá. Explore o programa de mestrado para engenheiros de Big Data do Simplilearn e inscreva-se no imediatamente, para dar um passo mais perto da sua ambição. O que você está esperando? Comece agora mesmo!