Qual é a diferença entre o apache storm e o apache spark?

Apache Storm vs Apache Spark ao vivo

Esta seção de comparação entre o tutorial sobre streaming de faísca vs tempestade explica as diferenças detalhadas entre Apache Storm e Apache Spark Streaming.

Primeiro é o recurso seguido pelo Apache Storm e depois pelo Apache Spark Streaming

Modelo de processamento

Suporta o verdadeiro modelo de processamento de streaming por meio da camada principal de tempestade.

Spark streaming

é um wrapper sobre o processamento em lote do Spark.

Primitivas

O Storm fornece um conjunto muito rico de primitivas para executar o processo no nível da tupla em intervalos de um fluxo (filtros, funções). Agregações sobre mensagens em um fluxo podem ser obtidas por meio de grupo por semântica. As operações de junção podem ser executadas entre fluxos - ele suporta junção interna esquerda, direita (padrão).

O streaming Spark fornece 2 grandes variedades de operadores -

operadores de transformação de fluxo

que transformam um DStream em outro DStream, e operadores de saída que gravam informações em sistemas externos. o anterior inclui operadores sem estado (filtro, mapa, mapPartitions, união, distintos que ativados) ainda como operadores de janelas com estado (countByWindow, reduzaByWindow e depois).

Estado

Gestão

Por padrão, o core storm não oferece nenhum suporte no nível da estrutura para armazenar qualquer saída de parafuso intermediária (o resultado da operação do usuário) como um estado. Portanto, qualquer aplicativo deve criar / atualizar expressamente seu próprio estado, conforme necessário.

O Spark subjacente, por padrão, trata a saída de cada operação RDD (sem estado / sem estado) como estado intermediário e a armazena como

RDD

. O Spark Streaming permite manter e alterar o estado por meio da API updateStateByKey. Não foi possível encontrar um método conectável para implementar o estado no sistema externo.

Garantias de entrega de mensagens (tratamento de falhas no nível da mensagem)

O Storm suporta três garantias de processamento de mensagens: pelo menos uma vez, no máximo uma vez e exatamente uma vez. Os mecanismos de confiabilidade do Storm são puramente distribuídos, escalonáveis ​​e tolerantes a falhas.

O Spark Streaming define sua semântica de tolerância a falhas em termos das garantias fornecidas pelo destinatário e pelos operadores de saída. De acordo com a arquitetura Apache Spark, os dados recebidos são lidos e replicados em diferentes nós dos executores do Spark. Isso gera cenários de falha em termos de dados recebidos, mas pode não ser refletido. A tolerância a falhas em caso de falha do trabalhador e de driver é tratada de maneira diferente.

Continue lendo aqui

Para entender melhor essa pergunta, vamos começar com suas breves apresentações:

Tempestade Apache:

O Apache Storm é um sistema de computação distribuído em tempo real. Também é um sistema gratuito e de código aberto. É fácil processar de maneira confiável fluxos de dados ilimitados, fazendo para o processamento em tempo real o que

Hadoop

feito para processamento em lote. O Storm é simples, pode ser usado com qualquer linguagem de programação e é muito divertido de usar!

É escalável,

tolerante a falhas

, garante que seus dados serão processados ​​e fáceis de configurar e operar.

O Storm se integra às tecnologias de enfileiramento e banco de dados que você já usa. Uma topologia Storm consome fluxos de dados e processa esses fluxos de maneira arbitrariamente complexa, reparticionando os fluxos entre cada estágio da computação, conforme necessário.

Apache Spark Streaming:

Um fluxo de dados é uma sequência ilimitada de dados que chega continuamente.

Spark Streaming

divide dados de entrada de fluxo contínuo em unidades discretas para processamento adicional. O processamento de fluxo é um processamento de baixa latência e análise de dados de fluxo.

Agora vamos comparar os dois com base em seus recursos:

