SlideShare uma empresa Scribd logo
Hadoop MapReduce and Apache Spark:
Comparing Performance for Distributed
Workloads
Felipe Almeida (falmeida1988@gmail.com)
Rosângela Oliveira (rosangelaoliveira4@yahoo.com.br)
Bancos de Dados não Convencionais 2015/02
Prof. Alexandre Assis
Estrutura
● Motivação
● Ambiente
● Trabalho Preliminar
● Dados utilizados
● Pré-processamento
● Experimentos
● Experimento 1
● Experimento 2
● Conclusões
● Lições aprendidas 2
Motivação
Comparar Hadoop MapReduce e Spark em tarefas
distribuídas, em especial workloads iterativos.
1ª tarefa: Wordcount distribuído
2ª tarefa: Clusterização K-means (ingênua)
3
Ambiente
Os experimentos foram executados em instâncias EC2
do tipo m3.xlarge com:
● 4 processadores
● 15GB RAM
● 80GB de SSD storage.
4
Ambiente
Configuração de cada nó Hadoop
5
YARN_RESOURCEMANAGER_HEAPSIZE 2396
YARN_PROXYSERVER_HEAPSIZE 2396
YARN_NODEMANAGER_HEAPSIZE 2048
HADOOP_JOB_HISTORYSERVER_HEAPSIZE 2396
HADOOP_NAMENODE_HEAPSIZE 1740
HADOOP_DATANODE_HEAPSIZE 757
mapreduce.map.java.opts -Xmx1152m
mapreduce.reduce.java.opts -Xmx2304m
mapreduce.map.memory.mb 1440
mapreduce.reduce.memory.mb 2880
Ambiente
Configuração de cada nó Spark (Setup 1)
Configuração de cada nó Spark (Setup 2)
A configuração com a alocação dinâmica habilitada só é possivel no Yarn.
6
spark.dynamicAllocation.enabled true
--num-executors 2
spark.executor.cores 1
spark.executor.memory 4096
spark.dynamicAllocation.enabled false
Trabalho Preliminar
Dois datasets foram utilizados com o objetivo de
fixar o entendimento do ambiente Hadoop e Spark.
● Text 8: dataset de +- 100Mb, utilizado para
executar o Wordcount local.
● Billion word - dataset de +- 4Gb, utilizado para
executar o Wordcount local e no ambiente EMR da
Amazon.
7
Dados utilizados: Wordcount
Na fase 1 foi utilizado um dataset composto por:
● Informações de pesquisas efetuadas na internet;
● 408 arquivos.txt;
● Tamanho total de 18Gb.
8
Estrutura das Linhas
Dados Utilizados: K-means
Dataset de avalização de produtos vendidos na Amazon.
Originado na UCSD; o dataset é composto por:
● Tamanho total de 60Gb+ (nós usamos 15Gb)
● Total de 24 categorias de produtos (usamos 1 - livros)
● Formato Json
● Abrangendo o período de maio 1996 - julho 2014.
9
Exemplo de uma
review
Pré-processamento
Normalização e limpeza no dataset das reviews da
Amazon, com o objetivo de:
● Obter features das avaliações
● Agrupar características consideradas relevantes
● Adequar os dados para o K-means
● Featurização
● Normalização
Foi usado SparkSQL para a limpeza e formatação dos
dados.
10
Pré-processamento
Features númericas selecionadas:
1. Média da avaliação
2. Tamanho do texto da avalição
3. Número de “estrelas” dado
4. Review feita em dia útil
5. Review feita em fim de semana
6. Review feita durante o dia
7. Review feita durante a noite
11
Pré-processamento
Usamos também o Spark para o pré-processamento:
12
Cria um novo DataFrame com os
dados pré-tratados
Experimentos
Os experimentos foram feitos com o intuito de
comparar o Hadoop MapReduce com o Spark no que
tange à performance e na capacidade de lidar com
grande volume de dados.
Foi usado Amazon EMR para ajudar na reprodutibilida-
de e para facilitar o desenvolvimento dos programas.
13
Experimentos
r
14
Script para criar um cluster na Amazon EMR Interface da Amazon EMR
Experimento 1
15
Execução do Wordcount Distribuido - UMBC DATASET 18Gb
Experimento 1
Ao utilizar a opção Dynamic Allocation do spark, o mesmo
demonstrou uma melhora significativa de desempenho:
16
Experimento 1
17
Experimento 2
O K-means pode ser distribuído da seguinte forma:
Em cada iteração, cada nó pega as suas amostras e os
centros dos clusters atuais para decidir a que cluster cada
amostra pertence. (mapper)
Feito isso, os reducers pegam os centros dos clusters e as
respectivas amostras e calculam novos centros para os
clusters.
18
Experimento 2
19
Experimento 2
20
Conclusões
Em geral, mais nós apresentaram um ganho grande em perfor-
mance, como era esperado.
O Spark tem, em geral, performance superior ao Hadoop, sobre-
tudo em tarefas iterativas, mas também em tarefas de poucas
passadas (como o WordCount).
Utilizar uma configuração com mais nós pode, a partir de um
determinado momento, não causar muita melhora, principalmen-
te quando se analisa o custo-benefício.
21
Conclusões
O algoritmo K-means convergiu relativamente rápido;
● Em geral, menos de 10 iterações
22
Lições Aprendidas
● Configurações podem fazer muita diferença.
● Se o seu projeto usa outras bibliotecas, precisa colocar
todas dentro do Jar que você manda para o cluster.
● Usamos sbt-assembly para montar os Jars do Spark e do
Hadoop
● As versões adequadas devem ser utilizadas a fim de
evitar quebra de pacote.
23
Lições Aprendidas
● Em vez de baixar arquivos grandes para a sua máquina
e fazer upload para o S3, é melhor criar uma outra
máquina EC2, baixar o arquivo nessa máquina e fazer o
upload de lá pois, se os dois estiverem na mesma área
AWS, a transferência é muito mais rápida.
● Testes locais devem ser feitos com pelo menos duas
threads, pois há muitos erros que só aparecem quando
há mais de um nó.
24
Lições Aprendidas
● UDFs (User-defined Functions) são formas ótimas de se
ir incrementando um DataFrame e podem ser usadas
para vários fins:
● Extração de features derivadas
● Adição de dados
● Normalização
● etc.
25
Referências
O código utilizado em todas as etapas está em https:
//github.com/queirozfcom/hadoop_spark_ml_comparison
26

