SlideShare uma empresa Scribd logo
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
Scala
Globalcode – Open4education
Código – Criar grafo
Scala
Globalcode – Open4education
Código – Armazenar grafo
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
Tese de doutorado do Matei Zaharia
https://www.eecs.berkeley.edu/Pubs/TechRpts/2014/EE
CS-2014-12.html

Mais conteúdo relacionado

PPTX
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
PPTX
Elasticsearch como gerenciar seus logs com logstash e kibana
PPTX
Novidades do elasticsearch 2.0 e como usá-lo com PHP
PDF
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
ODP
BigData - ElasticSearch + PHP
PPTX
Como o elasticsearch salvou minhas buscas
PPTX
Seminário de Andamento de Doutorado
PPTX
Treinamento Elasticsearch - Parte 2
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Elasticsearch como gerenciar seus logs com logstash e kibana
Novidades do elasticsearch 2.0 e como usá-lo com PHP
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
BigData - ElasticSearch + PHP
Como o elasticsearch salvou minhas buscas
Seminário de Andamento de Doutorado
Treinamento Elasticsearch - Parte 2

Mais procurados (20)

PDF
Workshop de ELK - EmergiNet
PPT
Instalando arquitetura Lambda com Graphx e Elasticsearch 2.0 em uma aplicação...
PDF
Primeiros Passos Com Elasticsearch
PDF
Primeiros passos com a API do Zabbix
ODP
MongoDB - Tudo o que você precisa saber
PDF
Minicurso Epoca mongoDB
PDF
Curso mongo db com php
PPT
Modelando aplicação em documento - MongoDB
PPTX
Elasticsearch 5.0
PPTX
Desenvolvimento de aplicações PHP com MongoDB
PPTX
MongoDB: Uma forma diferente de pensar no desenvolvimento
PDF
Mini-Curso de MongoDB
PDF
Primeiros Passos com a API do Zabbix - 3 Meetup do Interior
PPTX
#5 CRUD no MongoDB
PPTX
Elasticsearch
PPTX
Introdução no sql mongodb java
PDF
Introdução ao MongoDB
PPTX
MongoDB - Iniciando e Conhecendo
PPTX
#1 Introdução ao MongoDB
PDF
Uma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Workshop de ELK - EmergiNet
Instalando arquitetura Lambda com Graphx e Elasticsearch 2.0 em uma aplicação...
Primeiros Passos Com Elasticsearch
Primeiros passos com a API do Zabbix
MongoDB - Tudo o que você precisa saber
Minicurso Epoca mongoDB
Curso mongo db com php
Modelando aplicação em documento - MongoDB
Elasticsearch 5.0
Desenvolvimento de aplicações PHP com MongoDB
MongoDB: Uma forma diferente de pensar no desenvolvimento
Mini-Curso de MongoDB
Primeiros Passos com a API do Zabbix - 3 Meetup do Interior
#5 CRUD no MongoDB
Elasticsearch
Introdução no sql mongodb java
Introdução ao MongoDB
MongoDB - Iniciando e Conhecendo
#1 Introdução ao MongoDB
Uma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Anúncio

Semelhante a Instanciando a Arquitetura Lambda com GraphX e Elasticsearch 2.0 em uma aplicação de redes sociais (20)

