O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

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

618 visualizações

Publicada em

A palestra contém os seguintes tópicos: - Introdução - Histórico: MapReduce e Hadoop (acho que tem um histórico em comum aí) - Buzz atual sobre Spark e Elasticsearch - Visão geral do Spark e GraphX - Visão geral do Elasticsearch 2.0 - Arquitetura Lambda e a aplicação - Código - Conclusões

Publicada em: Educação
  • Seja o primeiro a comentar

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

  1. 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. 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. 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. 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... ...
  5. 5. Globalcode – Open4education
  6. 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. 7. Globalcode – Open4education Qual é o problema? 100 ms 150 ms 200 ms
  8. 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. 9. Globalcode – Open4education Buzz atual sobre Spark e Elasticsearch
  10. 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. 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. 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)
  13. 13. Globalcode – Open4education Spark e GraphX
  14. 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. 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)
  16. 16. Globalcode – Open4education RDD no GraphX
  17. 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. 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. 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. 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. 21. Globalcode – Open4education Elasticsearch 2.0 Outras mudanças importantes: API Java Configurações Mudanças no Parent/Child
  22. 22. Globalcode – Open4education Arquitetura Lambda
  23. 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. 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. 25. Globalcode – Open4education Ambiente de desenvolvimento Eclipse Scala IDE Maven Instalar Spark Instalar Elasticsearch
  26. 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. 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. 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. 29. Globalcode – Open4education Código – Spark Context
  30. 30. Globalcode – Open4education Código – Criar grafo
  31. 31. Globalcode – Open4education Código – Armazenar grafo Scala
  32. 32. Globalcode – Open4education Código – Calcular PageRank
  33. 33. Globalcode – Open4education Código – Elasticsearch Mapeamento
  34. 34. Globalcode – Open4education Código – Elasticsearch Busca - Unificação de query/filter Pipeline de agregações
  35. 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. 36. Globalcode – Open4education Código – query/filter Buscar usuários de acordo com seus seguidores:
  37. 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
  38. 38. Globalcode – Open4education Execução
  39. 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. 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. 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. 42. Globalcode – Open4education O que ver mais? Spark: MLlib Streaming R Elasticsearch: Kibana Logstash
  43. 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. 44. Globalcode – Open4education Referências Ótima apresentação sobre GraphX http://stanford.edu/~rezab/nips2014workshop/slides/ank ur.pdf

×