Mais conteúdo relacionado

Mais procurados (20)

PDF
[Webinar] Performance e otimização de banco de dados MySQL
KingHost - Hospedagem de sites
 
PPTX
Deep dive de Amazon Redshift
Amazon Web Services LATAM
 
PDF
Arquiteturas, Tecnologias e Desafios para Análise de BigData
Sandro Andrade
 
PDF
Desenvolvendo Aplicações baseadas em Big Data com PySpark
Vinícius Barros
 
PPTX
Deep dive de Amazon DynamoDB
Amazon Web Services LATAM
 
PPT
CouchDB Presentation
Bianca Caruso da Paixão
 
PDF
Funcionalidades das versões 9.x do PostgreSQL
Matheus Espanhol
 
PPTX
Machine learning com Apache Spark
Sandys Nunes
 
PPTX
Aplicando o poder de uma GPU no SQL Server
pichiliani
 
PDF
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
Eiti Kimura
 
PPTX
Aplicando processamento paralelo em instruções SQL
pichiliani
 
PDF
Apache CouchDB
Hugo Souza
 
PPTX
Entendendo o paralelismo no SQL Server
Luciano Moreira
 
PPTX
Quais são as opções de banco de dados gerenciados na AWS?
Amazon Web Services LATAM
 
PPTX
AWS Redshift Primer
Mateus Aubin
 