1. Comunidade Apache de código aberto

  • Storm: Apache Storm - página saudável da lista de empresas que estão executando o Storm em produção para muitos casos de uso. Muitos deles são implantações da Web em larga escala que estão ampliando os limites de desempenho e escala. Por exemplo, a leitura do Yahoo consiste em dois, 300 nós executando o Storm para um processo de evento quase em tempo real, com a maior topologia que se estende por quatrocentos nós.
  • Streaming Spark: o streaming Apache Spark continua aumentando e possui experiência restrita em clusters de produção. Porém, a comunidade geral do Apache Spark é uma das maiores e, portanto, as comunidades de suprimento aberto mais ativas existentes atualmente. O estatuto geral está evoluindo no espaço, dada a enorme base de desenvolvedores. isso pode causar a maturidade do Spark Streaming no futuro próximo.

2. Facilidade de desenvolvimento

  • Storm: fornece APIs extremamente fáceis, ricas e intuitivas que simplesmente descrevem a natureza do DAG do fluxo do processo (topologia). As tuplas Storm, que fornecem a abstração de dados que fluem entre nós no DAG, são gravadas dinamicamente. A motivação é mudar as APIs para uso simples. Qualquer nova tupla personalizada pode ser conectada após o registro do serializador Kryo. Os desenvolvedores começarão a escrever topologias e as executarão no modo de cluster nativo. No modo local, os encadeamentos são usados ​​para simular os nós de trabalho, permitindo que o desenvolvedor defina pontos de interrupção, interrompa a execução, examine variáveis ​​e perfil antes de implementá-lo em um cluster distribuído, sempre que tudo isso for muito mais difícil.
  • Spark Streaming: Oferece APIs Scala e Java que possuem muita programação prática (transformação de dados). Como resultado, o código da topologia é muito elíptico. Há um conjunto sofisticado de documentação da API e exemplos ilustrativos no mercado para o desenvolvedor.

3. Facilidade de Operabilidade

  • Storm: é um pouco complicado implantar / instalar o Storm através de muitas ferramentas (fantoches e depois) e implanta o cluster. O Apache Storm contém uma dependência no cluster do Zookeeper. Para que ele possa atender à coordenação sobre clusters, armazenar estado e estatísticas. Ele implementa o suporte da CLI para instalar ações como enviar, ativar, desativar, listar, eliminar topologia. uma tolerância a falhas poderosa sugere que qualquer período de daemon não afeta a execução da topologia. No modo autônomo, os daemons Storm são obrigados a executar no modo supervisionado. No modo de cluster YARN, os daemons Storm surgiram como contêineres e controlados pelo Application Master (Slider).
  • Spark Streaming: Utiliza o Spark como a estrutura de execução fundamental. Deve ser fácil alimentar Spark Clusters no YARN. Existem muitos requisitos de implantação. Geralmente, habilitamos o ponto de verificação para tolerância a falhas do driver do aplicativo. Isso poderia trazer uma dependência no armazenamento tolerante a falhas (HDFS).

4. Opções de Idioma

  • Storm: podemos criar aplicativos Storm em Java, Clojure e Scala.
  • Spark Streaming: podemos criar aplicativos Spark em Java, Scala, Python e R.

5. Tolerância a falhas (manipulação de processo / falhas no nível do nó)

  • Tempestade: Tempestade, em sua essência, é projetada com tolerância a falhas. Seus daemons (Nimbus e Supervisor) são feitos para serem à prova de falhas (isso significa que o método se autodestrói sempre que qualquer cenário repentino é encontrado) e sem estado (todo estado é ininterrupto no Zookeeper ou no disco).
  • Spark Streaming: O Nó do Driver (equivalente a JT) é SPOF. Se o nó do driver falhar, todos os executores serão perdidos com as informações recebidas e replicadas na memória. Portanto, o Spark Streaming usa o ponto de verificação de dados para superar a falha do driver.

Existem muitos outros recursos nos quais podemos diferenciar os dois. para aprender tudo: siga o link para:

