Big Data – Visão Geral e Apache Solr
Juliano Marcos Martins – juliano.jmm@gmail.com
http://jmmwrite.wordpress.com
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
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
Big Data
“Data is a new Class of economic asset, like
currency or gold.” Davos, Suiça, 2012 – World
Economic Summit
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
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
Exemplo
Fraudes em plano de saúde, abertura de contas
O case Abertura de conta
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
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
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
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
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
Conceitos
Collection
Documents
Shards: A subset of data that is assigned to a server. Collections
can have multiple Shards.
Node
Replica: Mirror!
15
Conceitos
Craw – Push – Post – Schedule
Formas de se efetuar Push
Index
Transform
Search
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
Facet Example
Price
18
Passo a Passo
Baixar o solr (http://lucene.apache.org/solr/ )
Descompactar ( tar -xvzf solr-6.0.0.tgz ) (at Linux)
19
Passo a Passo
Rodar: bin/solr start -e cloud -noprompt
(pode demorar alguns minutos para iniciar – aguarde finalizar)
20
Passo a Passo
Abra no navegador o Admin Console: http://localhost:8983/solr
21
Passo a Passo
Postando dados:
bin/post -c gettingstarted docs/
(docs - pdf, etc)
bin/post -c gettingstarted ../example/exampledocs/*.xml
(produtos, etc)
22
Passo a Passo
Efetuando buscas (observe que o nome da Collection esta na URL)
http://localhost:8983/solr/gettingstarted/browse
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
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
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
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
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
Limpando o Solr
bin/solr stop -all ; rm -Rf example/cloud/
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!

Introdução a Big Data e Apache Solr

  • 1.
    Big Data –Visão Geral e Apache Solr Juliano Marcos Martins – juliano.jmm@gmail.com http://jmmwrite.wordpress.com
  • 2.
    2 Disclaimer Esta apresentação NÃOFOI 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 A quem sedestina 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 Big Data “Data isa new Class of economic asset, like currency or gold.” Davos, Suiça, 2012 – World Economic Summit
  • 5.
    5 Introdução Tecnologia + Metodologiapara → 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 Exemplo Análise de sentimentocom 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 Exemplo Fraudes em planode saúde, abertura de contas O case Abertura de conta
  • 8.
    8 ONDE,OQUÊ,QUANDO? Dados Estruturados Dados Não Estruturados Armaz.Distribuído MachineLearning, 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 Respostas rápidas Um pouquinhosobre 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 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 O Profissional O profissionalbig data (Data Scientist) deve ser multidisciplinar (matemática, estatística, modelagem, reconhecimento de padrões, IA, DW, ETL, High Performance Computation, etc).
  • 12.
  • 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 Conceitos Collection Documents Shards: A subsetof data that is assigned to a server. Collections can have multiple Shards. Node Replica: Mirror!
  • 15.
    15 Conceitos Craw – Push– Post – Schedule Formas de se efetuar Push Index Transform Search
  • 16.
    16 Field x Facet Wecan 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.
  • 18.
    18 Passo a Passo Baixaro solr (http://lucene.apache.org/solr/ ) Descompactar ( tar -xvzf solr-6.0.0.tgz ) (at Linux)
  • 19.
    19 Passo a Passo Rodar:bin/solr start -e cloud -noprompt (pode demorar alguns minutos para iniciar – aguarde finalizar)
  • 20.
    20 Passo a Passo Abrano navegador o Admin Console: http://localhost:8983/solr
  • 21.
    21 Passo a Passo Postandodados: bin/post -c gettingstarted docs/ (docs - pdf, etc) bin/post -c gettingstarted ../example/exampledocs/*.xml (produtos, etc)
  • 22.
    22 Passo a Passo Efetuandobuscas (observe que o nome da Collection esta na URL) http://localhost:8983/solr/gettingstarted/browse
  • 23.
    23 Projeto Java Criaremos umprojeto 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 Projeto Java Criar projetoMaven, 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 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 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 Projeto Java Rodando aclasse 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 Limpando o Solr bin/solrstop -all ; rm -Rf example/cloud/
  • 29.
    29 All text andimage 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!