PDF
Filesystem distribuído com hadoop!!!
Alessandro Binhara
 
PDF
NoSQL: Uma análise crítica
pichiliani
 
PDF
Um Mecanismo de Auto Elasticidade com base no Tempo de Resposta para Ambiente...
EUBrasilCloudFORUM .
 
PDF
[TDC2016] Apache Cassandra Estratégias de Modelagem de Dados
Eiti Kimura
 
PDF
Artigo couchdb
Filipe Silvestrim
 
[Webinar] Performance e otimização de banco de dados MySQL
KingHost - Hospedagem de sites
 
Deep dive de Amazon Redshift
Amazon Web Services LATAM
 
Arquiteturas, Tecnologias e Desafios para Análise de BigData
Sandro Andrade
 
Desenvolvendo Aplicações baseadas em Big Data com PySpark
Vinícius Barros
 
Deep dive de Amazon DynamoDB
Amazon Web Services LATAM
 
CouchDB Presentation
Bianca Caruso da Paixão
 
Funcionalidades das versões 9.x do PostgreSQL
Matheus Espanhol
 
Machine learning com Apache Spark
Sandys Nunes
 
Aplicando o poder de uma GPU no SQL Server
pichiliani
 
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
Eiti Kimura
 
Aplicando processamento paralelo em instruções SQL
pichiliani
 
Apache CouchDB
Hugo Souza
 
Entendendo o paralelismo no SQL Server
Luciano Moreira
 
Quais são as opções de banco de dados gerenciados na AWS?
Amazon Web Services LATAM
 
AWS Redshift Primer
Mateus Aubin
 
Filesystem distribuído com hadoop!!!
Alessandro Binhara
 
NoSQL: Uma análise crítica
pichiliani
 
Um Mecanismo de Auto Elasticidade com base no Tempo de Resposta para Ambiente...
EUBrasilCloudFORUM .
 
[TDC2016] Apache Cassandra Estratégias de Modelagem de Dados
Eiti Kimura
 
Artigo couchdb
Filipe Silvestrim
 

Semelhante a Hadoop MapReduce and Apache Spark on EMR: comparing performance for distributed workloads (1) (20)

ODP
Bigdata na pratica: Resolvendo problemas de performance com hadoop
tdc-globalcode
 
PPTX
Big Data
Suzana Viana Mota
 
PDF
Treinamento hadoop - dia4
Alexandre Uehara
 
PDF
Bigdata - compreendendo Hadoop e seu ecossistema.
Natalia Raythz
 
PDF
Dissertação google inc act on general strike suzart Attain to cpf 051 812 95...
Sandro Santana
 
PDF
Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...
Denodo
 
PDF
Hadoop - Primeiros passos
Sensedia
 
ODP
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Marcio Junior Vieira
 
PDF
Data Lakes com Hadoop e Spark: Agile Analytics na prática
Ricardo Wendell Rodrigues da Silveira
 
PDF
Qcon Rio 2015 - Data Lakes Workshop
João Paulo Leonidas Fernandes Dias da Silva
 
PDF
Cientista de Dados – Dominando o Big Data com Software Livre
Ambiente Livre
 
PDF
Federal University of Santa Catarina (UFSC) - PySpark Tutorial
Luiz Henrique Zambom Santana
 
PPTX
Hadoop - Mãos à massa! Qcon2014
Thiago Santiago
 
PDF
Big Data - O que é o hadoop, map reduce, hdfs e hive
Flavio Fonte, PMP, ITIL
 
PPTX
Big data e ecossistema hadoop
FaBIana Ravanêda Vercezes
 
PPTX
Webinar: Amazon Machine Learning
Amazon Web Services LATAM
 
PDF
PostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
Ambiente Livre
 
PDF
Big Data Open Source com Hadoop
Ambiente Livre
 
PPTX
Proposta de arquitetura Hadoop
Adriano Rodrigo Guerreiro Laranjeira
 