Apache Storm vs Spark Streaming - Comparação de recursos

Melhore seu conhecimento do Spark seguindo este link:

As 50 principais perguntas e respostas sobre o Apache Spark

Apache Storm

: Morrendo aos poucos

Apache Spark

: Crescendo

Apache Storm: estrutura de processamento de fluxo em tempo real.

Apache Spark: plataforma diversificada, capaz de lidar com todas as cargas de trabalho, como: lote, interativo, iterativo, em tempo real, gráfico, etc.

O Spark Streaming é o componente do ecossistema do Spark, que lida com o fluxo em tempo real, vamos comparar com o Storm

Característica diferença sábia entre Apache Storm vs Spark Streaming.

Essas diferenças ajudarão você a saber qual é o melhor uso entre o Apache Storm e o Spark. Vamos dar uma olhada em cada recurso, um por um -

1. Modelo de Processamento

  • Storm: Ele suporta o verdadeiro modelo de processamento de fluxo através da camada principal de tempestade.
  • Spark Streaming: O Apache Spark Streaming é um invólucro do processamento em lote do Spark.

2. Primitivos

  • Tempestade: fornece um conjunto muito rico de primitivas para executar processos de nível de tupla em intervalos de um fluxo (filtros, funções). Agregações por mensagens em um fluxo são possíveis através do grupo por semântica. Ele suporta junção esquerda, junção direita, junção interna (padrão) no fluxo.
  • Spark Streaming: Fornece 2 grandes variedades de operadores. Primeiro, os operadores de transformação de Stream que transformam um DStream em outro DStream. Segundo, os operadores de saída que gravam informações em sistemas externos. O anterior inclui operadores sem estado (filtro, mapa, mapPartitions, união, distintos que ativados) ainda como operadores de janelas com estado (countByWindow, reduzaByWindow e depois).

3. Gestão Estadual

  • Storm: Core Storm, por padrão, não oferece suporte ao nível da estrutura para armazenar qualquer saída de parafuso intermediária (o resultado da operação do usuário) como um estado. Portanto, qualquer aplicativo deve criar / atualizar seu próprio estado como e uma vez necessário.
  • Streaming do Spark: o Spark subjacente, por padrão, trata a saída de todas as operações de RDD (transformações e ações) como um estado intermediário. Ele o armazena como RDD. O Spark Streaming permite manter e alterar o estado por meio da API updateStateByKey. Não foi possível encontrar um método conectável para implementar o estado no sistema externo.

4. Garantias de entrega de mensagens (tratamento de falhas no nível da mensagem)

  • Storm: Suporta três garantias de processamento de mensagens: pelo menos uma vez, no máximo uma vez e exatamente uma vez. Os mecanismos de confiabilidade do Storm são distribuídos, escalonáveis ​​e tolerantes a falhas.
  • Spark Streaming: O Apache Spark Streaming define sua semântica de tolerância a falhas, as garantias fornecidas pelo destinatário e pelos operadores de saída. De acordo com a arquitetura do Apache Spark, os dados recebidos são lidos e replicados nos diferentes nós do executor do Spark. Isso gera dados de cenários de falha recebidos, mas não podem ser refletidos. Ele lida com a tolerância a falhas de maneira diferente no caso de falha do trabalhador e falha do driver.

5. Tolerância a falhas (manipulação de processo / falhas no nível do nó)

  • Tempestade: Tempestade é planejada com tolerância a falhas em seu núcleo. Os daemons Storm (Nimbus e Supervisor) são feitos com rapidez de falha (isso significa que o método se autodestrói sempre que qualquer cenário repentino é encontrado) e sem estado (todo estado é ininterrupto no Zookeeper ou no disco).
  • Spark Streaming: O Nó do Driver (equivalente a JT) é SPOF. Se o nó do driver falhar, todos os executores serão perdidos com as informações recebidas e replicadas na memória. Portanto, o Spark Streaming usa o ponto de verificação de dados para superar a falha do driver.

