Você está na página 1de 41

Santos Joao Pires Dos / jpsantos@sefaz.es.gov.

br

Especialista Elastic Stack


Introdução e Fundamentos
2

Objetivos
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br
3
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Objetivos

O que é o Elastic Stack e


1 sua História

Relação Elastic e Apache


2 Lucene

O que é Inverted
3 Index(Índice Invertido)

Conceitos básicos (Cluster,


4
Nodes, Shards e Replicas)
4

O que é o Elastic Stack e sua História?


Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br
5
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

O criador e o começo de tudo


Em 2004 Shay inicia o
Compass
Shay Banon
“Na época, eu era recém-casado e me
mudei para Londres para sustentar minha
esposa que tinha com sonho se tornar
chef. Eu estava desempregado e precisava
desesperadamente de um emprego, então
decidi brincar com tecnologias
“inovadoras” a fim de melhorar minhas
habilidades. Então eu decidi construir um
aplicativo que minha esposa pudesse usar
para capturar todo o conhecimento de
culinária que ela estava reunindo durante
suas aulas de chef.”
Entrevista ao site
https://jaxenter.com/elasticsearch-founder-interview-112677.html
6
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

O criador e o começo de tudo

“Fiquei completamente viciado


com o projeto, e estava
trabalhando nisso mais do que o
aplicativo de culinária em si, até
um ponto em que ele estava
tomando a maior parte do meu
tempo. Eu decidi abrir o código
alguns meses depois, e ele
imediatamente decolou.”
7
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

O criador e o começo de tudo



Ele criou "uma solução construída do zero para
ser distribuída" e usou uma interface comum,
JSON sobre HTTP, adequada para outras
linguagens de programação além de Java.

Lançou a primeira versão do Elasticsearch em
fevereiro de 2010.

A Elasticsearch BV foi fundada em 2012 para
fornecer serviços e produtos comerciais em torno
da Elasticsearch e software relacionado.


Em junho de 2014, capta US $ 70 milhões


Em março de 2015, a empresa Elasticsearch
mudou seu nome para Elastic.


Em junho de 2018, a Elastic solicitou uma oferta
pública inicial com uma estimativa estimada entre
1,5 e 3 bilhões de dólares. Em 5 de outubro de
2018, a Elastic foi listada na Bolsa de Valores de
Nova York.
8
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

O criador e o começo de tudo



Jordan Sissel estava trabalhando no Logstash,
uma ferramenta de processamento plugável de
código aberto para enviar logs para o
"esconderijo" da escolha do usuário, um dos
quais era o Elasticsearch. Ele também estava
desenvolvendo uma interface do usuário em cima
dela para visualizar dados de log - e era instável
na melhor das hipóteses.


Felizmente, outra pessoa estava mexendo no
desafio da visualização. Digite Rashid Khan, que
estava trabalhando em uma interface de usuário
de código aberto chamada Kibana.


Shay, Jordan e Rashid se conheciam há algum
tempo e decidiram se unir, resultando no ELK
Stack - Elasticsearch, Logstash e Kibana Stack.
9
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

O criador e o começo de tudo


“Eu escolhi muitas tecnologias diferentes
para este aplicativo de culinária, mas no
fundo, em minha mente, havia uma única
caixa de pesquisa em que a experiência
do conhecimento de culinária iniciava uma
única caixa em que digitar um conceito,
um pensamento ou um ingrediente”

“Isso me levou ao Lucene, que era a


biblioteca de pesquisa disponível para
Java na época.”

“Eu fiquei imerso nisso, e o Compass


nasceu do esforço de tentar simplificar o
uso do Lucene.”
10

Relação Elastic e Apache Lucene


Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br
11
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Lucene o Core do Elasticsearch

Doug Cutting Em 1999 Doug escreve o


Lucene

“Inicialmente ele disponibilizou o código


no site SourceForge e posteriomente
juntou-se a Apache Foundation em 2001 e
em 2005 passou a incorpora-lo em divesos
produtos como Solr, Tika, Mahout e Nutch

Fonte: https://en.wikipedia.org/wiki/Apache_Lucene
12
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Como funciona o Lucene?

Inverted Indexing(Indexação Invertida)


13
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Como funciona o Lucene?

Inverted Indexing(Indexação Invertida)


