1. A apresentação discute o uso da arquitetura Lambda com GraphX e Elasticsearch 2.0 em uma aplicação de redes sociais.
2. É apresentado o histórico de MapReduce e Hadoop, seguido de uma visão geral do Spark e GraphX e do Elasticsearch 2.0.
3. A arquitetura proposta usa Spark para calcular o PageRank dos usuários a partir de um grafo de seguidores no Twitter e indexar os resultados no Elasticsearch.
ADeSCoU: Uma Abordagem para o Desenvolvimento de Software na Computação Ubíqua
Instanciando a Arquitetura Lambda com GraphX e Elasticsearch 2.0 em uma aplicação de 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
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
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"
}
}
}
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
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
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
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
Tese de doutorado do Matei Zaharia
https://www.eecs.berkeley.edu/Pubs/TechRpts/2014/EE
CS-2014-12.html