6. Debuggability e Monitoramento

  • Storm: a interface do usuário do Apache Storm suporta imagem de todas as topologias; com todo o desmembramento de bicos e parafusos internos. A interface do usuário contribui adicionalmente com informações que apresentam erros nas tarefas e estatísticas detalhadas sobre a taxa de transferência e a latência de todas as partes da topologia em execução. Ajuda na depuração de problemas em alto nível. Monitoramento baseado em métricas: o recurso de métricas embutidas do Storm suporta o nível de estrutura para que os aplicativos emitam quaisquer métricas, que podem ser simplesmente integradas a métricas / sistemas de monitoramento externos.
  • Spark Streaming: a interface do usuário da web do Spark exibe uma guia Streaming extra que mostra estatísticas de receptores em execução (se os receptores estão ativos, a variedade de registros recebidos, erro do receptor etc.) e lotes concluídos (tempos de processo em lote, atrasos de enfileiramento etc.) em). É útil observar a execução do aplicativo. As 2 informações a seguir na interface do usuário da web do Spark são significativamente necessárias para a padronização do tamanho do lote:
  • Tempo de Processamento - O tempo para processar todos os lotes de dados.
  • Atraso na programação - o tempo que um lote permanece em uma fila para a conclusão dos lotes anteriores do processo.

7. Auto Scaling

  • Storm: fornece configuração de paralelismo inicial em vários níveis por topologia - variedade de processos de trabalho, executores, tarefas. Além disso, ele suporta o reequilíbrio dinâmico, que permite aumentar ou reduzir o número de processos e executores de trabalho que não são necessários para reiniciar o cluster ou a topologia. Uma vez que todos os nós de supervisor estão totalmente saturados com os processos de trabalho, e há uma necessidade de expansão, basta iniciar um nó de supervisor de substituição e informá-lo para agrupar todo o Zookeeper. É possível transformar a lógica de monitorar o consumo atual de recursos em todos os nós em um cluster Storm, e adicionar dinamicamente muitos recursos. O STORM-594 descreve esse mecanismo de auto-dimensionamento que emprega um sistema de feedback.
  • Spark Streaming: a comunidade está atualmente desenvolvendo um dimensionamento dinâmico para aplicativos de streaming. No momento, o dimensionamento elástico dos aplicativos de streaming Spark não é suportado. Essencialmente, a alocação dinâmica não deve ser usada no Spark streaming no momento (1.4 ou anterior). o motivo é que atualmente a topologia de recebimento é estática. o número de receptores é fixo. Um receptor é alocado a cada DStream instanciado e ele usa um núcleo dentro do cluster. Depois que o StreamingContext é iniciado, essa topologia não pode ser modificada. A morte de receptores leva à interrupção da topologia.

8. Integração de fios

  • Storm: A integração do Storm ao YARN é recomendada pelo Apache Slider. Um controle deslizante é um aplicativo YARN que implementa aplicativos distribuídos que não são YARN em um cluster YARN. Ele interage com o YARN RM para gerar contêineres para aplicativos distribuídos e, em seguida, gerencia o ciclo de vida desses contêineres. O Slider fornece pacotes de aplicativos prontos para uso para o Storm.
  • Streaming do Spark: a estrutura do Spark fornece integração nativa junto com o YARN. O Spark streaming como uma camada acima do Spark apenas aproveita a integração. Cada aplicativo de streaming Spark é reproduzido como um aplicativo Yarn individual. O contêiner ApplicationMaster executa o driver Spark e inicializa o SparkContext. Todo executor e destinatário são executados em contêineres gerenciados pelo ApplicationMaster. O ApplicationMaster envia periodicamente um trabalho por micr lote dos contêineres YARN.