PDF
Processamento em Big Data
Luiz Henrique Zambom Santana
 
Bigdata na pratica: Resolvendo problemas de performance com hadoop
tdc-globalcode
 
Treinamento hadoop - dia4
Alexandre Uehara
 
Bigdata - compreendendo Hadoop e seu ecossistema.
Natalia Raythz
 
Dissertação google inc act on general strike suzart Attain to cpf 051 812 95...
Sandro Santana
 
Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...
Denodo
 
Hadoop - Primeiros passos
Sensedia
 
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Marcio Junior Vieira
 
Data Lakes com Hadoop e Spark: Agile Analytics na prática
Ricardo Wendell Rodrigues da Silveira
 
Qcon Rio 2015 - Data Lakes Workshop
João Paulo Leonidas Fernandes Dias da Silva
 
Cientista de Dados – Dominando o Big Data com Software Livre
Ambiente Livre
 
Federal University of Santa Catarina (UFSC) - PySpark Tutorial
Luiz Henrique Zambom Santana
 
Hadoop - Mãos à massa! Qcon2014
Thiago Santiago
 
Big Data - O que é o hadoop, map reduce, hdfs e hive
Flavio Fonte, PMP, ITIL
 
Big data e ecossistema hadoop
FaBIana Ravanêda Vercezes
 
Webinar: Amazon Machine Learning
Amazon Web Services LATAM
 
PostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
Ambiente Livre
 
Big Data Open Source com Hadoop
Ambiente Livre
 
Proposta de arquitetura Hadoop
Adriano Rodrigo Guerreiro Laranjeira
 
Processamento em Big Data
Luiz Henrique Zambom Santana
 
Anúncio

Mais de Felipe (17)

PDF
Aula rotulação automática - Automatic tagging
Felipe
 
PDF
First steps with Keras 2: A tutorial with Examples
Felipe
 
PDF
Word embeddings introdução, motivação e exemplos
Felipe
 
PDF
Cloud Certifications - Overview
Felipe
 
PDF
Elasticsearch for Data Analytics
Felipe
 
PDF
Cloudwatch: Monitoring your Services with Metrics and Alarms
Felipe
 
PDF
Cloudwatch: Monitoring your AWS services with Metrics and Alarms
Felipe
 
PDF
Online Machine Learning: introduction and examples
Felipe
 
PDF
Aws cost optimization: lessons learned, strategies, tips and tools
Felipe
 
PDF
Boas práticas no desenvolvimento de software
Felipe
 
PDF
Rachinations
Felipe
 
PDF
Ausgewählte preußische Tugenden
Felipe
 
PDF
Short intro to scala and the play framework
Felipe
 
PDF
Conceitos e exemplos em versionamento de código
Felipe
 
PDF
DevOps Series: Extending vagrant with Puppet for configuration management
Felipe
 
PDF
DevOps Series: Defining and Sharing Testable Machine Configurations with vagrant
Felipe
 
PDF
D3.js 30-minute intro
Felipe
 
Aula rotulação automática - Automatic tagging
Felipe
 
First steps with Keras 2: A tutorial with Examples
Felipe
 
Word embeddings introdução, motivação e exemplos
Felipe
 
Cloud Certifications - Overview
Felipe
 
Elasticsearch for Data Analytics
Felipe
 
Cloudwatch: Monitoring your Services with Metrics and Alarms
Felipe
 
Cloudwatch: Monitoring your AWS services with Metrics and Alarms
Felipe
 
Online Machine Learning: introduction and examples
Felipe
 
Aws cost optimization: lessons learned, strategies, tips and tools
Felipe
 
Boas práticas no desenvolvimento de software
Felipe
 
Rachinations
Felipe
 
Ausgewählte preußische Tugenden
Felipe
 
Short intro to scala and the play framework
Felipe
 
Conceitos e exemplos em versionamento de código
Felipe
 
DevOps Series: Extending vagrant with Puppet for configuration management
Felipe
 
