introdução aos sistemas distribuídos on-line para processamento de fluxos de dados – parte ii
TRANSCRIPT
Introdução aos sistemas distribuídos on-line para processamento de fluxos de dados – Parte IIPROF. ANDRÉ LEON S. GRADVOHL, [email protected]
7/agosto/2015
2
Plano de apresentação• Sobre o Palestrante.• Histórico e motivação para a utilização de Complex Event
Processing – CEP systems.• Definição de sistemas CEP e conceitos importantes. • Questões de tolerância a falhas envolvidas em sistemas
CEP.• Questões de escalabilidade envolvidas em sistemas CEP.• Principais sistemas CEP e suas características.• Perspectivas de pesquisa e desenvolvimento na área de
sistemas distribuídos para processamento de fluxos de dados.
Parte I
Parte II
3
Recapitulação• Sistemas distribuídos para processamento online de
eventos complexos• Arquitetura genéricaSistema de Processamento de
Eventos
001001100110010010001011
Fluxo de dados
Esses vértices são operadores. Eles
realizam computações
simples.Esses arcos são
fluxos de dados.
Eventualmente, alguns
operadores salvam dados
em disco.
Alguns operadores podem estar juntos
no mesmo nó de processamento.
Os fluxos de dados podem vir de
diferentes fontes (e. g. sites, celulares,
sensores)
<key_1, value_A><key_2, value_B><key_3, value_C>
Dados são processados pelos operadores e podem ser
transformados por eles, antes de serem enviados a outros operadores.
O grafo acíclico direcionado é a
topologia do sistema.
4
Conceitos importantes sobre escalabilidade • Escalabilidade é a capacidade de um sistema para lidar com uma
quantidade crescente de trabalho de uma maneira capaz; ou
• Escalabilidade é a sua capacidade de um sistema aumentar seus recursos para acomodar esse crescimento.• Sistemas CEP recebem como entrada um ou mais fluxos de dados
(streams).• Nem sempre os fluxos têm a mesma vazão (throughput) ;• Nem sempre os dados no fluxo são “comportados” (mesmo tipo, mesmo formato)
e podem conter “outliers”.• As vezes os fluxos vêm em “burst” (um fluxo muito maior que o habitual em um
curto período).
5
Conceitos importantes sobre escalabilidade e elasticidade em Sistemas CEP• Em sistemas CEP, especialmente naqueles implementados na
nuvem computacional, também há o conceito de elasticidade!
• Escalabilidade e elasticidade são conceitos diferentes!!• A elasticidade é a capacidade do sistema reagir às demandas por
processamento, aumentando ou diminuindo a alocação de recursos computacionais conforme as exigências.• Escalabilidade é planejada, enquanto elasticidade é sob demanda.
Cuidado!!!
6
Conceitos importantes sobre escalabilidade e elasticidade em Sistemas CEP• Por exemplo, caso o throughput aumente o sistema tem que
aumentar a capacidade de processamento e evitar o descarte de tuplas. • Caso o throughput diminua, o sistema pode retornar ao seu
tamanho original.• Em um cluster local, a elasticidade pode contribuir com...• Economia de energia (menos CPUs ou cores trabalhando, menos memória);• Menos recursos utilizados (e mais recursos disponíveis a outros usuários que
compartilham o sistema).
7
Conceitos importantes sobre escalabilidade e elasticidade em Sistemas CEP• As seguintes operações ocorrem em sistemas escaláveis:• Scale Up / Scale Down;• Scale Out / Scale In;
• Scale Up / Scale Down ou escalabilidade vertical significa adicionais mais recursos computacionais ao sistema (CPU, memória etc).• Scale Out / Scale In ou escalabilidade horizontal significa adicionar
mais nós de processamento ao sistema.• No caso de sistemas CEP, vamos usar os termos Scale Out / Scale
In para designar o aumento ou redução, respectivamente, de operadores à topologia.
8
Como funciona a operação de Scale Out no Sistema SEEP
Master(Supervisor)
O Master ou supervisor coleta métricas dos nós de processamento (e
operadores), e.g. utilização de CPU/Memória; capacidade
das filas; throughput; latências etc;
O Master detecta um operador
sobrecarregado e decide pela
operação scale out.
O supervisor pega um novo operador
do conjunto disponível e copia o
estado desse operador para o
novo.
O estado do operador é composto pelos seus
estados de processamento, buffers
de entrada e saída e estado de roteamento.
9
Como funciona a operação de Scale in no Sistema SEEP• A operação de Scale in ainda é uma questão em aberto.• Em sistemas com operadores stateless, a operação de scale in
implica somente na atualização do estado de roteamento no operador upstream e na liberação dos recursos do operador que fez o scale out.• Em sistemas com operadores stateful, o grande problema é como
fazer a combinação dos estados dos operadores (original e scaled out).
10
Principais sistemas CEP e suas características
SistemaLinguagens de Programação suportadas
Estratégia para tolerância a falhas
Subsistema para tratar falhas.
MillWheel(Google)
Virtualmente qualquer linguagem de programação
Checkpoint não coordenado periódico; Upstream backup.
Nenhum, o sistema trata as falhas sozinho.
S4(Yahoo/Apache) Java Checkpoint não coordenado
periódico. ZooKeeper.
Spark Streaming(Apache) Java, Scala e Python
Checkpoint coordenado periódico; Replicação; Recuperação paralela.
Nenhum, o sistema trata as falhas sozinho.
Storm(Apache)
Virtualmente qualquer linguagem de programação
Upstream backup; Sem checkpoints. Nimbus, ZooKeeper.
SEEP(Imperial College) Java
Checkpoint não coordenado periódico; Replicação; Gerenciamento de estados.
Nenhum, o sistema trata as falhas sozinho.
11
Principais sistemas CEP• Spark Streaming• https://spark.apache.org/streaming
• Storm• https://storm.apache.org
• SEEP• http://lsds.doc.ic.ac.uk/projects/SEEP
Vejamos um exemplo usando SEEP. Na prática (programação), os outros sistemas funcionam de forma muito similar!
12
Exemplo SEEP – Criação da TopologiaDefinição dos
identificadores presentes nas tuplas.
Adição do Operador fonte de tuplas.
Operador, identificador do operador e identificadores
internos da tupla.Conexão dos
operadores entre si.
13
Exemplo SEEP – Operador SourceConector para troca de
mensagens.
Construção da tupla.Envio da tupla.
14
Exemplo SEEP – Operador Processor
Obtendo valores específicos da tupla.
15
Exemplo SEEP – Operador Sink
16
Exemplo SEEP – Definição de políticas de Scale out (in)
17
Perspectivas de pesquisa e desenvolvimento na área de Stream Computing e sistemas CEP.• Em um mundo superconectado, a pesquisa em Stream computing
tem várias ramificações atualmente:• Aplicações e Requisitos:• Métricas e avaliações de desempenho de sistemas CEP.• Aplicações em Clima Espacial, Monitoramento Ambiental, Mercado Financeiro,
Sensoriamento participativo etc.• Modelos, Arquiteturas e Paradigmas:• Adaptações dos algoritmos e modelos de mineração off-line (batch) para on-line
(stream). Por exemplo, algoritmos de associação, agrupamento, classificação.• Implementação do conceito de “Concept Drift” para stream computing.
• Middleware e infraestrutura• Criação de linguagens específicas para estabelecer queries em sistemas CEP.• Tolerância a falhas, disponibilidade e resiliência.
18
Pesquisas em andamento no Grupo HighPIDS.• As pesquisas em andamento no grupo HighPIDS são as seguintes:• Recommendation system for buying and selling on stock market using
Ensembles.• Aplicação de técnicas de ensemble para previsão de ciclos solares.• Predicting solar activity via artificial neural networks applied to flow data of X-
rays.• Fault tolerance and high availability in distributed online stream processing
systems (Microsoft).• Multi-dimensional analysis of online data stream processing systems (FAPESP
2015/01657-9).We need graduate students (Masters or
PhD) for this subject!!
19
Algumas Referências• Castro Fernandez, R. et al. Integrating scale out and fault tolerance in
stream processing using operator state management. In: Proceedings of the 2013 International Conference on Management of Data - SIGMOD ’13. New York, USA: ACM Press, 2013.
• GEDIK, B. et al. Elastic Scaling for Data Stream Processing. IEEE Transactions on Parallel and Distributed Systems, v. 25, n. 6, p. 1447–1463, 2014.
• Martin, A.; Fetzer, C.; Brito, A. Active replication at (almost) no cost. In: Proceedings of the IEEE Symposium on Reliable Distributed Systems. IEEE, out. 2011
• Pham, C. M. et al. An evaluation of zookeeper for high availability in system S. In: Proceedings of the 5th ACM/SPEC international conference on Performance engineering - ICPE ’14. New York, USA: ACM Press, 2014.
20
Perguntas? e Respostas!
21
Este material está disponível nos seguintes locais• Introdução aos sistemas distribuídos on-line para
processamento de fluxos de dados – Parte I• http://dx.doi.org/10.6084/m9.figshare.1500787
• Introdução aos sistemas distribuídos on-line para processamento de fluxos de dados – Parte II• http://dx.doi.org/10.6084/m9.figshare.1500786