9. Isolamento

  • Tempestade: Cada processo de funcionário executa executores para uma topologia específica. Essa mistura de várias tarefas de topologia não é permitida no nível do processo do operador, que suporta o isolamento do tempo de execução no nível da topologia. Além disso, todo encadeamento do executor executa uma ou mais tarefas de um elemento idêntico (bico ou parafuso), que não é uma mistura de tarefas entre os elementos.
  • Spark Streaming: o aplicativo Spark é um aplicativo diferente executado no cluster YARN, onde quer que cada executor seja executado em um contêiner YARN diferente. Portanto, o isolamento do nível da JVM é fornecido pelo Yarn, pois duas topologias totalmente diferentes não podem ser executadas na mesma JVM. Além disso, o YARN fornece isolamento no nível do recurso para que as restrições de recursos no nível do contêiner (CPU, limites de memória) possam ser organizadas.

11. Comunidade Apache de código aberto

  • Storm: Apache Storm - página saudável da lista de empresas que estão executando o Storm em produção para muitos casos de uso. Muitos deles são implantações da Web em larga escala que estão ampliando os limites de desempenho e escala. Por exemplo, a leitura do Yahoo consiste em dois, 300 nós executando o Storm para um processo de evento quase em tempo real, com a maior topologia que se estende por quatrocentos nós.
  • Streaming Spark: o streaming Apache Spark continua aumentando e possui experiência restrita em clusters de produção. Porém, a comunidade geral do Apache Spark é uma das maiores e, portanto, as comunidades de suprimento aberto mais ativas existentes atualmente. O estatuto geral está evoluindo no espaço, dada a enorme base de desenvolvedores. isso pode causar a maturidade do Spark Streaming no futuro próximo.

12. Facilidade de desenvolvimento

  • Storm: fornece APIs extremamente fáceis, ricas e intuitivas que simplesmente descrevem a natureza do DAG do fluxo do processo (topologia). As tuplas Storm, que fornecem a abstração de dados que fluem entre nós no DAG, são gravadas dinamicamente. A motivação é mudar as APIs para uso simples. Qualquer nova tupla personalizada pode ser conectada após o registro do serializador Kryo. Os desenvolvedores começarão a escrever topologias e as executarão no modo de cluster nativo. No modo local, os encadeamentos são usados ​​para simular os nós de trabalho, permitindo que o desenvolvedor defina pontos de interrupção, interrompa a execução, examine variáveis ​​e perfil antes de implementá-lo em um cluster distribuído, sempre que tudo isso for muito mais difícil.
  • Spark Streaming: Oferece APIs Scala e Java que possuem muita programação prática (transformação de dados). Como resultado, o código da topologia é muito elíptico. Há um conjunto sofisticado de documentação da API e exemplos ilustrativos no mercado para o desenvolvedor.

13. Facilidade de Operabilidade

  • Storm: é um pouco complicado implantar / instalar o Storm através de muitas ferramentas (fantoches e depois) e implanta o cluster. O Apache Storm contém uma dependência no cluster do Zookeeper. Para que ele possa atender à coordenação sobre clusters, armazenar estado e estatísticas. Ele implementa o suporte da CLI para instalar ações como enviar, ativar, desativar, listar, eliminar topologia. uma tolerância a falhas poderosa sugere que qualquer período de daemon não afeta a execução da topologia. No modo autônomo, os daemons Storm são obrigados a executar no modo supervisionado. No modo de cluster YARN, os daemons Storm surgiram como contêineres e controlados pelo Application Master (Slider).
  • Spark Streaming: Utiliza o Spark como a estrutura de execução fundamental. Deve ser fácil alimentar o cluster Spark no YARN. Existem muitos requisitos de implantação. Geralmente, habilitamos o ponto de verificação para tolerância a falhas do driver do aplicativo. Isso poderia trazer uma dependência no armazenamento tolerante a falhas (HDFS).

Por favor, siga-me no Quora

e continue aprendendo sobre as mais recentes tecnologias de ponta.

Storm, Flink, Spark Streaming, Heron, Spring XD, Samza - todos eles são sistemas de processamento de fluxo.

