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
Anúncio

Mais conteúdo relacionado

Mais procurados (20)

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

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

Curso de Performance and Tuning - Linux
Curso de Performance and Tuning - LinuxCurso de Performance and Tuning - Linux
Curso de Performance and Tuning - Linux
Dell Technologies
 
Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionais
Roberto Oliveira
 
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
Meritt - Cada Aluno é Único
 
MapReduce
MapReduceMapReduce
MapReduce
Juliana Félix
 
Hadoop
HadoopHadoop
Hadoop
Gustavo De Lima Rosolen
 
Treinamento hadoop - dia3
Treinamento hadoop - dia3Treinamento hadoop - dia3
Treinamento hadoop - dia3
Alexandre Uehara
 
Treinamento hadoop - dia4
Treinamento hadoop - dia4Treinamento hadoop - dia4
Treinamento hadoop - dia4
Alexandre Uehara
 
Solisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlSolisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para Postgresql
Leonardo Medeiros Martins
 
Scaling bayesian network parameter learning with Hadoop
Scaling bayesian network parameter learning with HadoopScaling bayesian network parameter learning with Hadoop
Scaling bayesian network parameter learning with Hadoop
João Gabriel Lima
 
Amazon emr cluster hadoop pronto para usar na nuvem aws
Amazon emr   cluster hadoop pronto para usar na nuvem awsAmazon emr   cluster hadoop pronto para usar na nuvem aws
Amazon emr cluster hadoop pronto para usar na nuvem aws
Amazon Web Services LATAM
 
Pos-QCon-BigData
Pos-QCon-BigDataPos-QCon-BigData
Pos-QCon-BigData
Fernando Cicconeto
 
Patterns & Best Practices para uma Arquitetura de Software Baseada em In-Memo...
Patterns & Best Practices para uma Arquitetura de Software Baseada em In-Memo...Patterns & Best Practices para uma Arquitetura de Software Baseada em In-Memo...
Patterns & Best Practices para uma Arquitetura de Software Baseada em In-Memo...
Ricardo Ferreira
 
Map reduce novas abordagens para o processo de datamining em grandes volumn...
Map reduce   novas abordagens para o processo de datamining em grandes volumn...Map reduce   novas abordagens para o processo de datamining em grandes volumn...
Map reduce novas abordagens para o processo de datamining em grandes volumn...
João Gabriel Lima
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
Regis Magalhães
 
Migrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMRMigrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMR
Amazon Web Services LATAM
 
Map Reduce
Map ReduceMap Reduce
Map Reduce
Inael Rodrigues
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Ambiente Livre
 
Big Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hiveBig Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hive
Flavio Fonte, PMP, ITIL
 
Hadoop - primeiros passos
Hadoop - primeiros passosHadoop - primeiros passos
Hadoop - primeiros passos
rhpinotti
 
[DTC21] André Marques - Jornada do Engenheiro de Dados
[DTC21] André Marques - Jornada do Engenheiro de Dados[DTC21] André Marques - Jornada do Engenheiro de Dados
[DTC21] André Marques - Jornada do Engenheiro de Dados
Deep Tech Brasil
 
Curso de Performance and Tuning - Linux
Curso de Performance and Tuning - LinuxCurso de Performance and Tuning - Linux
Curso de Performance and Tuning - Linux
Dell Technologies
 
Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionais
Roberto Oliveira
 
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
Meritt - Cada Aluno é Único
 
Solisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlSolisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para Postgresql
Leonardo Medeiros Martins
 
Scaling bayesian network parameter learning with Hadoop
Scaling bayesian network parameter learning with HadoopScaling bayesian network parameter learning with Hadoop
Scaling bayesian network parameter learning with Hadoop
João Gabriel Lima
 
Amazon emr cluster hadoop pronto para usar na nuvem aws
Amazon emr   cluster hadoop pronto para usar na nuvem awsAmazon emr   cluster hadoop pronto para usar na nuvem aws
Amazon emr cluster hadoop pronto para usar na nuvem aws
Amazon Web Services LATAM
 
Patterns & Best Practices para uma Arquitetura de Software Baseada em In-Memo...
Patterns & Best Practices para uma Arquitetura de Software Baseada em In-Memo...Patterns & Best Practices para uma Arquitetura de Software Baseada em In-Memo...
Patterns & Best Practices para uma Arquitetura de Software Baseada em In-Memo...
Ricardo Ferreira
 