DevOps Series: Defining and Sharing Testable Machine Configurations with vagrant
Felipe
 
D3.js 30-minute intro
Felipe
 
Anúncio

Último (6)

PPTX
Windows 11 Apostila do Básico ao Avançado
deividcosimo1
 
PDF
Estudos DAC - projeto de arquitetura futurista
ra189223
 
DOCX
150 PMBOK 7 Scenario-Based PMP Exam Questions and Answers.docx
Marcelo Cruz
 
PDF
Aulas Extras - O que é e por que Aprender e Utilizar.pdf
fmartinsss
 
PPTX
5 Critérios para seleção do objeto de estudo.pptx
Eduardo Corrêa
 
PDF
Ceritificado Imersão SOC HackOne Sab/Dom.pdf
RodrigoMori7
 
Windows 11 Apostila do Básico ao Avançado
deividcosimo1
 
Estudos DAC - projeto de arquitetura futurista
ra189223
 
150 PMBOK 7 Scenario-Based PMP Exam Questions and Answers.docx
Marcelo Cruz
 
Aulas Extras - O que é e por que Aprender e Utilizar.pdf
fmartinsss
 
5 Critérios para seleção do objeto de estudo.pptx
Eduardo Corrêa
 
Ceritificado Imersão SOC HackOne Sab/Dom.pdf
RodrigoMori7
 