14
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Como funciona o Lucene?

Inverted Indexing(Indexação Invertida)


15
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Como funciona o Lucene?

Inverted Indexing(Indexação Invertida)


No modelo tradicional usamos o índice para buscar um conteúdo de dados. No índice
invertido buscamos uma parte do dado(termo) para buscar o índice ou os índices para
então buscar o dado completo.

Fazendo o exercício de busca por um palavra ou parte dela, teríamos que percorrer cada
documento para localizá-la, enquanto que, com o uso de um índice invertido, pode-se
procurá-la diretamente no índice e em quais documentos ela está associada.

Assim, o uso deste mecanismo permite que os resultados sejam obtidos de forma rápida
onde o desempenho tende a ser cada vez maior e mais significativo conforme aumenta a
quantidade de documentos a ser pesquisado.
O Elasticsearch usa então o Apache Lucene como Core que tem como mecanismo
de indexação e busca o índice invertido
16

Conceitos básicos do Elasticsearch


Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br
17
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Reflexão – RDBM ou NoSQL


SGBD NoSQL


Dados estruturados ●
Dados não estruturados(há

Estrutura geralmente de linhas controversia!!!)
e colunas ●
Estrutura geralmente de chave

Controle de Transação e valor

Escalibilidade complexa e ●
Controle de transação limitada
limitada ●
Escalabilidade simples

Capacidade de armazenamento ●
Capacidade alta de
baixa armanzenamento de dados


Foco em DW e BI ●
Foco em Big Data
18
Conceitos básicos do Elasticsearch
Cluster
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br
19
Conceitos básicos do Elasticsearch
Cluster
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br
20
Conceitos básicos do Elasticsearch
Cluster
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br
21
Conceitos básicos do Elasticsearch
Cluster
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br
22
Conceitos básicos do Elasticsearch
Cluster
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br
23
Conceitos básicos do Elasticsearch
Cluster
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br
24
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Conceitos básicos do Elasticsearch


Node e Tipos de Nodes
Toda vez que você inicia uma instância do Elasticsearch, você está iniciando um nó.

Um conjunto de nós conectados é chamado de cluster e se você estiver executando um


único nó do Elasticsearch, terá um cluster de um nó.

Cada nó no cluster responde chamadas HTTP que é o protocolo padrão do Elasticsearch


de comunicação com clientes externos.

O Elasticsearch provê APIs para comunicação com clientes usado o padrão REST e o
formato de requisição e resposta é em JSON. Então todo documento no Elastisearch é
armazenado no formato JSON.

Por isso o Elasticsearch é ORIENTADO A DOCUMENTO. Logo Ele é um SEARCH


ENGINE
25
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Conceitos básicos do Elasticsearch


Node e Tipos de Nodes
26
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Conceitos básicos do Elasticsearch


Node e Tipos de Nodes
27
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Conceitos básicos do Elasticsearch


Node e Tipos de Nodes

Um nó que possui o parâmetro node.master configurado como true (padrão), o torna


Master Node podendo controlar o cluster.

O Node Master é responsável por pequenas ações no cluster, como criar ou excluir um
índice, rastrear quais nós fazem parte do cluster e decidir quais shards devem ser alocados
para quais nós.

É importante que para manter a integridade do cluster tenha somente um Master Node
eleito, ou seja, apenas um controlando o cluster. Os demais Master node são para garantir
a alta disponibilidade e redundância em caso de falha do Node Master eleito.
28
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Conceitos básicos do Elasticsearch


Node e Tipos de Nodes
Os Data Nodes contêm os shards onde são armazenado os documentos

Os Data Nodes realiza as operações relacionadas ao armazenamento, indexação,


pesquisa e agregações. Fazem uso intensivo de I/O, memória e CPU.

Então é importante ter Data Nodes dedicados.

Para denifir um Data Node, configure o parâmentro node.data para true


29
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Conceitos básicos do Elasticsearch


Node e Tipos de Nodes
O Client Node agora assume um novo nome chamado de Coordinating Node, mas a sua
função não foi mudada.

O objetivo do Coordinating Node é rotear as requisições para os Data Nodes, ou seja,