Map reduce novas abordagens para o processo de datamining em grandes volumn...
Map reduce   novas abordagens para o processo de datamining em grandes volumn...Map reduce   novas abordagens para o processo de datamining em grandes volumn...
Map reduce novas abordagens para o processo de datamining em grandes volumn...
João Gabriel Lima
 
Migrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMRMigrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMR
Amazon Web Services LATAM
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Ambiente Livre
 
Big Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hiveBig Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hive
Flavio Fonte, PMP, ITIL
 
Hadoop - primeiros passos
Hadoop - primeiros passosHadoop - primeiros passos
Hadoop - primeiros passos
rhpinotti
 
[DTC21] André Marques - Jornada do Engenheiro de Dados
[DTC21] André Marques - Jornada do Engenheiro de Dados[DTC21] André Marques - Jornada do Engenheiro de Dados
[DTC21] André Marques - Jornada do Engenheiro de Dados
Deep Tech Brasil
 
Anúncio

Mais de Felipe (17)

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

Último (15)

Venha Apender Sobre MuleSoft - Dia 09.pptx
Venha Apender Sobre MuleSoft - Dia 09.pptxVenha Apender Sobre MuleSoft - Dia 09.pptx
Venha Apender Sobre MuleSoft - Dia 09.pptx
Renato de Oliveira
 
Venha Aprender Sobre MuleSoft - Dia 11.pptx
Venha Aprender Sobre MuleSoft - Dia 11.pptxVenha Aprender Sobre MuleSoft - Dia 11.pptx
Venha Aprender Sobre MuleSoft - Dia 11.pptx
Renato de Oliveira
 
CNEN_3012024.pdf_.pdf normas de proteção radiológica
CNEN_3012024.pdf_.pdf  normas de proteção radiológicaCNEN_3012024.pdf_.pdf  normas de proteção radiológica
CNEN_3012024.pdf_.pdf normas de proteção radiológica
myespaco
 
Venha Aprender Sobre MuleSoft - Dia 07.pptx
Venha Aprender Sobre MuleSoft - Dia 07.pptxVenha Aprender Sobre MuleSoft - Dia 07.pptx
Venha Aprender Sobre MuleSoft - Dia 07.pptx
Renato de Oliveira
 
Apres-Hidraulica e seus componentes: válvulas, etc...
Apres-Hidraulica e seus componentes: válvulas, etc...Apres-Hidraulica e seus componentes: válvulas, etc...
Apres-Hidraulica e seus componentes: válvulas, etc...
portodesantacruz80
 
Venha Aprender Sobre MuleSoft - Dia 06.pptx
Venha Aprender Sobre MuleSoft - Dia 06.pptxVenha Aprender Sobre MuleSoft - Dia 06.pptx
Venha Aprender Sobre MuleSoft - Dia 06.pptx
Renato de Oliveira
 
A-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdf
A-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdfA-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdf
A-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdf
MarioAthayde
 
AutoriaDigital.pdf ensino médio e fundamental
AutoriaDigital.pdf ensino médio e fundamentalAutoriaDigital.pdf ensino médio e fundamental
AutoriaDigital.pdf ensino médio e fundamental
DayaneSoares55
 
Introdução a Informática basica conceitos basicos .pptx
Introdução  a Informática basica conceitos basicos .pptxIntrodução  a Informática basica conceitos basicos .pptx
Introdução a Informática basica conceitos basicos .pptx
OrlandoCanchipande1
 
Aula de Python - Modularização e Funções.pptx
Aula de Python - Modularização e Funções.pptxAula de Python - Modularização e Funções.pptx
Aula de Python - Modularização e Funções.pptx
ArturGuia1
 
Slide - Linguagem de Definição de Dados - TLBADII.pdf
Slide - Linguagem de Definição de Dados - TLBADII.pdfSlide - Linguagem de Definição de Dados - TLBADII.pdf
Slide - Linguagem de Definição de Dados - TLBADII.pdf
FtGames1
 
03-poo1-uml.pdf Apresentacao UML POOL UML
03-poo1-uml.pdf Apresentacao UML POOL UML03-poo1-uml.pdf Apresentacao UML POOL UML
03-poo1-uml.pdf Apresentacao UML POOL UML
ssuser426fcf
 
AC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptx
AC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptxAC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptx
AC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptx
Susana Cascais
 
Tabelas e Planilhas com apresentação em Dashboard
Tabelas e Planilhas com apresentação em DashboardTabelas e Planilhas com apresentação em Dashboard
Tabelas e Planilhas com apresentação em Dashboard
Hugo Dourado Graçano
 