Meus 2 centavos da seguinte forma:

Desempenho (taxa de transferência por $): Flink e provavelmente Heron, Samza.

Desempenho (latência): Storm e Flink. Com certeza não Spark Streaming.

Processamento exatamente uma vez: Flink, Spark streaming.

Estabilidade: os mais maduros são o streaming Storm e Spark.

Nível de abstração: Spark e Flink são de alto nível. Tempestade baixo nível.

Também vale ressaltar que, com o Spark, você obtém o Spark Streaming "de graça" - ambos são acessíveis pela mesma API. Enquanto no Storm, você é forçado a usar duas APIs diferentes para processamento de dados e processamento de fluxo. Essa pode ser uma consideração importante para o gerenciamento operacional eficiente.

  • Não exatamente.
  • Storm & Spark Streaming são equivalentes - para processar dados de streaming, consumir mensagens e outros. Eles têm características ligeiramente diferentes - portanto, a escolha depende da correspondência da impedância do aplicativo com a estrutura.
  • Não acho que eles substituam o Hadoop, no sentido de que o Hadoop nunca foi destinado a aplicativos de streaming
  • A pilha Spark, OTOH, possui o recurso de processamento distribuído e é adequada para muitos aplicativos que estão sendo considerados para o Hadoop. Veja [1] para algumas discussões sucintas.
  • Finalmente, o Hadoop em tempo real é um nome impróprio. O Hadoop possui HDFS, Hadoop / MapReduce, HBase et al, e tudo feito em grandes conjuntos de dados em modo batch com granularidade de ~ 10 a 15 minutos
  • MapReduce Realtime é uma melhor caracterização, mas em tempo real também pode exigir outras operações - como filter, fold et al.

[1]

Spark e Databricks

Eu suponho que a pergunta é "qual é a diferença entre

Spark streaming e Storm? "

e não o próprio motor Spark vs Storm, pois eles não são comparáveis. O streaming do Spark é executado no topo do mecanismo Spark.

Como alguém que apontou corretamente o motor Spark

LATA

execute usando os gerenciadores de cluster como o Hadoop YARN ou o Mesos.

Agora voltando para

Apache Spark streaming vs Apache Storm

Na IMO, para entender as ferramentas, precisamos entender primeiro os casos de uso e os conceitos subjacentes.

De cima, o advento de uma nova disciplina de análise chamada

perto

análises de streaming em tempo real ou simplesmente análises de streaming levam à necessidade de processadores de stream em tempo real etc.

(Confie em mim na maioria das vezes as pessoas dizem que em tempo real elas significam quase em tempo real e a latência de que falamos NÃO é realmente de subsegundos)

Quando digo que os processadores em tempo real estão "analisando dados em movimento" e realizando "ações". Existem 2 estilos de processamento de fluxo. Os 2 processos aparentemente confusos sobrepostos frequentemente usados ​​são:

  • Evento de cada vez ou processamento de fluxo de eventos (ESP).
  • Processamento de evento em micro-lote.

Para os leitores impacientes,

  • Apache storm (core) - Processamento de fluxo ou casos ESP - (o Spark streaming pode ser usado aqui, mas você usará um processador em lote para processamento de fluxo).
  • Spark Streaming - streaming falsificado por eventos de micro-lote com base em intervalos de tempo configuráveis ​​pelo usuário (Storm Trident se encaixa exatamente nesta liga)

O problema é que é muito difícil criar qualquer solução prática de streaming que lide apenas com fluxos de eventos. Algumas combinações no mundo real incluem processamento de fluxo completo no estado, enriquecimento de fluxo com dados estáticos externos, combinação de saída de processamento em lote ou CEP complexo. Mas esses não foram considerados cidadãos de primeira classe do processamento de fluxo quando as pessoas construíram a primeira parcela dos processadores de fluxo, porque a principal suposição das versões iniciais dessas estruturas era "O processamento do fluxo ocorre isoladamente". Portanto, a maioria das estruturas iniciais não possuía esses recursos principais. Alguns podem argumentar que o núcleo do Storm pode ser usado para criar sistemas de microcontagem como CEPs - com certeza você pode, mas você precisa escrever muito código de cola para gerenciamento de estado, gerenciamento de padrões de eventos e assim por diante ..