Hadoop MapReduce and Apache Spark on EMR: comparing performance for distributed workloads (1)

  • 1. Hadoop MapReduce and Apache Spark: Comparing Performance for Distributed Workloads Felipe Almeida ([email protected]) Rosângela Oliveira ([email protected]) Bancos de Dados não Convencionais 2015/02 Prof. Alexandre Assis
  • 2. Estrutura ● Motivação ● Ambiente ● Trabalho Preliminar ● Dados utilizados ● Pré-processamento ● Experimentos ● Experimento 1 ● Experimento 2 ● Conclusões ● Lições aprendidas 2
  • 3. Motivação Comparar Hadoop MapReduce e Spark em tarefas distribuídas, em especial workloads iterativos. 1ª tarefa: Wordcount distribuído 2ª tarefa: Clusterização K-means (ingênua) 3
  • 4. Ambiente Os experimentos foram executados em instâncias EC2 do tipo m3.xlarge com: ● 4 processadores ● 15GB RAM ● 80GB de SSD storage. 4
  • 5. Ambiente Configuração de cada nó Hadoop 5 YARN_RESOURCEMANAGER_HEAPSIZE 2396 YARN_PROXYSERVER_HEAPSIZE 2396 YARN_NODEMANAGER_HEAPSIZE 2048 HADOOP_JOB_HISTORYSERVER_HEAPSIZE 2396 HADOOP_NAMENODE_HEAPSIZE 1740 HADOOP_DATANODE_HEAPSIZE 757 mapreduce.map.java.opts -Xmx1152m mapreduce.reduce.java.opts -Xmx2304m mapreduce.map.memory.mb 1440 mapreduce.reduce.memory.mb 2880
  • 6. Ambiente Configuração de cada nó Spark (Setup 1) Configuração de cada nó Spark (Setup 2) A configuração com a alocação dinâmica habilitada só é possivel no Yarn. 6 spark.dynamicAllocation.enabled true --num-executors 2 spark.executor.cores 1 spark.executor.memory 4096 spark.dynamicAllocation.enabled false
  • 7. Trabalho Preliminar Dois datasets foram utilizados com o objetivo de fixar o entendimento do ambiente Hadoop e Spark. ● Text 8: dataset de +- 100Mb, utilizado para executar o Wordcount local. ● Billion word - dataset de +- 4Gb, utilizado para executar o Wordcount local e no ambiente EMR da Amazon. 7
  • 8. Dados utilizados: Wordcount Na fase 1 foi utilizado um dataset composto por: ● Informações de pesquisas efetuadas na internet; ● 408 arquivos.txt; ● Tamanho total de 18Gb. 8 Estrutura das Linhas
  • 9. Dados Utilizados: K-means Dataset de avalização de produtos vendidos na Amazon. Originado na UCSD; o dataset é composto por: ● Tamanho total de 60Gb+ (nós usamos 15Gb) ● Total de 24 categorias de produtos (usamos 1 - livros) ● Formato Json ● Abrangendo o período de maio 1996 - julho 2014. 9 Exemplo de uma review
  • 10. Pré-processamento Normalização e limpeza no dataset das reviews da Amazon, com o objetivo de: ● Obter features das avaliações ● Agrupar características consideradas relevantes ● Adequar os dados para o K-means ● Featurização ● Normalização Foi usado SparkSQL para a limpeza e formatação dos dados. 10
  • 11. Pré-processamento Features númericas selecionadas: 1. Média da avaliação 2. Tamanho do texto da avalição 3. Número de “estrelas” dado 4. Review feita em dia útil 5. Review feita em fim de semana 6. Review feita durante o dia 7. Review feita durante a noite 11
  • 12. Pré-processamento Usamos também o Spark para o pré-processamento: 12 Cria um novo DataFrame com os dados pré-tratados
  • 13. Experimentos Os experimentos foram feitos com o intuito de comparar o Hadoop MapReduce com o Spark no que tange à performance e na capacidade de lidar com grande volume de dados. Foi usado Amazon EMR para ajudar na reprodutibilida- de e para facilitar o desenvolvimento dos programas. 13
  • 14. Experimentos r 14 Script para criar um cluster na Amazon EMR Interface da Amazon EMR
  • 15. Experimento 1 15 Execução do Wordcount Distribuido - UMBC DATASET 18Gb
  • 16. Experimento 1 Ao utilizar a opção Dynamic Allocation do spark, o mesmo demonstrou uma melhora significativa de desempenho: 16
  • 18. Experimento 2 O K-means pode ser distribuído da seguinte forma: Em cada iteração, cada nó pega as suas amostras e os centros dos clusters atuais para decidir a que cluster cada amostra pertence. (mapper) Feito isso, os reducers pegam os centros dos clusters e as respectivas amostras e calculam novos centros para os clusters. 18
  • 21. Conclusões Em geral, mais nós apresentaram um ganho grande em perfor- mance, como era esperado. O Spark tem, em geral, performance superior ao Hadoop, sobre- tudo em tarefas iterativas, mas também em tarefas de poucas passadas (como o WordCount). Utilizar uma configuração com mais nós pode, a partir de um determinado momento, não causar muita melhora, principalmen- te quando se analisa o custo-benefício. 21
  • 22. Conclusões O algoritmo K-means convergiu relativamente rápido; ● Em geral, menos de 10 iterações 22
  • 23. Lições Aprendidas ● Configurações podem fazer muita diferença. ● Se o seu projeto usa outras bibliotecas, precisa colocar todas dentro do Jar que você manda para o cluster. ● Usamos sbt-assembly para montar os Jars do Spark e do Hadoop ● As versões adequadas devem ser utilizadas a fim de evitar quebra de pacote. 23
  • 24. Lições Aprendidas ● Em vez de baixar arquivos grandes para a sua máquina e fazer upload para o S3, é melhor criar uma outra máquina EC2, baixar o arquivo nessa máquina e fazer o upload de lá pois, se os dois estiverem na mesma área AWS, a transferência é muito mais rápida. ● Testes locais devem ser feitos com pelo menos duas threads, pois há muitos erros que só aparecem quando há mais de um nó. 24
  • 25. Lições Aprendidas ● UDFs (User-defined Functions) são formas ótimas de se ir incrementando um DataFrame e podem ser usadas para vários fins: ● Extração de features derivadas ● Adição de dados ● Normalização ● etc. 25
  • 26. Referências O código utilizado em todas as etapas está em https: //github.com/queirozfcom/hadoop_spark_ml_comparison 26