Fagulha Apache vs Tempestade Apache
A necessidade de transmissão de dados em tempo real está crescendo exponencialmente devido ao aumento de dados em tempo real. Com as tecnologias de streaming liderando o mundo dos Grandes Dados, pode ser difícil para os usuários escolher a plataforma apropriada de streaming em tempo real. Duas das tecnologias em tempo real mais populares que podem ser consideradas para optar são Apache Spark e Apache Storm.
Uma das principais diferenças entre as estruturas Spark e Storm é que Spark executa cálculos Data-Parallel, enquanto Storm ocupa cálculos Tarefa-Parallel
Apache Spark
Apache Spark é uma estrutura tecnológica de computação em cluster, de uso geral e rápida iluminação, usada para computação rápida em processamento de dados em larga escala. Ele pode gerenciar análises em lote e em tempo real e cargas de trabalho de processamento de dados.
Apache Storm
Apache Storm é um sistema de computação de código aberto, tolerante a falhas escalável e de processamento de fluxo em tempo real. É uma estrutura para processamento de dados distribuídos em tempo real, que se concentra no processamento de streaming ou processamento de eventos. Ele pode ser usado com qualquer linguagem de programação e pode ser integrado usando qualquer fila ou tecnologia de banco de dados.
Diferenças entre Spark e Storm
- Modelo de processamento: Apache spark fornece processamento em lote enquanto tempestade fornece processamento em micro lotes
- Linguagem de programação: Apache spark Suporta linguagens menores como Java, Scala enquanto Storm por outro lado Suporta múltiplas linguagens, tais como Scala, Java, Clojure.
- Stream Sources: Apache usa HDFS enquanto o Apache Storm usa spout.
- Messaging: Apache apark usa Akka, Netty enquanto Apache storm usa ZeroMQ, Netty
- Gestão de Recursos: Para Apache spark Yarn e Meson são responsáveis enquanto que para Apache storm Yarn e Mesos são responsáveis.
- Latency: Maior latência em comparação com o Apache Spark enquanto que o Apache Storm fornece melhor baixa latência com menores restrições
- Stream Primitives: Apache Spark usa DStream enquanto Apache Storm usa Tuple, Partition
- Custo de desenvolvimento: Apache spark usa o mesmo código para processamento batch e stream enquanto no Apache Storm o mesmo código não pode ser usado.
- Persistência: Apache spark usa por RDD enquanto Apache storm usa MapState
- Tolerância a falhas: No Apache spark ele lida com a reinicialização de trabalhadores via gerenciador de recursos que pode ser YARN, Mesos ou seu gerenciador stand alone enquanto no Apache storm se o processo falhar o processo supervisor irá reiniciá-lo automaticamente conforme o gerenciamento do estado é tratado através do zookeeper
- Provisionamento: O Apache spark suporta monitoração básica utilizando Ganglia enquanto o Apache storm utiliza Apache Ambari
- Throughput: Apache spark serve 100k registros por nó por segundo enquanto Apache storm serve 10k registros por nó por segundo.
- State Management: A mudança e manutenção do estado no Apache Spark pode ser atualizada via UpdateStateByKey, mas nenhuma estratégia plugável pode ser aplicada no sistema externo para a implementação do estado. Considerando que Storm não fornece qualquer estrutura para o armazenamento de qualquer saída de parafuso interveniente como um estado. Portanto, cada aplicação tem que criar um estado para si mesma sempre que necessário.
- Especialidade: Apache spark usa processamento unificado (batch, SQL etc.) enquanto Apache storm usa RPC distribuído
Apache Storm e Apache Spark são grandes soluções que resolvem o problema de ingestão e transformação de streaming.
Leia mais… http://entradasoft.com/blogs/apache-spark-vs-apache-storm