Introdução aos sistemas distribuídos on-line para processamento de fluxos de dados – Parte II PR O F. A NDR É L E O N S . G R A DVO HL , D R . G R ADVO HL @FT.UNICAMP.BR 7/agosto/2015 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. Parte I • 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. Parte II • Perspectivas de pesquisa e desenvolvimento na área de sistemas distribuídos para processamento de fluxos de dados. 2 Recapitulação • Dados são processados pelos operadores e Sistemas distribuídos para online podem serprocessamento transformados por eles, antesde de eventos complexos serem enviados a outros operadores. • Arquitetura genérica Sistema de Processamento de Eventos Os fluxos de dados podem vir de diferentes fontes (e. g. sites, celulares, sensores) 001001100110 010010001011 Fluxo de dados <key_2, value_B> <key_1, <key_3, value_A> value_C> Alguns operadores podem estar juntos no mesmo nó de processamento. Esses vértices são operadores. Eles realizam computações simples. Esses arcos são fluxos de dados. O grafo acíclico direcionado é a topologia do sistema. Eventualmente, alguns operadores salvam dados em disco. 3 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). 4 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. 5 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). 6 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. 7 Como funciona a operação de Scale Out no Sistema SEEP 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. 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. Master (Supervisor) 8 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). 9 Principais sistemas CEP e suas características Sistema MillWheel (Google) S4 (Yahoo/Apache) Spark Streaming (Apache) Storm (Apache) SEEP (Imperial College) Linguagens de Programação Estratégia para tolerância a falhas suportadas Virtualmente qualquer linguagem Checkpoint não coordenado de programação periódico; Upstream backup. Checkpoint não coordenado Java periódico. Checkpoint coordenado periódico; Java, Scala e Python Replicação; Recuperação paralela. Virtualmente qualquer linguagem Upstream backup; Sem checkpoints. de programação Checkpoint não coordenado Java periódico; Replicação; Gerenciamento de estados. Subsistema para tratar falhas. Nenhum, o sistema trata as falhas sozinho. ZooKeeper. Nenhum, o sistema trata as falhas sozinho. Nimbus, ZooKeeper. Nenhum, o sistema trata as falhas sozinho. 10 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! 11 Exemplo SEEP – Criação da Topologia Definiçã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. 12 Exemplo SEEP – Operador Source Conector para troca de mensagens. Construção da tupla. Envio da tupla. 13 Exemplo SEEP – Operador Processor Obtendo valores específicos da tupla. 14 Exemplo SEEP – Operador Sink 15 Exemplo SEEP – Definição de políticas de Scale out (in) 16 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. 17 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). 18 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. 19 Perguntas? e Respostas! 20