funciona como um balanceador inteligente que se junta ao cluster e recebe o estado do
cluster roteando as requisições para o local correto e utilizado em cluster com muitos Data
Nodes. Para habilitar um Coordinating Node basta ajustar para false os parâmetros:
node.master, node.data e node.ingest
30
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Conceitos básicos do Elasticsearch


Node e Tipos de Nodes
Os Ingest Node tem a função de executar pipelines para tratamento de documentos,
composto por um ou mais processadores de entrada. Fazendo uma analogia com BI o
Ingest Node teria a função de um ETL transformado os dados antes de ser efetivamente
gravados.

O Ingest Node faz sentido quando temos operações de transformações simples para uma
alta carga de ingestão dedicando-o somente essa tarefa específica.

Para criar Ingest Node basta configurar o parâmetro node.ingest para true
31
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Conceitos básicos do Elasticsearch


Node e Tipos de Nodes
Tribe Node permite que um Node
atue como cliente conectando a
um ou mais clusters
Elasticsearch.

Ele recupera o estado dos


clusters e mesclando-os em um
cluster global permitindo executar
consultas e gravação de forma
transparente.

Tribe Node foi descontinuado na


versão 6 do Elasticsearch
32
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Conceitos básicos do Elasticsearch


Index e Type
Um índice é armazenado em um conjunto de shards, que são índices/instâncias
próprios do Lucene.
Fazendo uma analogia
a um SGBD, o Indice
seria o banco de
dados

Pode-se particionar
indices baseado em
tempo, tamanho ou
qualquer outro modelo
33
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Conceitos básicos do Elasticsearch


Index e Type
Um Type no Elasticsearch representa uma classe de documentos semelhantes. Similar
a uma table de uma SGDB. Possui o mesmo propósito que uma tabela de um banco de
dados tradicional.

O Type possui o mapeamento que descreve os campos e seu tipo dentro do indice
como: tipo string, integer, float ou date e como esses campos devem ser indexados e
armazenado pelo Lucene.
34
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Conceitos básicos do Elasticsearch


Shards e Replicas
Um indice pode conter bilhões de documentos e
isso pode exceder os limites do hardware.
Exemplo: um único indice pode bilhões de
documentos ocupando 1TB em um único disco
e em um único nó. Podendo causar uma série
de problemas com lentidão em leitura e
gravação de dados.

Para resolver esse problema o Elasticsearch


fonece a capacidade de subdividir o índice em
shards. Você pode definir a quantidade de
shards no momento da criação do índice da
seguinte forma:
35
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Conceitos básicos do Elasticsearch


Shards e Replicas

Em um ambiente de grande ou crítico onde as falhas podem acontecer a qualquer


momento, é muito útil e altamente recomendável ter um mecanismo de failover no caso
de um shard/node ficar indisponível. Para isso e Elasticsearch o mecanismo de replicas
de shards que garante a disponibilidade e tolerancia a falhas caso um shard/node fique
indisponível. Para habilitar esse mecanismo basta adicionar na criação do índice ou
mesmo depois o parâmentro: number_of_replicas
36
Laboratório
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br
37
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Laboratório
Vamos agora instalar o Elasticsearch! Para isso vamos baixa-ló do site
oficial na seguinte url
Download do pacote RPM da versão 6.3.1 para RedHat/CentOS versão 7
1 # cd /opt
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.rpm

Instalando o Elasticsearch
2 # yum install elasticsearch-6.3.1.rpm

Ativando e Iniciando Elasticsearch


3 # systemctl enable elasticsearch
# systemctl start elasticsearch
38
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Laboratório

Verificando se o Elasticsearch inciou corretamente


4 # yum install curl
# curl -X GET http://localhost:9200?pretty

Verificado se as portas do Elasticsearch estão em Listen


5 # netstat -lntp | grep 9200

Verificando os logs do Elasticsearch


6 # tail -n 50 /var/log/elasticsearch/*.log
39

Revisão
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br
40
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Objetivos do treinamento

O que é o Elastic Stack e


1 sua História

Relação Elastic e Apache


2 Lucene

O que é Inverted
3 Index(Índice Invertido)

Conceitos básicos (Cluster,


4
Nodes, Shards e Replicas)
41

Fim
Santos Joao Pires Dos / jpsantos@sefaz.es.gov.br

Você também pode gostar