Venha Aprender Sobre MuleSoft - Dia 10.pptx
Venha Aprender Sobre MuleSoft - Dia 10.pptxVenha Aprender Sobre MuleSoft - Dia 10.pptx
Venha Aprender Sobre MuleSoft - Dia 10.pptx
Renato de Oliveira
 
Venha Apender Sobre MuleSoft - Dia 09.pptx
Venha Apender Sobre MuleSoft - Dia 09.pptxVenha Apender Sobre MuleSoft - Dia 09.pptx
Venha Apender Sobre MuleSoft - Dia 09.pptx
Renato de Oliveira
 
Venha Aprender Sobre MuleSoft - Dia 11.pptx
Venha Aprender Sobre MuleSoft - Dia 11.pptxVenha Aprender Sobre MuleSoft - Dia 11.pptx
Venha Aprender Sobre MuleSoft - Dia 11.pptx
Renato de Oliveira
 
CNEN_3012024.pdf_.pdf normas de proteção radiológica
CNEN_3012024.pdf_.pdf  normas de proteção radiológicaCNEN_3012024.pdf_.pdf  normas de proteção radiológica
CNEN_3012024.pdf_.pdf normas de proteção radiológica
myespaco
 
Venha Aprender Sobre MuleSoft - Dia 07.pptx
Venha Aprender Sobre MuleSoft - Dia 07.pptxVenha Aprender Sobre MuleSoft - Dia 07.pptx
Venha Aprender Sobre MuleSoft - Dia 07.pptx
Renato de Oliveira
 
Apres-Hidraulica e seus componentes: válvulas, etc...
Apres-Hidraulica e seus componentes: válvulas, etc...Apres-Hidraulica e seus componentes: válvulas, etc...
Apres-Hidraulica e seus componentes: válvulas, etc...
portodesantacruz80
 
Venha Aprender Sobre MuleSoft - Dia 06.pptx
Venha Aprender Sobre MuleSoft - Dia 06.pptxVenha Aprender Sobre MuleSoft - Dia 06.pptx
Venha Aprender Sobre MuleSoft - Dia 06.pptx
Renato de Oliveira
 
A-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdf
A-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdfA-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdf
A-Evolucao-das-Fontes-no-Windows-Uma-Jornada-Tipografica.pdf
MarioAthayde
 
AutoriaDigital.pdf ensino médio e fundamental
AutoriaDigital.pdf ensino médio e fundamentalAutoriaDigital.pdf ensino médio e fundamental
AutoriaDigital.pdf ensino médio e fundamental
DayaneSoares55
 
Introdução a Informática basica conceitos basicos .pptx
Introdução  a Informática basica conceitos basicos .pptxIntrodução  a Informática basica conceitos basicos .pptx
Introdução a Informática basica conceitos basicos .pptx
OrlandoCanchipande1
 
Aula de Python - Modularização e Funções.pptx
Aula de Python - Modularização e Funções.pptxAula de Python - Modularização e Funções.pptx
Aula de Python - Modularização e Funções.pptx
ArturGuia1
 
Slide - Linguagem de Definição de Dados - TLBADII.pdf
Slide - Linguagem de Definição de Dados - TLBADII.pdfSlide - Linguagem de Definição de Dados - TLBADII.pdf
Slide - Linguagem de Definição de Dados - TLBADII.pdf
FtGames1
 
03-poo1-uml.pdf Apresentacao UML POOL UML
03-poo1-uml.pdf Apresentacao UML POOL UML03-poo1-uml.pdf Apresentacao UML POOL UML
03-poo1-uml.pdf Apresentacao UML POOL UML
ssuser426fcf
 
AC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptx
AC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptxAC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptx
AC M1 1 Sistemas Digitais - Sistemas de Numeracao e Codigos.pptx
Susana Cascais
 
Tabelas e Planilhas com apresentação em Dashboard
Tabelas e Planilhas com apresentação em DashboardTabelas e Planilhas com apresentação em Dashboard
Tabelas e Planilhas com apresentação em Dashboard
Hugo Dourado Graçano
 
Venha Aprender Sobre MuleSoft - Dia 10.pptx
Venha Aprender Sobre MuleSoft - Dia 10.pptxVenha Aprender Sobre MuleSoft - Dia 10.pptx
Venha Aprender Sobre MuleSoft - Dia 10.pptx
Renato de Oliveira
 

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