Mais tarde, o Apache storm teve mais 2 abstrações no topo do núcleo, chamado Storm DRPC (RPC distribuído) e Storm Trident.Trident é comparável ao Spark streaming e é maçãs: maçãs.

Um nível mais profundo,

O uso de um processador uniforme de cada vez ou de um micro-lote para processamento de fluxo é apenas um detalhe da implementação, a semântica do processamento de fluxo permanece a mesma.

Processamento de fluxo

- pode ser apátrida ou declarar o processamento completo do tempo ** eventos ordenados em movimento ou em andamento (com uma ressalva de que os eventos nem sempre são ordenados por tempo, os eventos podem ser adiados, duplicados, descartados ou entregues fora de ordem). O processamento pode envolver o enriquecimento dos fluxos com dados estáticos externos ou a combinação de fluxos. Os fluxos processados ​​se prestam a ações em tempo real. Normalmente, espera-se que as fontes de fluxo sejam fila / tópico confiável e / ou durável - (e eu amo como a maioria de vocês já está imaginando o Apache Kafka na sua cabeça).

** - A noção de tempo também é complicada, pode ser a hora de criação do evento (na fonte do evento) ou a entrada do evento (no processador de fluxo) ou o tempo de processamento

Casos de uso clássicos

  • Tickers do mercado de ações que mostram o desempenho das ações com uma seta para cima verde ou seta para baixo vermelha em tempo real.
  • O usuário final configurou um alerta para o mercado de ações dizendo "informe-me se as ações do GOOG aumentaram 10% e permaneceram por 3 horas ou mais". Pode parecer um caso de uso de mecanismo de regras? exatamente, apenas você não usa mais mecanismos de regras, usa CEPs distribuídos.
  • Os tópicos mais populares do Twitter são contados por hashtags.

Pensamentos finais

Esses são apenas meus humildes entendimentos, portanto valide e aprenda.

Atualização 1:

O volume e a velocidade dos fluxos de dados em tempo real que podem entrar em um sistema aumentaram exponencialmente de aplicativos tradicionais da Web corporativos para aplicativos móveis e para IoT / Web-of-Things. Tão perto do tempo real tornou-se

hora do evento

e os requisitos de desempenho para sistemas de streaming também aumentaram proporcionalmente,

aqui uma pesquisa recente da Forrester

mostrando candidatos e nem sequer inclui o Storm ou o Spark Streaming. Embora Apache Apex e Flink sejam comparados.

Referências:

Confusões em cada um de seus modelos de confiabilidade, modelos de processamento e tolerância a falhas e desempenho? Leia !

  • Tempestade Apache vs. Spark Streaming
  • Storm and Spark no Yahoo: Por que escolher um sobre o outro

Ainda confuso? Isso pode ajudá-lo bastante.

  • Página em msrg.utoronto.ca

Isso pode ser demais, mas mostra como criar um sistema de processamento de fluxo

  • Página no brown.edu

Apache Storm

opera com dados em movimento (fluxo contínuo de dados). A natureza em tempo real se deve à sua capacidade de operar com dados de streaming (dados que fluem através de um conjunto de consultas).

Apache Spark

opera com dados em repouso. Sua natureza em tempo real se deve à sua capacidade de executar cálculos em dados (RDD) em tempo real; ainda são cálculos em lotes como o Hadoop.

Spark Streaming

no entanto, combina tanto onde ele trata os cálculos de fluxo contínuo como uma série de cálculos em lotes determinísticos em pequenos intervalos de tempo. [1]

[1]

Spark Streaming - berkeley.edu