MapReduce
1. Velocidade / Desempenho
O MapReduce foi desenvolvido para processamento em lote e não é tão rápido quanto o Spark. É usado para coletar dados de várias fontes e processá-los uma vez e armazenar em um armazenamento de dados distribuído como o HDFS. É mais adequado quando a memória é limitada e o tamanho dos dados de processamento é tão grande que não caberia na memória disponível.
2. Custo
3. Facilidade de uso
MapReduce é um pouco complexo para escrever. O MapReduce é escrito em Java e as APIs são um pouco complexas para codificar para novos programadores, portanto, há uma grande curva de aprendizado envolvida. O Pig possui SQL como sintaxe e é mais fácil para os desenvolvedores de SQL integrarem-se facilmente. Além disso, não há modo interativo disponível no MapReduce
4. Compatibilidade
O MapReduce também é compatível com todas as fontes de dados e formatos de arquivo que o Hadoop suporta. Mas o MapReduce precisa de outro Agendador como o YARN ou o Mesos para executar, ele não possui nenhum Agendador embutido como o agendador padrão / autônomo do Spark.
5. Processamento de Dados
O MapReduce pode ser usado apenas para processamento em lote, onde a taxa de transferência é mais importante e a latência pode ser comprometida.
6. Segurança
O MapReduce possui mais recursos de segurança. O MapReduce pode aproveitar todos os benefícios de segurança do Hadoop e integrar-se aos projetos de segurança do Hadoop, como Knox Gateway e Sentry.
7. Tolerância a falhas
O MapReduce usa replicação para tolerância a falhas. Se algum daemon escravo falhar, os daemons principais reagendam todas as operações pendentes e em andamento para outro escravo. Esse método é eficaz, mas pode aumentar significativamente os tempos de conclusão de operações com uma única falha
8. Latência
O MapReduce possui alta latência
9. Modo Interativo
O MapReduce não possui nenhum modo interativo de operação.
10. Aprendizado de Máquina / Processamento de Gráficos
Não há suporte para isso. Um mahout deve ser usado para ML
Apache Spark
1. Velocidade / Desempenho
O Spark é 10 a 100 vezes mais rápido devido ao processamento na memória e seu mecanismo de armazenamento em cache. Ele pode fornecer análises quase em tempo real. É usado no processamento de cartão de crédito, detecção de fraudes, aprendizado de máquina e análise de dados, sensores de IoT etc.
2. Custo
3. Facilidade de uso
O Spark possui APIs em Scala, Java, Python, R para todas as transformações e ações básicas. Ele também possui APIs Spark SQL ricas para desenvolvedores experientes em SQL e abrange a maioria das funções SQL e está adicionando mais funções a cada nova versão. Além disso, o Spark tem escopo para escrever Funções e Funções Analíticas Definidas pelo Usuário (UDF / UDAF) para qualquer pessoa que queira ter funções personalizadas.
4. Compatibilidade
O Apache Spark pode no modo autônomo usando o planejador padrão. Também pode ser executado no YARN ou no Mesos. Pode ser executado no local ou na nuvem. O Spark suporta a maioria dos formatos de dados como parquet, Avro, ORC, JSON etc. Ele também suporta vários idiomas e possui APIs para Java, Scala, Python, R.
5. Processamento de Dados
O Spark suporta processamento em lote e fluxo, portanto, se encaixa nos dois casos de uso e pode ser usado para o projeto Lambda, onde os aplicativos precisam da camada Speed e da camada mais lenta / camada de processamento de dados.
6. Segurança
O Spark está um pouco vazio no momento. O Spark atualmente suporta autenticação por meio de um segredo compartilhado. O Spark pode se integrar ao HDFS e pode usar ACLs do HDFS e permissões no nível do arquivo. O Spark também pode ser executado no YARN, aproveitando a capacidade do Kerberos.
7. Tolerância a falhas
No Spark, os RDDs são os blocos de construção e o Spark também os usa RDDs e DAG para tolerância a falhas. Se um RDD for perdido, ele será recalculado automaticamente usando as transformações originais.
8. Latência
O Spark fornece desempenho de baixa latência
9. Modo Interativo
O Spark pode ser usado interativamente também para processamento de dados. Possui suporte pronto para uso para o shell shell para scala / python / R.
10. Aprendizado de Máquina / Processamento de Gráficos
O Spark possui módulos dedicados para processamento de ML e Graph
Para artigo detalhado
Clique aqui
Velocidade de processamento:
O MapReduce processa dados muito mais lentamente que o spark.
O Spark processa 100 vezes mais rápido que o MapReduce, por ser um sistema de processamento na memória.
Processamento de Stream
:
O MapReduce não suporta.
O Spark usa micro-lotes para todas as cargas de trabalho de streaming.
Custo:
O MapReduce normalmente pode ser executado em hardware mais barato, pois não armazena tudo na memória.
O Spark exige muito que a RAM seja executada na memória, aumentando-a em cluster e aumentando seu custo.
Atuação:
MarpReduce chuveiro do que faísca.
Acenda mais rápido que o MapReduce.
Suporte SQL:
O MapReduce permite que os usuários executem consultas sql usando o Apache Hive e o Impala.
O Spark permite que os usuários executem consultas sql usando o SparkSQL, que está totalmente integrado ao spark core.
Armazenamento em cache:
O MapReduce não pode capturar os dados na memória para requisitos futuros.
Lata de faísca.
Exigência de hardware:
O MapReduce pode funcionar muito bem em hardware comum.
O Spark precisa de hardware de médio a alto nível.
Aprendizado de Máquina:
O MapReduce permite o aprendizado de máquina usando o Apache Mahout.
O Spark tem seu próprio conjunto de aprendizado de máquina chamado MLib.
Processamento de gráficos:
O MapReduce não suporta.
O Spark pode lidar com o processamento de gráficos usando o GraphX.
Agendador:
O MapReduce precisa de um agendador externo como o Apache Ozzie para agendar fluxos complexos.
Devido ao cálculo na memória, o spark possui seu próprio planejador de fluxo.
Gerenciamento de memória:
O MapReduce fornece gerenciamento de memória configurável. O administrador pode configurá-lo usando arquivos de configuração.
Com a versão mais recente do Spark 1.6, ele passou para o gerenciamento automático de memória.
Tolerância falsa:
O MapReduce é altamente tolerante a falut, não há necessidade de reiniciar um aplicativo do zero em caso de falha.
O streaming Spark recupera o último trabalho e oferece exatamente uma semântica pronta para uso, sem código ou configuração extra.
Obrigado.
Antes de comparar essas duas tecnologias, vamos fazer uma breve introdução sobre essas tecnologias.
Começando com o Apache Hadoop MapReduce.
Apache Hadoop MapReduce
MapReduce é a camada de processamento do Hadoop. O MapReduce é um modelo de programação projetado para processar grandes volumes de dados em paralelo, dividindo o trabalho em um conjunto de tarefas independentes.
Os programas MapReduce são escritos em um estilo específico, influenciado por construções de programação funcional, idiomas específicos para o processamento de listas de dados.
MapReduce - Entendimento de alto nível
O Map-Reduce divide o trabalho em pequenas partes, cada uma das quais pode ser feita em paralelo no cluster de servidores. Um problema é dividido em um grande número de problemas menores, cada um dos quais é processado independentemente para fornecer resultados individuais. Essas saídas individuais são processadas posteriormente para fornecer a saída final.
O Hadoop Map-Reduce é altamente escalável e pode ser usado em muitos computadores. Muitas máquinas pequenas podem ser usadas para processar tarefas que normalmente não podiam ser processadas por uma máquina grande.
Terminologias MapReduce
Map-Reduce é o componente de processamento de dados do Hadoop. Conceitualmente, os programas Map-Reduce transformam listas de elementos de dados de entrada em listas de elementos de dados de saída. Um programa Map-Reduce fará isso duas vezes, usando dois idiomas diferentes de processamento de lista
Acesse este link para obter as terminologias básicas usadas no Map Reduce:
Terminologias no MapReduce
Veja este vídeo tutorial do MapReduce:
Agora Apache Spark.
Apache Spark
O Apache Spark é um sistema de computação de cluster de código aberto que fornece API de alto nível em Java, Scala, Python e R. Ele pode acessar dados do HDFS, Cassandra, HBase, Hive, Tachyon e qualquer fonte de dados Hadoop. E execute no gerenciador de cluster Standalone, YARN e Mesos.
O Spark é escrito em Scala, mas fornece APIs ricas em Scala, Java, Python e R.
Acesse este link para um estudo detalhado do Apache Spark: Apache Spark:
Um Guia Introdutório
Veja este vídeo tutorial do Apache Spark:
Agora, avançando em direção à comparação entre o Hadoop MapReduce e o Apache Spark:
Rapidez
Apache Spark
- Spark é uma ferramenta de computação em cluster extremamente rápida. O Apache Spark executa aplicativos até 100x mais rápidos na memória e 10x mais rápidos no disco que o Hadoop. Devido à redução do número de ciclos de leitura / gravação no disco e ao armazenamento de dados intermediários na memória, o Spark torna isso possível.
Hadoop MapReduce
- O MapReduce lê e grava no disco, como resultado, diminui a velocidade do processamento.
Dificuldade
Apache Spark
- O Spark é fácil de programar, pois possui muitos operadores de alto nível com o RDD - Conjunto de dados distribuídos resilientes.
Hadoop MapReduce
- No MapReduce, os desenvolvedores precisam codificar manualmente cada operação, o que dificulta o trabalho.
Análise em tempo real
Apache Spark
- Ele pode processar dados em tempo real, ou seja, dados provenientes de fluxos de eventos em tempo real à taxa de milhões de eventos por segundo, por exemplo, dados do Twitter, por exemplo, ou compartilhamento / publicação no Facebook. A força do Spark é a capacidade de processar transmissões ao vivo com eficiência.
Hadoop MapReduce
- O MapReduce falha quando se trata de processamento de dados em tempo real, pois foi projetado para executar o processamento em lote em quantidades volumosas de dados.
latência
Apache Spark
- O Spark fornece computação de baixa latência.
Hadoop MapReduce
- MapReduce é uma estrutura de computação de alta latência.
Modo interativo
Apache Spark
- O Spark pode processar dados interativamente.
Hadoop MapReduce
- MapReduce não tem um modo interativo.
Acesse este link para mais pontos de comparação:
Apache Spark vs Hadoop MapReduce
Algumas das principais diferenças entre o Apache Spark e o Hadoop MapReduce são as seguintes:
EU.
Rapidez
: O Apache Spark é 10 a 100 vezes mais rápido que o Hadoop, devido ao uso no processamento de memória.
II
Memória
: O Apache Spark armazena dados na memória, enquanto o Hadoop MapReduce armazena dados no disco rígido.
III
RDD
: O Spark usa o conjunto de dados distribuídos resilientes (RDD) que garante tolerância a falhas. Onde o Apache Hadoop usa replicação de dados em várias cópias para obter tolerância a falhas.
IV
Transmissão
: O Apache Spark suporta Streaming com muito menos administração. Isso facilita muito o uso do Hadoop para processamento de fluxo em tempo real.
V.
API
: O Spark fornece uma API versátil que pode ser usada com várias fontes de dados e idiomas. É mais extensível que a API fornecida pelo Apache Hadoop.
Espero que ajude.
Siga-me em
Gautam Gupta
para saber mais sobre o Apache Spark.
Referência:
Curso de preparação para perguntas da entrevista do Apache Spark