Introdução a Big Data e Apache Solr

1.451 visualizações

Publicada em

Apresentação para introduzir alunos a Big Data, mostrando conceitos e um exemplo prático com Java e Apache Solr. Pode ser utilizado por alunos, professores e profissionais de TI que queiram entender de forma prática Big Data.

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.451
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1.113
Ações
Compartilhamentos
0
Downloads
4
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Introdução a Big Data e Apache Solr

  1. 1. Big Data – Visão Geral e Apache Solr Juliano Marcos Martins – juliano.jmm@gmail.com http://jmmwrite.wordpress.com
  2. 2. 2 Disclaimer Esta apresentação NÃO FOI cuidadosamente revisada e por isso não esta livre de erros. Toda critica será muito bem aceita ;) As opiniões aqui apresentadas são de minha responsabilidade e não tem relação com as empresas/Instituições nas quais trabalhei/trabalho ou tive qualquer tipo de relacionamento.
  3. 3. 3 A quem se destina Esta apresentação é destinada a estudantes e profissionais de TI que estão iniciando o contato com Big Data. As explicações e exemplos podem ser superficiais para quem já conhece um pouco sobre o TEMA, inclusive, utilizando termos que visam a didática.
  4. 4. 4 Big Data “Data is a new Class of economic asset, like currency or gold.” Davos, Suiça, 2012 – World Economic Summit
  5. 5. 5 Introdução Tecnologia + Metodologia para → Capturar, Armazenar e Analisar dados 5 Vs Volume Velocidade Variedade Veracidade Valor Finalidade: dar subsidios para tomadas de decisão Muitos dados, Pouca informação
  6. 6. 6 Exemplo Análise de sentimento com dados da Web e sociais Departamentos de marketing usam feeds do Twitter para realizar análise de sentimento e determinar o que os usuários estão falando sobre a empresa e seus produtos ou serviços, especialmente após o lançamento de um novo produto ou release. O sentimento do cliente deve ser integrado aos dados de perfil do cliente para derivar resultados significativos. O feedback do cliente pode variar de acordo com seus aspectos demográficos. Objetivo: direcionar a empresa em lançamentos de promoções.
  7. 7. 7 Exemplo Fraudes em plano de saúde, abertura de contas O case Abertura de conta
  8. 8. 8 ONDE,OQUÊ,QUANDO? Dados Estruturados Dados Não Estruturados Armaz.Distribuído Machine Learning, Data Mining Classificação: SVM, Naive-Bayes, logistic regression, K-nearest Regressão: Linear (lasso, ridge), polinomial, etc Clustering: K-means, Spectral clustering, etc Redução Dimensional: Isomap, kernel aprox, PCA, singular value decomposition Árvores de Decisão Random Forests Análise de Associação: Apriori, FP- growth Modelo Escondido de Markov Não supervisionados Supervisionados ContínuoCategórico ETL¹/MR² DADOS ANÁLISE 1. ETL: Extract, Transform and Load 2. MR: Map Reduce Data WareHouse, Sistemas Legados, Main Frame Dispositivos, SMS, Redes Sociais, Áudio, Vídeo, Geo, Logs DATA VISUALIZATION - SEARCH Copiado livremente da Apresentação de José Damico – FEMA – Set, 2015
  9. 9. 9 Respostas rápidas Um pouquinho sobre performance Como suportar uma aplicação e dar feedbacks em “tempo real” para os tomadores de decisão, tendo em vista o volume e a velocidades com os quais os dados mudam? Um banco de dados suportaria a aplicação? Conhecendo um pouco sobre bases OLTP e DW, exemplo de sistema de billing.
  10. 10. 10 Tecnologias Datasources: Facebook, Twitter, Blogs, Aplicações, bancos, Devices (IoT), etc... Banco de dados NoSQL (Not only Structured Query Language) – MongoDB, Cassandra, Hbase Processamento distribuido: Apache Hadoop/HDFS, Hive, Impala, Pig Análise: R, Pentaho, Python Recursos na nuvem (sob demanda elástico) Watson Explorer e Apache Solr
  11. 11. 11 O Profissional O profissional big data (Data Scientist) deve ser multidisciplinar (matemática, estatística, modelagem, reconhecimento de padrões, IA, DW, ETL, High Performance Computation, etc).
  12. 12. 12
  13. 13. 13 Introdução http://lucene.apache.org/solr/ O que é o Apache Solr? “Solr is highly reliable, scalable and fault tolerant, providing distributed indexing, replication and load-balanced querying, automated failover and recovery, centralized configuration and more. Solr powers the search and navigation features of many of the world's largest internet sites.” Por que Apache Solr? Livre Leve Boa documentação
  14. 14. 14 Conceitos Collection Documents Shards: A subset of data that is assigned to a server. Collections can have multiple Shards. Node Replica: Mirror!
  15. 15. 15 Conceitos Craw – Push – Post – Schedule Formas de se efetuar Push Index Transform Search
  16. 16. 16 Field x Facet We can simple define that the field represent the data itself, and the facet its such a GROUP, combined usually by volume. As described at Solr documentation “faceting is the arrangement of search results into categories based on indexed terms”. Every Facet have index to be searchable. Its possible to configure FACETS with many options like sort, searchable, etc. Each product have its possibilities. Think that when you perform a query, you will use FACETs in the “Where”, something like this: Select FIELDS from COLLECTION where FACET MY_FACET = ‘dummy’;
  17. 17. 17 Facet Example Price
  18. 18. 18 Passo a Passo Baixar o solr (http://lucene.apache.org/solr/ ) Descompactar ( tar -xvzf solr-6.0.0.tgz ) (at Linux)
  19. 19. 19 Passo a Passo Rodar: bin/solr start -e cloud -noprompt (pode demorar alguns minutos para iniciar – aguarde finalizar)
  20. 20. 20 Passo a Passo Abra no navegador o Admin Console: http://localhost:8983/solr
  21. 21. 21 Passo a Passo Postando dados: bin/post -c gettingstarted docs/ (docs - pdf, etc) bin/post -c gettingstarted ../example/exampledocs/*.xml (produtos, etc)
  22. 22. 22 Passo a Passo Efetuando buscas (observe que o nome da Collection esta na URL) http://localhost:8983/solr/gettingstarted/browse
  23. 23. 23 Projeto Java Criaremos um projeto Maven simplesmente pela facilidade de baixar as dependencias. Caso não conheça Maven, basta criar um projeto Java comum, e baixar as dependencias abaixo, colocando no build path do projeto (as versões podem mudar): Utilizaremos a biblioteca SolrJ! http://wiki.apache.org/solr/Solrj1.3
  24. 24. 24 Projeto Java Criar projeto Maven, adicionar as dependencias no pom.xml <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <artifactId>solr-solrj</artifactId> <groupId>org.apache.solr</groupId> <version>4.1.0</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.2</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> </dependencies>
  25. 25. 25 Projeto Java – Classe Exemplo (consulta) package com.ibm.solr; import java.net.MalformedURLException; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrServer; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; public class SolrJExample { public static void main(String[] args) throws MalformedURLException, SolrServerException { // Busca por termo na collection HttpSolrServer server = new HttpSolrServer("http://localhost:8983/solr/gettingstarted"); SolrQuery query = new SolrQuery(); //query.setQuery( ""Buscar Frase Completa""); query.setQuery( "id:id1"); //query.setQuery( "*.*"); //buscar tudo query.setFields("name","price"); // limitando campos na resposta query.setStart(0); QueryResponse queryResponse = server.query(query); for(SolrDocument document: queryResponse.getResults()){ System.out.println(document); } } }
  26. 26. 26 Projeto Java – Classe Push package com.ibm.solr; import java.io.IOException; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrServer; import org.apache.solr.common.SolrInputDocument; public class SolrTest2 { public static void main(String[] args) throws SolrServerException, IOException { HttpSolrServer server = new HttpSolrServer("http://localhost:8983/solr/gettingstarted"); SolrInputDocument doc1 = new SolrInputDocument(); doc1.addField( "id", "id1" ); doc1.addField( "name", "Celular do Juliano"); doc1.addField( "manu", "Fabrica do Celular do Juliano"); doc1.addField( "price", 10 ); doc1.addField( "popularity", 10 ); server.add(doc1); } }
  27. 27. 27 Projeto Java Rodando a classe de consulta, iremos buscar os documentos que contenham os critérios definidos. A classe de Post, “insere” os dados no Solr. Recomendo efetuar posts com seus dados e após isso, brincar com as buscas mudando critérios, etc. Os proximos passos em seus estudos podem ser: Criar um campo facet e efetuar buscas nele Criar uma collection manualmente, e pesquisar como fazer push a partir e dados de um banco de dados Criar uma aplicação WEB que exibe os dados do solr e permite efetuar buscas.
  28. 28. 28 Limpando o Solr bin/solr stop -all ; rm -Rf example/cloud/
  29. 29. 29 All text and image content in this document is licensed under the Creative Commons Attribution-Share Alike 3.0 License (unless otherwise specified). Adobe, Google, Apple, Apache, and other are registered trademarks. Their respective logos and icons are subject to international copyright laws. Thank you … … for your dedication and patience!

×