SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Globalcode – Open4education
Instanciando a Arquitetura Lambda com
GraphX e Elasticsearch 2.0
em uma aplicação de redes sociais
Luiz Henrique Zambom Santana
lhzsantana@gmail.com
Globalcode – Open4education
Agenda
Apresentação e introdução
Histórico: MapReduce e Hadoop
Buzz atual sobre Spark e Elasticsearch
Visão geral do Spark e GraphX
Visão geral do Elasticsearch 2.0
Arquitetura Lambda
Aplicação de Redes Sociais
Código
Conclusões
Globalcode – Open4education
Apresentação
Doutorando na UFSC
Consultor e programador freelancer
Trabalhando com Elasticsearch desde 2013 (versão 0.9.x)
Trabalhando com Spark desde o começo de 2015
Autor de artigos, Blog (luizsantana.info) e livros
Globalcode – Open4education
Big Data na minha visão
Sempre esteve por aí
“Mais dados que a computação atual pode suportar”
Roger Magoulas, em 2005. Será que ainda é válido?
Sim (!), o desafio atual é deixar a Big Data mais fácil e barata
Parte de uma onda que também inclui Cloud Computing e Lean Startup,
tentando lidar com a complexidade do desenvolvimento de software atual
Uma infinidade de ferramentas
Processamento: Hadoop, Spark, Storm, Mahout..
Armazenamento: Cassandra, MongoDB...
Cache: Redis, Memcache...
Integração: Kafka, RabitMQ, Logstash...
Análise: R, Spark, Mahout...
Visualização: Kibana, Tableau...
...
Globalcode – Open4education
Globalcode – Open4education
No começo era: MapReduce e Hadoop
MapReduce
Criado e usado pelo Google, publicado em 2004
Apesar das críticas (especialmente do Stonebraker)
Preocupado com Vasão
Motivou ou influenciou a criação de muitas
ferramentas que conhecemos (MongoDB e
Hadoop) ou estamos nos conhecendo
(Elasticsearch)
Problema: nós – usuários - ficamos mal
acostumados
Queremos baixa Latência e Tempo-real
Globalcode – Open4education
Qual é o problema?
100 ms
150 ms
200 ms
Globalcode – Open4education
NoSQL é a realidade
Sadalage e Fowler, 2012
(http://martinfowler.com/books/nosql.html)
Not only SQL
Nathan Marz, 2014
(http://www.slideshare.net/nathanmarz/runaway-complexity-in-big-data-and-a-plan-to-stop-it)
Relational databases will be a
footnote in history
Globalcode – Open4education
Buzz atual sobre Spark e Elasticsearch
Globalcode – Open4education
Visão geral do Apache Spark
Desenvolvido na Universidade da Califórnia em
Berkley, no AmpLab
Principalmente durante a tese de doutorado do
Prof. Dr. Matei Zaharia orientado pelo Prof. Dr. Ion
Stoica
No ano passado foi fundada a Databricks
Oferece:
Processamento de uma grande quantidade de dados
com baixa latência
Uma grande quantidade de ferramentas para
transformações e análises
Globalcode – Open4education
Comparação com o Hadoop
Dados em memória principal
100x mais rápido em memória principal
10x mais rápido em disco
Menor número de máquinas = Mais barato
Muito mais fácil de usar
Um conjunto completo de ferramentas
Globalcode – Open4education
Resilient Distributed Data (RDD)
Principal abstração do Spark
Para mais detalhe ver a tese
de doutorado do Matei
Zaharia
Fornecem uma abstração de
memória compartilhada
Com o RDDs o Spark é
capaz de realizar
transformações em paralelo
(potencialmente,sobre parte
do conjunto de dados)
Globalcode – Open4education
Spark e GraphX
Globalcode – Open4education
GraphX
Ferramenta para Grafos
Distribuição de Grafos no RDD
Implementação de algoritmos como:
PageRank
Subgrafo
Elementos conectados
Contagem de triângulos
Globalcode – Open4education
Resilient Distributed Data (RDD)
Principal abstração do Spark
Para mais detalhe ver a tese
de doutorado do Matei
Zaharia
Fornecem uma abstração de
memória compartilhada
Com o RDDs o Spark é
capaz de realizar
transformações em paralelo
(potencialmente,sobre parte
do conjunto de dados)
Globalcode – Open4education
RDD no GraphX
Globalcode – Open4education
Visão geral do Elasticsearch
Desenvolvido pelo israelense Shay
Banon desde de 2010
Até 2014 um projeto open-source,
quando foi criada a Elastic
Oferece:
Grande poder de buscas, usando o
Apache Lucene
Alta escalabidade
Um ambiente completo com o ELK,
Watcher, Shield e Marvel
Globalcode – Open4education
Elasticsearch 2.0
Já pode ser testado:
https://www.elastic.co/downloads/past-
releases/elasticsearch-2-0-0-beta1
Existe o plugin de migração:
https://github.com/elastic/elasticsearch-migration
Breaking changes in 2.0:
https://www.elastic.co/guide/en/elasticsearch/reference/2
.0/breaking-changes-2.0.html
Globalcode – Open4education
Elasticsearch 2.0
As principais:
Uso do Lucene 5
Pipeline de agregações
Unificação de query/filter
Compressão
Lucene 5
Resultado: mais dados em cache e em disco
Rivers já não existem! Use o Logstash ou a API de bulk
para enviar dados
MVEL foi substituído por Groovy
Globalcode – Open4education
Elasticsearch 2.0
Prefixo de tipo foi removido
O que era assim:
GET my_index/_search
{
"query": {
"match": {
"my_type.some_field": "quick brown fox"
}
}
}
No 2.0 vai ser feito da seguinte forma:
GET my_index/my_type/_search
{
"query": {
"match": {
"some_field": "quick brown fox"
}
}
}
Globalcode – Open4education
Elasticsearch 2.0
Outras mudanças importantes:
API Java
Configurações
Mudanças no Parent/Child
Globalcode – Open4education
Arquitetura Lambda
Globalcode – Open4education
Aplicação
Parte de uma aplicação maior, que realiza análise
de sentimento na rede de contatos
Dados do Twitter, coletados com o Twitter4J
Funcionalidade:
Ordenar os resultados da busca no Elasticsearch
usando a importância do usuário para a rede social
(Page Rank)
Palavras-chave: Java, Scala, Maven, Eclipse, Twitter4J,
Elasticsearch, Spark, GraphX e Cassandra
Globalcode – Open4education
Arquitetura da aplicação
Speed Layer
Indexa usuários
Calcula PageRank e
Salva usuários
Batch e Serving Layers
Buscas e agregações
Views
Globalcode – Open4education
Ambiente de desenvolvimento
Eclipse
Scala IDE
Maven
Instalar Spark
Instalar Elasticsearch
Globalcode – Open4education
Código - Maven
Importante: vou pular as partes óbvias
https://github.com/lhzsantana/tdc-graphx-elasticsearch
Criar um projeto Maven no Eclipse
Maven:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-graphx_2.10</artifactId>
<version>1.5.0</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.0.0-beta2</version>
</dependency>
Globalcode – Open4education
Código - Twitter4J e Cassandra
Meramente auxiliares:
<dependency>
<groupId>org.twitter4j</groupId>
<artifactId>twitter4j-core</artifactId>
<version>4.0.4</version>
</dependency>
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.0.0-alpha3</version>
</dependency>
Globalcode – Open4education
Código – Recupera seguidores
ConfigurationBuilder configurationBuilder = null;
Twitter twitter = null;
public TwitterReader(..) {
configurationBuilder = new ConfigurationBuilder();
configurationBuilder.setOAuthAccessToken(accessToken)
.setOAuthAccessTokenSecret(secretToken)
.setOAuthConsumerKey(consumerKey)
.setOAuthConsumerSecret(consumerSecret);
twitter = new TwitterFactory(configurationBuilder.build()).getInstance();
}
public PagableResponseList<User> getSeguidores(String nome) throws
TwitterException {
return twitter.getFollowersList(nome, 0);
}
Globalcode – Open4education
Código – Spark Context
Globalcode – Open4education
Código – Criar grafo
Globalcode – Open4education
Código – Armazenar grafo
Scala
Globalcode – Open4education
Código – Calcular PageRank
Globalcode – Open4education
Código – Elasticsearch
Mapeamento
Globalcode – Open4education
Código – Elasticsearch
Busca - Unificação de query/filter
Pipeline de agregações
Globalcode – Open4education
Código – Pipeline de agregações
Agregar
1. Os usuários de acordo
com seus seguidores
2. Os usuários em faixas
de acordo com seu
pagerank
https://www.elastic.co/guide/
en/elasticsearch/reference/
master/search-
aggregations-pipeline.html
Globalcode – Open4education
Código – query/filter
Buscar usuários de acordo com seus seguidores:
Globalcode – Open4education
Execução
Iniciar Cassandra
Iniciar Elasticsearch
bin/elasticsearch
Iniciar Spark
binspark-class.cmd org.apache.spark.deploy.master.Master
Vá em http://localhost:8080/ e veja qual é o endereço do master
(geralmente spark://<IP>:7077).
binspark-class.cmd
org.apache.spark.deploy.worker.Worker spark://<IP>:7077
Globalcode – Open4education
Execução
Globalcode – Open4education
Melhorias
Usar Kafka para
Sistema de mensagens como publish-subscribe
Usar Ignite
Para controle de transações
Usar o streaming do Twitter
http://twitter4j.org/javadoc/twitter4j/TwitterStream.html
Globalcode – Open4education
Conclusões
Uma arquitetura ótima teria também outros
componentes, como Redis, Kafka, Ignite,
MongoDB... E outros
Opinião: Dificilmente o Hadoop vai alcançar o
Spark em nível de abstração e facilidade de uso
O Spark, GraphX e o Elasticsearch permitem um
novo nível de solução
Tempo-real, análise e busca
Arquitetura Lamba facilita a organização das
ferramentas
Globalcode – Open4education
Conselho
Acompanhe os arquivos do curso do Matei Zaharia no MIT:
6.S897: Large-Scale Systems
http://people.csail.mit.edu/matei/courses/2015/6.S897/
Globalcode – Open4education
O que ver mais?
Spark:
MLlib
Streaming
R
Elasticsearch:
Kibana
Logstash
Globalcode – Open4education
Obrigado!
Em breve:
RS Data Science Meetup
http://www.meetup.com/pt/RS-Data-Science-Meetup/
7/10/2015
Artigo na Java Magazine 144:
Apache Spark: Como criar um mecanismo de sugestão de produtos
Filtragem colaborativa
Entre 12 e 16 de Outubro
Artigo DevMedia com o código completo:
http://www.devmedia.com.br/space/luiz-henrique-zambom-santana
Apresentação no WebMedia:
http://webmedia.icomp.ufam.edu.br/index.php/presentation/accepted-
papers
Globalcode – Open4education
Referências
Ótima apresentação sobre GraphX
http://stanford.edu/~rezab/nips2014workshop/slides/ank
ur.pdf

Weitere ähnliche Inhalte

Ähnlich wie Instalando arquitetura Lambda com Graphx e Elasticsearch 2.0 em uma aplicação em redes sociais

TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
Cleber Dantas
 
Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012
Frederico Maia Arantes
 

Ähnlich wie Instalando arquitetura Lambda com Graphx e Elasticsearch 2.0 em uma aplicação em redes sociais (20)

Instanciando a Arquitetura Lambda com GraphX e Elasticsearch 2.0 em uma apl...
Instanciando a Arquitetura Lambda com  GraphX e Elasticsearch 2.0  em uma apl...Instanciando a Arquitetura Lambda com  GraphX e Elasticsearch 2.0  em uma apl...
Instanciando a Arquitetura Lambda com GraphX e Elasticsearch 2.0 em uma apl...
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
 
Tdc2014 azure redis cache
Tdc2014   azure redis cacheTdc2014   azure redis cache
Tdc2014 azure redis cache
 
Arquitetura do Framework Apache Hadoop 2.6
Arquitetura do Framework Apache Hadoop 2.6Arquitetura do Framework Apache Hadoop 2.6
Arquitetura do Framework Apache Hadoop 2.6
 
VoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQLVoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQL
 
Spring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do FrameworkSpring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do Framework
 
Tdc2016 trilha-banco-influx.ppt
Tdc2016 trilha-banco-influx.pptTdc2016 trilha-banco-influx.ppt
Tdc2016 trilha-banco-influx.ppt
 
InfluxDb: como monitorar milhares de dados por segundo em real time
InfluxDb: como monitorar milhares de dados por segundo em real time InfluxDb: como monitorar milhares de dados por segundo em real time
InfluxDb: como monitorar milhares de dados por segundo em real time
 
Big Data, JVM e Redes Sociais
Big Data, JVM e Redes SociaisBig Data, JVM e Redes Sociais
Big Data, JVM e Redes Sociais
 
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computing
 
TDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de DadosTDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de Dados
 
A Revolução já começou
A Revolução já começouA Revolução já começou
A Revolução já começou
 
Internet das coisas - A revolução já começou
Internet das coisas - A revolução já começouInternet das coisas - A revolução já começou
Internet das coisas - A revolução já começou
 
DataOps: Estendendo as práticas de DevOps para BigData
DataOps: Estendendo as práticas de DevOps para BigDataDataOps: Estendendo as práticas de DevOps para BigData
DataOps: Estendendo as práticas de DevOps para BigData
 
Spring + Cloud Computing
Spring + Cloud ComputingSpring + Cloud Computing
Spring + Cloud Computing
 
Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012
 
Amazon WebServices Architectur
Amazon WebServices ArchitecturAmazon WebServices Architectur
Amazon WebServices Architectur
 
De 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuáriosDe 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuários
 
Aplicações 12 fatores, melhor com Docker
Aplicações 12 fatores, melhor com DockerAplicações 12 fatores, melhor com Docker
Aplicações 12 fatores, melhor com Docker
 

Mehr von tdc-globalcode

Mehr von tdc-globalcode (20)

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devices
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocus
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golang
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
 

Kürzlich hochgeladen

Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
FabianeMartins35
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
CleidianeCarvalhoPer
 

Kürzlich hochgeladen (20)

Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
Projeto de Extensão - DESENVOLVIMENTO BACK-END.pdf
Projeto de Extensão - DESENVOLVIMENTO BACK-END.pdfProjeto de Extensão - DESENVOLVIMENTO BACK-END.pdf
Projeto de Extensão - DESENVOLVIMENTO BACK-END.pdf
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptx
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
Araribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medioAraribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medio
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 

Instalando arquitetura Lambda com Graphx e Elasticsearch 2.0 em uma aplicação em redes sociais

  • 1. Globalcode – Open4education Instanciando a Arquitetura Lambda com GraphX e Elasticsearch 2.0 em uma aplicação de redes sociais Luiz Henrique Zambom Santana lhzsantana@gmail.com
  • 2. Globalcode – Open4education Agenda Apresentação e introdução Histórico: MapReduce e Hadoop Buzz atual sobre Spark e Elasticsearch Visão geral do Spark e GraphX Visão geral do Elasticsearch 2.0 Arquitetura Lambda Aplicação de Redes Sociais Código Conclusões
  • 3. Globalcode – Open4education Apresentação Doutorando na UFSC Consultor e programador freelancer Trabalhando com Elasticsearch desde 2013 (versão 0.9.x) Trabalhando com Spark desde o começo de 2015 Autor de artigos, Blog (luizsantana.info) e livros
  • 4. Globalcode – Open4education Big Data na minha visão Sempre esteve por aí “Mais dados que a computação atual pode suportar” Roger Magoulas, em 2005. Será que ainda é válido? Sim (!), o desafio atual é deixar a Big Data mais fácil e barata Parte de uma onda que também inclui Cloud Computing e Lean Startup, tentando lidar com a complexidade do desenvolvimento de software atual Uma infinidade de ferramentas Processamento: Hadoop, Spark, Storm, Mahout.. Armazenamento: Cassandra, MongoDB... Cache: Redis, Memcache... Integração: Kafka, RabitMQ, Logstash... Análise: R, Spark, Mahout... Visualização: Kibana, Tableau... ...
  • 6. Globalcode – Open4education No começo era: MapReduce e Hadoop MapReduce Criado e usado pelo Google, publicado em 2004 Apesar das críticas (especialmente do Stonebraker) Preocupado com Vasão Motivou ou influenciou a criação de muitas ferramentas que conhecemos (MongoDB e Hadoop) ou estamos nos conhecendo (Elasticsearch) Problema: nós – usuários - ficamos mal acostumados Queremos baixa Latência e Tempo-real
  • 7. Globalcode – Open4education Qual é o problema? 100 ms 150 ms 200 ms
  • 8. Globalcode – Open4education NoSQL é a realidade Sadalage e Fowler, 2012 (http://martinfowler.com/books/nosql.html) Not only SQL Nathan Marz, 2014 (http://www.slideshare.net/nathanmarz/runaway-complexity-in-big-data-and-a-plan-to-stop-it) Relational databases will be a footnote in history
  • 9. Globalcode – Open4education Buzz atual sobre Spark e Elasticsearch
  • 10. Globalcode – Open4education Visão geral do Apache Spark Desenvolvido na Universidade da Califórnia em Berkley, no AmpLab Principalmente durante a tese de doutorado do Prof. Dr. Matei Zaharia orientado pelo Prof. Dr. Ion Stoica No ano passado foi fundada a Databricks Oferece: Processamento de uma grande quantidade de dados com baixa latência Uma grande quantidade de ferramentas para transformações e análises
  • 11. Globalcode – Open4education Comparação com o Hadoop Dados em memória principal 100x mais rápido em memória principal 10x mais rápido em disco Menor número de máquinas = Mais barato Muito mais fácil de usar Um conjunto completo de ferramentas
  • 12. Globalcode – Open4education Resilient Distributed Data (RDD) Principal abstração do Spark Para mais detalhe ver a tese de doutorado do Matei Zaharia Fornecem uma abstração de memória compartilhada Com o RDDs o Spark é capaz de realizar transformações em paralelo (potencialmente,sobre parte do conjunto de dados)
  • 14. Globalcode – Open4education GraphX Ferramenta para Grafos Distribuição de Grafos no RDD Implementação de algoritmos como: PageRank Subgrafo Elementos conectados Contagem de triângulos
  • 15. Globalcode – Open4education Resilient Distributed Data (RDD) Principal abstração do Spark Para mais detalhe ver a tese de doutorado do Matei Zaharia Fornecem uma abstração de memória compartilhada Com o RDDs o Spark é capaz de realizar transformações em paralelo (potencialmente,sobre parte do conjunto de dados)
  • 17. Globalcode – Open4education Visão geral do Elasticsearch Desenvolvido pelo israelense Shay Banon desde de 2010 Até 2014 um projeto open-source, quando foi criada a Elastic Oferece: Grande poder de buscas, usando o Apache Lucene Alta escalabidade Um ambiente completo com o ELK, Watcher, Shield e Marvel
  • 18. Globalcode – Open4education Elasticsearch 2.0 Já pode ser testado: https://www.elastic.co/downloads/past- releases/elasticsearch-2-0-0-beta1 Existe o plugin de migração: https://github.com/elastic/elasticsearch-migration Breaking changes in 2.0: https://www.elastic.co/guide/en/elasticsearch/reference/2 .0/breaking-changes-2.0.html
  • 19. Globalcode – Open4education Elasticsearch 2.0 As principais: Uso do Lucene 5 Pipeline de agregações Unificação de query/filter Compressão Lucene 5 Resultado: mais dados em cache e em disco Rivers já não existem! Use o Logstash ou a API de bulk para enviar dados MVEL foi substituído por Groovy
  • 20. Globalcode – Open4education Elasticsearch 2.0 Prefixo de tipo foi removido O que era assim: GET my_index/_search { "query": { "match": { "my_type.some_field": "quick brown fox" } } } No 2.0 vai ser feito da seguinte forma: GET my_index/my_type/_search { "query": { "match": { "some_field": "quick brown fox" } } }
  • 21. Globalcode – Open4education Elasticsearch 2.0 Outras mudanças importantes: API Java Configurações Mudanças no Parent/Child
  • 23. Globalcode – Open4education Aplicação Parte de uma aplicação maior, que realiza análise de sentimento na rede de contatos Dados do Twitter, coletados com o Twitter4J Funcionalidade: Ordenar os resultados da busca no Elasticsearch usando a importância do usuário para a rede social (Page Rank) Palavras-chave: Java, Scala, Maven, Eclipse, Twitter4J, Elasticsearch, Spark, GraphX e Cassandra
  • 24. Globalcode – Open4education Arquitetura da aplicação Speed Layer Indexa usuários Calcula PageRank e Salva usuários Batch e Serving Layers Buscas e agregações Views
  • 25. Globalcode – Open4education Ambiente de desenvolvimento Eclipse Scala IDE Maven Instalar Spark Instalar Elasticsearch
  • 26. Globalcode – Open4education Código - Maven Importante: vou pular as partes óbvias https://github.com/lhzsantana/tdc-graphx-elasticsearch Criar um projeto Maven no Eclipse Maven: <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-graphx_2.10</artifactId> <version>1.5.0</version> </dependency> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>2.0.0-beta2</version> </dependency>
  • 27. Globalcode – Open4education Código - Twitter4J e Cassandra Meramente auxiliares: <dependency> <groupId>org.twitter4j</groupId> <artifactId>twitter4j-core</artifactId> <version>4.0.4</version> </dependency> <dependency> <groupId>com.datastax.cassandra</groupId> <artifactId>cassandra-driver-core</artifactId> <version>3.0.0-alpha3</version> </dependency>
  • 28. Globalcode – Open4education Código – Recupera seguidores ConfigurationBuilder configurationBuilder = null; Twitter twitter = null; public TwitterReader(..) { configurationBuilder = new ConfigurationBuilder(); configurationBuilder.setOAuthAccessToken(accessToken) .setOAuthAccessTokenSecret(secretToken) .setOAuthConsumerKey(consumerKey) .setOAuthConsumerSecret(consumerSecret); twitter = new TwitterFactory(configurationBuilder.build()).getInstance(); } public PagableResponseList<User> getSeguidores(String nome) throws TwitterException { return twitter.getFollowersList(nome, 0); }
  • 31. Globalcode – Open4education Código – Armazenar grafo Scala
  • 32. Globalcode – Open4education Código – Calcular PageRank
  • 33. Globalcode – Open4education Código – Elasticsearch Mapeamento
  • 34. Globalcode – Open4education Código – Elasticsearch Busca - Unificação de query/filter Pipeline de agregações
  • 35. Globalcode – Open4education Código – Pipeline de agregações Agregar 1. Os usuários de acordo com seus seguidores 2. Os usuários em faixas de acordo com seu pagerank https://www.elastic.co/guide/ en/elasticsearch/reference/ master/search- aggregations-pipeline.html
  • 36. Globalcode – Open4education Código – query/filter Buscar usuários de acordo com seus seguidores:
  • 37. Globalcode – Open4education Execução Iniciar Cassandra Iniciar Elasticsearch bin/elasticsearch Iniciar Spark binspark-class.cmd org.apache.spark.deploy.master.Master Vá em http://localhost:8080/ e veja qual é o endereço do master (geralmente spark://<IP>:7077). binspark-class.cmd org.apache.spark.deploy.worker.Worker spark://<IP>:7077
  • 39. Globalcode – Open4education Melhorias Usar Kafka para Sistema de mensagens como publish-subscribe Usar Ignite Para controle de transações Usar o streaming do Twitter http://twitter4j.org/javadoc/twitter4j/TwitterStream.html
  • 40. Globalcode – Open4education Conclusões Uma arquitetura ótima teria também outros componentes, como Redis, Kafka, Ignite, MongoDB... E outros Opinião: Dificilmente o Hadoop vai alcançar o Spark em nível de abstração e facilidade de uso O Spark, GraphX e o Elasticsearch permitem um novo nível de solução Tempo-real, análise e busca Arquitetura Lamba facilita a organização das ferramentas
  • 41. Globalcode – Open4education Conselho Acompanhe os arquivos do curso do Matei Zaharia no MIT: 6.S897: Large-Scale Systems http://people.csail.mit.edu/matei/courses/2015/6.S897/
  • 42. Globalcode – Open4education O que ver mais? Spark: MLlib Streaming R Elasticsearch: Kibana Logstash
  • 43. Globalcode – Open4education Obrigado! Em breve: RS Data Science Meetup http://www.meetup.com/pt/RS-Data-Science-Meetup/ 7/10/2015 Artigo na Java Magazine 144: Apache Spark: Como criar um mecanismo de sugestão de produtos Filtragem colaborativa Entre 12 e 16 de Outubro Artigo DevMedia com o código completo: http://www.devmedia.com.br/space/luiz-henrique-zambom-santana Apresentação no WebMedia: http://webmedia.icomp.ufam.edu.br/index.php/presentation/accepted- papers
  • 44. Globalcode – Open4education Referências Ótima apresentação sobre GraphX http://stanford.edu/~rezab/nips2014workshop/slides/ank ur.pdf

Hinweis der Redaktion

  1. Pedir atenção