Quais são as diferenças e semelhanças entre o spark e o hadoop mapreduce?

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

  • Como faz parte do Apache Open Source, não há custo de software.
  • O custo do hardware é menor no MapReduce, pois ele trabalha com memória menor (RAM) em comparação com o Spark. Até o hardware básico é suficiente.

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

  • O Spark também é Apache Open Source, portanto, sem custo de licença.
  • O custo do hardware é mais do que o MapReduce, pois, embora o Spark possa trabalhar em hardware comum, ele precisa de muito mais memória (RAM) em comparação com o MapReduce, pois deve ser capaz de ajustar todos os dados na memória para obter o desempenho ideal. O cluster precisa de pouco hardware de última geração com muita RAM, caso contrário o desempenho é prejudicado

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

  • Mapa
  • Reduzir

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