PPTX
Elasticsearch: o desafio como banco principal e cuidados em produção
PDF
Buscapé 2.0 - Como mudamos uma empresa em 1 ano
PDF
TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8
PDF
TDC2016SP - Trilha BigData
PPTX
TDC2016SP - Trilha Banco de Dados
PDF
InfluxDb: como monitorar milhares de dados por segundo em real time
PDF
Tdc2016 trilha-banco-influx.ppt
PDF
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
PDF
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
PDF
Rails API com GraphQL
PDF
TDCSP2019 - Trilha: Machine Learning - Uso de PyTorch para aplicações de Vis...
PDF
Spring 3: Uma Plataforma além do Framework
ODP
Android DevConference - Elastic Search como ferramenta de busca em aplicações...
PDF
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
PPTX
Usando Visão Computacional para Identificar Letras em Libras
PPTX
Machine Learning Black Boxes
PPTX
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
PPT
Prepare-se para o Deep Learning
PPTX
Microprofile - Facilitando o desenvolvimento de Microserviços
PDF
Java e uma visão sobre PaaS
Elasticsearch: o desafio como banco principal e cuidados em produção
Buscapé 2.0 - Como mudamos uma empresa em 1 ano
TDC 2016 Floripa - Criando APIs REST em minutos com Spark + Java 8
TDC2016SP - Trilha BigData
TDC2016SP - Trilha Banco de Dados
InfluxDb: como monitorar milhares de dados por segundo em real time
Tdc2016 trilha-banco-influx.ppt
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
TDC2018SP | Trilha Ruby - Uma Aplicação Ruby On Rails Integrada com GraphQL, ...
Rails API com GraphQL
TDCSP2019 - Trilha: Machine Learning - Uso de PyTorch para aplicações de Vis...
Spring 3: Uma Plataforma além do Framework
Android DevConference - Elastic Search como ferramenta de busca em aplicações...
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
Usando Visão Computacional para Identificar Letras em Libras
Machine Learning Black Boxes
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
Prepare-se para o Deep Learning
Microprofile - Facilitando o desenvolvimento de Microserviços
Java e uma visão sobre PaaS
Anúncio

Mais de Luiz Henrique Zambom Santana (20)

PDF
Federal University of Santa Catarina (UFSC) - PySpark Tutorial
PDF
UFSC - Data Lakes Technlogies & Implementation - 2025
PDF
Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
PDF
Apache Sedona: how to process petabytes of agronomic data with Spark
PDF
De Arquiteto para Gerente: como debugar uma equipe
PDF
VoltDB: as vantagens e os desafios dos banco de dados NewSQL
PDF
IBM Watson, Apache Spark ou TensorFlow?
PPTX
Banco de dados nas nuvens - aula 3
PPTX
Banco de dados nas nuvens - aula 2
PPTX
Banco de dados nas nuvens - aula 1
PDF
Workload-Aware RDF Partitioning and SPARQL Query Caching for Massive RDF Gra...
PPTX
A middleware for storing massive RDF graphs into NoSQL
PDF
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
PDF
PDF
Consultas básicas em SQL
PDF
Processamento em Big Data
PDF
Design of Experiments on Federator Polystore Architecture
PPTX
An Approach for RDF-based Semantic Access to NoSQL Repositories
PPTX
Survey on NoSQL integration
Federal University of Santa Catarina (UFSC) - PySpark Tutorial
UFSC - Data Lakes Technlogies & Implementation - 2025
Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
Apache Sedona: how to process petabytes of agronomic data with Spark
De Arquiteto para Gerente: como debugar uma equipe
VoltDB: as vantagens e os desafios dos banco de dados NewSQL
IBM Watson, Apache Spark ou TensorFlow?
Banco de dados nas nuvens - aula 3
Banco de dados nas nuvens - aula 2
Banco de dados nas nuvens - aula 1
Workload-Aware RDF Partitioning and SPARQL Query Caching for Massive RDF Gra...
A middleware for storing massive RDF graphs into NoSQL
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
Consultas básicas em SQL
Processamento em Big Data
Design of Experiments on Federator Polystore Architecture
An Approach for RDF-based Semantic Access to NoSQL Repositories
Survey on NoSQL integration

Último (19)

PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Processos na gestão de transportes, TM100 Col18
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Custos e liquidação no SAP Transportation Management, TM130 Col18
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Aula04-Academia Heri- Tecnologia Geral 2025
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Apple Pippin Uma breve introdução. - David Glotz
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Aula 18 - Manipulacao De Arquivos python
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Processos na gestão de transportes, TM100 Col18
COBITxITIL-Entenda as diferença em uso governança TI
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...

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
  • 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); }
  • 29. Globalcode – Open4education Código – Spark Context Scala
  • 30. Globalcode – Open4education Código – Criar 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 Tese de doutorado do Matei Zaharia https://www.eecs.berkeley.edu/Pubs/TechRpts/2014/EE CS-2014-12.html

Notas do Editor

  • #8: Pedir atenção