Sistema de computação distribuída Apache Storm 2.0 disponível

vi a luz lançamento significativo de um sistema distribuído de processamento de eventos Tempestade Apache 2.0, notável por sua transição para uma nova arquitetura implementada em Java, em vez da linguagem Clojure usada anteriormente.

O projeto permite organizar o processamento garantido de diversos eventos em tempo real. Por exemplo, Storm pode ser usado para analisar fluxos de dados em tempo real, executar tarefas de aprendizado de máquina, organizar computação contínua, implementar RPC, ETL, etc. O sistema suporta clustering, criação de configurações tolerantes a falhas, modo de processamento de dados garantido e possui alto desempenho, suficiente para processar mais de um milhão de solicitações por segundo em um nó de cluster.

A integração com vários sistemas de processamento de filas e tecnologias de banco de dados é suportada. A arquitetura Storm envolve receber e processar fluxos de dados não estruturados e constantemente atualizados usando processadores complexos arbitrários com a capacidade de particionar entre diferentes estágios de cálculos. O projeto foi entregue à comunidade Apache depois que o Twitter adquiriu a BackType, empresa que originalmente desenvolveu o framework. Na prática, o Storm foi utilizado no BackType para analisar o reflexo de eventos em microblogs, comparando dinamicamente novos tweets e os links neles utilizados (por exemplo, foi avaliado como links externos ou anúncios publicados no Twitter foram retransmitidos por outros participantes ).

A funcionalidade do Storm é comparada à plataforma Hadoop, com a principal diferença sendo que os dados não são armazenados em um warehouse, mas são ingeridos externamente e processados ​​em tempo real. Storm não possui uma camada de armazenamento integrada e a consulta analítica começa a ser aplicada aos dados recebidos até ser cancelada (enquanto o Hadoop usa jobs MapReduce de tempo finito, o Storm usa a ideia de executar “topologias” continuamente). A execução de manipuladores pode ser distribuída entre vários servidores - Storm paraleliza automaticamente o trabalho com threads em diferentes nós do cluster.

O sistema foi originalmente escrito em Clojure e roda dentro da máquina virtual JVM. A Fundação Apache lançou uma iniciativa para migrar o Storm para um novo kernel escrito em Java, cujos resultados são propostos no lançamento do Apache Storm 2.0. Todos os componentes básicos da plataforma são reescritos em Java. O suporte para escrita de manipuladores no Clojure foi mantido, mas agora é oferecido na forma de ligações. Storm 2.0.0 requer Java 8. O modelo de processamento multithread foi completamente redesenhado, permitindo para atingir um aumento notável no desempenho (para algumas topologias, os atrasos foram reduzidos em 50-80%).

Sistema de computação distribuída Apache Storm 2.0 disponível

A nova versão também oferece uma nova API Streams digitada que permite definir manipuladores usando operações funcionais de estilo de programação. A nova API é implementada sobre a API base padrão e oferece suporte à fusão automática de operações para otimizar seu processamento. A API Windowing para operações de janela adicionou suporte para salvar e restaurar o estado no back-end.

Apoio para levar em conta recursos adicionais ao tomar decisões não limitadas a
CPU e memória, como configurações de rede e GPU. Um grande número de melhorias foram feitas para garantir a integração com a plataforma Kafka. O sistema de controle de acesso foi expandido para incluir a capacidade de criar grupos de administradores e delegar tokens. Adicionadas melhorias relacionadas ao suporte a SQL e métricas. Novos comandos apareceram na interface do administrador para depurar o estado do cluster.

Áreas de aplicação do Storm:

  • Processar fluxos de novos dados ou atualizações de banco de dados em tempo real;
  • Computação Contínua: Storm pode executar consultas contínuas e processar fluxos contínuos, entregando resultados de processamento ao cliente em tempo real.
  • Chamada de procedimento remoto distribuído (RPC): Storm pode ser usado para fornecer execução paralela de consultas com uso intensivo de recursos. Um trabalho (“topologia”) no Storm é uma função distribuída entre nós que aguarda a chegada de mensagens que precisam ser processadas. Após receber uma mensagem, a função a processa no contexto local e retorna o resultado. Um exemplo de uso de RPC distribuído seria processar consultas de pesquisa em paralelo ou executar operações em um grande conjunto de conjuntos.

Recursos da tempestade:

  • Um modelo de programação simples que simplifica bastante o processamento de dados em tempo real;
  • Suporte para qualquer linguagem de programação. Estão disponíveis módulos para Java, Ruby e Python, a adaptação para outras linguagens é fácil graças a um protocolo de comunicação muito simples que requer cerca de 100 linhas de código para suportar;
  • Tolerância a falhas: para executar um trabalho de processamento de dados, você precisa gerar um arquivo jar com código. Storm distribuirá independentemente esse arquivo jar pelos nós do cluster, conectará os manipuladores associados a ele e organizará o monitoramento. Quando o trabalho for concluído, o código será automaticamente desabilitado em todos os nós;
  • Escalabilidade horizontal. Todos os cálculos são realizados em modo paralelo, à medida que a carga aumenta basta simplesmente conectar novos nós ao cluster;
  • Confiabilidade. Storm garante que cada mensagem recebida seja totalmente processada pelo menos uma vez. A mensagem será processada apenas uma vez se não houver erros ao passar por todos os manipuladores; se surgirem problemas, as tentativas de processamento malsucedidas serão repetidas.
  • Velocidade. O código do Storm é escrito com alto desempenho em mente e usa o sistema para mensagens assíncronas rápidas ZeroMQ.

Fonte: opennet.ru

Adicionar um comentário