Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Utilizando o Apache Kudu como Workload Analítico

Utilizando o Apache Kudu como Workload Analítico

Apresentação de Claudio Takamya e Alan Silva no Big Data Week São Paulo 2017 [http://sao-paulo.bigdataweek.com].

Um dos grandes desafios quando desenvolvemos um sistema de Workload Analítico em Tempo Real é trabalhar com dados que mudam de forma rápida em um intervalo de tempo muito baixo.
A proposta dessa apresentação é justamente demonstrar como o Apache Kudu pode facilitar a utilização desse tipo de caso de uso e ao final realizar uma demonstração na prática de uma solução que contempla essa questão.

Big Data Week São Paulo

October 21, 2017
Tweet

More Decks by Big Data Week São Paulo

Other Decks in Technology

Transcript

  1. 2 © Cloudera, Inc. All rights reserved. Alan Silva Ficha

    criminal • Cumpriu a primeira pena finalizando o seu Bacharelado em Matemática; • Reincidente, concluiu seu mestrado na UFSCar; • Trabalhou com arquitetura e desenvolvimento em algumas empresas de segurança da informação e telecomunicações; • Com o intuito de reduzir a pena, participou de forma voluntária em alguns projetos opensource; • Hoje atua como cúmplice direto na adoção de projetos com Big Data em grandes organizações; Silva Alan Senior Solutions Architect
  2. 3 © Cloudera, Inc. All rights reserved. Claudio Seidi Takamiya

    Ficha criminal • Cumpriu pena na Universidade de São Paulo - Bacharelado em Ciência da Computação • Solto por bom comportamento depois de 4 anos; • Fez parte do grupo de Arquitetura da Telefonica – Vivo. • Realiza PoC nas empresas; • Não coloca comentários em seu código; Takamiya Claudio Senior Systems Engineer
  3. 4 © Cloudera, Inc. All rights reserved. 01-13 © Copyright

    2010-2016 Cloudera. All rights reserved. Not to be reproduced or shared without prior written consent from Cloudera. § The leader in Apache Hadoop-based software and services –Founded by Hadoop experts from Facebook, Yahoo, Google, and Oracle § Provides support, consulting, training, and certification for Hadoop users –A global leader with 1,000+ employees spanning more than 20 countries § Staff includes committers to virtually all Hadoop projects –Many authors of industry standard books on Apache Hadoop projects About Cloudera (1)
  4. 5 © Cloudera, Inc. All rights reserved. Vendor Integration BI/Analytics

    ETL Database OS/Cloud/ System Management Hardware
  5. 6 © Cloudera, Inc. All rights reserved. ”Para quem só

    sabe usar martelo, todo problema é um prego” (Abraham Maslow)
  6. 7 © Cloudera, Inc. All rights reserved. Apache Kudu •

    Projeto licenciado e governado pela Apache Foundation (open source) • Utiliza modelo estruturado de dados • Baseado em tabelas • Suas tabelas são divididas em tablets (que é o equivalente a partições) • Sua arquitetura suporta uma distribuição dos dados de forma geografica, sistema ativo/ativo
  7. 8 © Cloudera, Inc. All rights reserved. O que o

    Apache Kudu é? STORAGE SYSTEM for TABLES of STRUCTURED DATA Não é um SQL engine, nem um query planner, nem um optimizer. Sistema de armazenamento que permite que você consiga recuperar seus dados rapidamente de forma randômica ou através de full scan e altamente escalável. A lógica de dados é apresentada ao cliente como linhas e um conjunto finito de colunas. Armazenado em formato colunar, as tabelas são particionadas sobre os tablets que são gerenciados pelos servidores de tablets. Os tablets são replicados e gerenciados através do conceito de consenso Raft. As colunas são altamente tipadas Numero finito de colunas Remover e adicionar colunas apenas por ALTER TABLE
  8. 9 © Cloudera, Inc. All rights reserved. Storage para Dados

    Analíticos Atualizáveis Analítico simples em real-time e atualizações com Apache Kudu Kudu: Storage para análises rápidas em “dados rápidos” • Simplifica arquitetura para construir aplicações analíticas real-time • Projetada para a próxima geração de hardware para um desempenho analítico superior através dos frameworks • Engine de Armazenamento nativo para o Ecossistema Hadoop Flexibilidade da ferramenta adequada para cada caso de uso em uma única plataforma • Base de Dados analítco: Kudu + Impala • Aplicações real-time simples com Kudu + Spark Casos de Uso • Dados de Séries Temporais • Analítico de Dados de Maquinas (IoT) • Relatórios Online (Online reporting) FILESYSTEM HDFS NoSQL HBASE INGEST – SQOOP, FLUME, KAFKA DATA INTEGRATION & STORAGE SECURITY – SENTRY RESOURCE MANAGEMENT – YARN UNIFIED DATA SERVICES BATCH STREAM SQL SEARCH MODEL ONLINE DATA ENGINEERING DATA DISCOVERY & ANALYTICS DATA APPS SPARK, HIVE, PIG SPARK IMPALA SOLR SPARK HBASE COLUMNAR STORE KUDU
  9. 10 © Cloudera, Inc. All rights reserved. O que o

    Kudu não é • Não é uma interface SQL • Somente a camada de armazenamento • “BYOSQL” – Bring-your-own SQL • Não é um sistema de arquivos • Os dados devem ter estrutura tabular • Não é uma aplicação que roda sobre o HDFS • Não é um substituto do HDFS ou do HBase • Sempre é necessário escolher qual a melhor forma de armazenamento para cada caso • Cloudera continuará investindo nos três
  10. 11 © Cloudera, Inc. All rights reserved. Interfaces do Kudu

    • APIs NoSQL-style • Insert(), Update(), Upsert(), Update-Ignore(), Delete(), Scan() • Java, C++, limited Python • Integrações com MapReduce, Spark e Impala • Sem acesso direto aos arquivos de tablet do Kudu • Possui suporte a autenticação, autorização e encriptação
  11. 12 © Cloudera, Inc. All rights reserved. Características de Performance

    Aproveita a CPU ao máximo • Escrito em C++, utiliza instruções SIMD e possui compilação JIT com LLVM A latência depende da capacidade do hardware • Esperado respostas em milisegundos com SSDs e tecnologias futuras Não possui garbage collection permitindo o gerenciamento de grandes footprints de memória sem pausas Bloom filters reduzindo a necessidade de vários acessos ao disco
  12. 13 © Cloudera, Inc. All rights reserved. HDFS Fast Scans,

    Analítico e Processamento de Dados Armazenados Atualizações rápidas on-line & Serviço de dados Armazenamento (Active Archive) Análises Rápidas (em dados que mudam muito rapidamente ou atualizados frequentemente) Onde o Kudu se encaixa Casos de uso que ficam entre HDFS e HBase são difíceis de gerenciar Estático Mudanças Rápidas Atualizações Frequentes HBase Append-Only Real-Time Arquitetura Híbrida Complexa Gap Analítico Rítmo das Análises Rítmo dos Dados
  13. 14 © Cloudera, Inc. All rights reserved. HDFS Fast Scans,

    Analítico e Processamento de Dados Armazenados Atualizações rápidas on-line & Serviço de dados Armazenamento (Active Archive) Análises Rápidas (em dados que mudam muito rapidamente ou atualizados frequentemente) Onde o Kudu se encaixa Casos de uso que ficam entre HDFS e HBase são difíceis de gerenciar Estático Mudanças Rápidas Atualizações Frequentes HBase Append-Only Real-Time Gap Analítico Rítmo das Análises Rítmo dos Dados Cobertura Aplicações Analíticas Modernas geralmente requerem fluxo complexo de dados & dificuldade de integrar Hbase & HDFS
  14. 15 © Cloudera, Inc. All rights reserved. Em que situações

    o Kudu é indicado? Uma combinação simultânea de leituras e escritas sequencias e randômicas Consegue inserir dados de séries temporais em real time? Quanto demora a preparação da análise? Os resultados saem em tempo hábil para tomar alguma ação? Consegue lidar com grandes volumes de dados gerados por máquinas? Tem ferramentas para identificar ameaças? Seu sistema consegue fazer machine learning? Quão rápido você adiciona os seus dados para seu banco de dados? Você está enfrentando um tradeoff entre a capacidade de realizar análises amplas e a capacidade de fazer atualizações? Você omite dados? Dados de Séries Temporais Analítico em Dados de Máquinas Online Reporting
  15. 16 © Cloudera, Inc. All rights reserved. Melhor forma de

    usar Kudu se beneficia com a Integração com o ecossistema Hadoop Spark – Stream Processing para Kudu • Padrão aberto para processamento em stream; • Eficaz em automação de processo de decisão e Machine Learning; • Casos de Usos: Dados de Séries Temporais & Machine Data Analytics Impala – High-Performance BI & SQL para Kudu • Padrão aberto para queries SQL interativas; • Capacidade de carga de trabalho de banco de dados analítico com flexibilidade, escalabilidade e arquitetura aberta • Casos de uso incluso: Online Reporting
  16. 17 © Cloudera, Inc. All rights reserved. LSM vs Kudu

    • LSM – Log Structured Merge (Cassandra, HBase, etc) • Inserts and updates all go to an in-memory map (MemStore) and later flush to on-disk files (HFile/SSTable) • Reads perform an on-the-fly merge of all on-disk HFiles • Kudu • Shares some traits (memstores, compactions) • More complex. • Slower writes in exchange for faster reads (especially scans)
  17. 18 © Cloudera, Inc. All rights reserved. ”Hoje não vou

    dar, vou é distribuir” (Filme :Bruna Surfistinha, 2011)
  18. 19 © Cloudera, Inc. All rights reserved. Arquitetura do Kudu

    Principais componentes Kudu • É um engine de armazenamento standalone • Armazena dados ”tipados” em modelo tabular para acessos rápidos • Tabelas Kudu são tipicamente de terabytes ou petabytes de tamanho • O design do Kudu é para acesso randômico e queries analíticas em dados estruturados: ü É possível realizar varreduras (scans), pesquisas randômicas, e atualizações nos dados em tabelas. • Os dados armazenados no Kudu são organizados em tabelas: ü As tabelas são particionadas em pedaços menores chamados de tablets ü Os tablets são armazenados nos servidores Kudu Tablet
  19. 20 © Cloudera, Inc. All rights reserved. Arquitetura do Kudu

    Formato colunar e Tipos Explícitos Kudu • Os tipos de dados em Kudu são explicitos: ü Diferente do estilo NoSQL ”tudo é byte” ü Possibilita o uso de codificações específicas por tipos de colunas, ex: bit-packing para inteiros; • Tipos explícitos facilita a disponibilização de metadados no estilo SQL para outras ferramentas usadas em BI ou ferramentas de exploração de dados A B C A1 B1 C1 A2 B2 C2 A3 B3 C3 A1 A2 A3 B1 B2 B3 C1 C2 C3 A1 B2 C1 A2 B2 C2 A3 B3 C3 Kudu: armazenamento baseado em colunas Banco de dados relacional: armazenamento baseado em linha
  20. 21 © Cloudera, Inc. All rights reserved. Arquitetura do Kudu

    Acesso e Ingestão de Dados • O Kudu possui conectores que suportam diversos engines SQL: ü Apache Impala ü Spark SQL • Junto com o Kudu é empacotado um componente Sink para o Apache Flume • Um conector Apache Sqoop para Kudu já está disponível com um patch Apache Impala Conectores SQL Sink
  21. 22 © Cloudera, Inc. All rights reserved. Modelando tabelas para

    Kudu Critérios de um bom design Critérios: • Os dados devem ser distribuídos de forma que a leitura e a gravação sejam espalhadas uniformemente entre os tablet servers (Particionamento); • Os tablets devem ter um crescimento a uma taxa uniforme e a carga deve ser uniforme entre os tablets (Particionamento); • Os ”scans” devem ler o mínimo de dados necessários para atender uma query (Desenho da chave primária);
  22. 23 © Cloudera, Inc. All rights reserved. Seleção de Chave

    Primária • Exemplo – Série Temporal: • ”time” - timestamp • ”series” - {region, server, metric} (us-east.appserver01.loadavg, 2016-05-09T15:14:00Z) (us-east.appserver01.loadavg, 2016-05-09T15:15:00Z) (us-west.dbserver03.rss, 2016-05-09T15:14:30Z) (us-west.dbserver03.rss, 2016-05-09T15:14:30Z) (2016-05-09T15:14:00Z, us-east.appserver01.loadavg) (2016-05-09T15:14:30Z, us-west.dbserver03.rss) (2016-05-09T15:15:00Z, us-east.appserver01.loadavg) (2016-05-09T15:14:30Z, us-west.dbserver03.rss) (series, time) (time, series) SELECT * WHERE series = ‘us-east.appserver01.loadavg’;
  23. 24 © Cloudera, Inc. All rights reserved. Particionamento — Por

    Range de Tempo (inserts) Todas as inserções vão para a última partição Big scans (entre um intervalo grande) Podem ser paralelizados entre várias partições
  24. 25 © Cloudera, Inc. All rights reserved. Particionamento — Por

    Range de Séries Inserções são distribuídas entre as partições Scans ocorrem sobre uma única partição
  25. 26 © Cloudera, Inc. All rights reserved. Partições podem ser

    tornar desbalanceadas, Resultando em hot spotting Particionamento — Por Range de Séries
  26. 27 © Cloudera, Inc. All rights reserved. Particionamento — Por

    Hash de Séries (inserts) Inserções são distribuídas entre as partições O scan é sobre uma única partição
  27. 28 © Cloudera, Inc. All rights reserved. Particionamento — Por

    Hash de Séries Com o tempo as partições crescem com o tempo, e eventualmente serão grandes demais para em um único servidor.
  28. 29 © Cloudera, Inc. All rights reserved. Particionamento— Por Hash

    de Séries + Range de Tempo Inserções podem ser distribuídas entre todas as partições no último range de tempo. Big scans (entre um intervalo grande de tempo) pode ser paralelizado entre as partições
  29. 30 © Cloudera, Inc. All rights reserved. Beneficios do Kudu

    Benefícios: • Simplifica bastante a arquitetura da solução. Na Arquitetura Lambda a ingestão dos dados é simplificada, pois não é necessária a materialização de várias views; • O acoplamento da aplicação Web é muito menor. Não é necessário a criação de nenhuma tabela para uma nova visão (query) e pode usar o SQL para realizar as consultas. Com o Hbase seria necessário usar a API Java ou Thrift; • O Kudu já está preparado para a próxima geração de Hardware, tirando melhor proveito de SSD e Persistent Memory (3D Xpoint);
  30. 31 © Cloudera, Inc. All rights reserved. PRODUCER KAFKA Tópico

    Evento 1 Tópico Evento 2 Regra de Negócio (Streaming) Broker de mensagens Armazenamento Engine MPP Exemplo: Caso de uso ideal para Kudu Arquitetura sem Kudu – Analítico: Relatório Online JDBC Dashboard Web É Possível, também...
  31. 32 © Cloudera, Inc. All rights reserved. Exemplo: Caso de

    uso ideal para Kudu Arquitetura antes do Kudu – Analítico: Relatório Online PRODUCER KAFKA Tópico Evento 1 Tópico Evento 2 Regra de Negócio (Streaming) Broker de mensagens Armazenamento Engine MPP Dashboard Web JDBC Batch Layer Serving Layer Speed Layer Stream de dados Spark Stream Processo Stream Incrementa as views Adição de novos dados View 1 View 2 View 3 Hbase (Real Time) View 1 View 1 View 1 Impala (Parquet) HDFS Job Batch (Spark - Transformação em formato Parquet) Processamento Batch recorrente merge Spark Query Arquitetura
  32. 33 © Cloudera, Inc. All rights reserved. Exemplo: Caso de

    uso ideal para Kudu Qual o desafio? Complexidade: • Vários componentes para equilibrar; • Forte acoplamento da aplicação; • Difícil manutenção.
  33. 34 © Cloudera, Inc. All rights reserved. Entendendo a complexidade

    HBase Alguns princípios para modelagem Hbase: • Desenho da solução por caso de uso: • Leitura, Gravação ou Ambos; • Design de Schema é a combinação de: • Design de chaves (linha e coluna); • Segregação de dados em ”column families”; • Escolha de compressão e tamanho de blocos; • ”Denormalization, Duplication, and Intelligent Keys” - DDI
  34. 35 © Cloudera, Inc. All rights reserved. Entendendo a complexidade

    HBase Chave-Valor Ignora Linhas Ignora Store Files Filtro Chave Desempenho Aumenta a Cardinalidade
  35. 36 © Cloudera, Inc. All rights reserved. Entendendo a complexidade

    HBase ID CLIENTE 1 José 2 Luis 3 Hugo Tabela: Clientes ID LIVRO 1 Guerra dos Tronos: As crônicas do Fogo e Gelo 2 Senhor dos Anéis: A sociedade do Anel 3 O Hobbit 4 Harry Potter e a Câmara Sec.. Tabela: Livros id Id_cli Id_livro data 1 1 2 15/07/2015 2 1 3 11/10/2016 3 2 1 22/03/2016 4 3 1 13/06/2017 5 3 4 11/09/2016 Tabela: Compras key Id_cli Dt_livro:1 Dt_livro:2 Dt_livro:3 Dt_livro:4 1 1 15/07/2015 11/10/2016 2 2 22/03/2016 3 3 13/06/2017 11/09/2016 CF:f1
  36. 37 © Cloudera, Inc. All rights reserved. Entendendo a complexidade

    HBase Complicações: • Dificuldade de criar um modelo que atenda todas as visões para o relatório online; • Para oferecer uma leitura rápida para aplicações Webs, ou análise dados online, podemos usar jobs MapReduce para criar tabelas otimizadas para leitura (dados desnormalizados); • Novas visões podem exigir mudanças nos Jobs MapReduce; • A aplicação Web (Relatório Online) está fortemente acoplado ao modelo das tabelas do HBase.
  37. 38 © Cloudera, Inc. All rights reserved. Onde o Kudu

    se aplica? Financeiro/Seguros • Stream market data • Detecção e Prevenção de Fraude em tempo Real • Monitoração de Risco Varejo • Ofertas em Real Time • Indicação de Ofertas baseadas em localização Setor Público • Monitoração Geo- espacial • Detecção de Riscos e Ameaças em Tempo Real • Monitoração de Saúde Pública Serviços • Monitoração Real-time de consumo/ofertas • Grid health monitoring IoT & Indústrias • Correlação e Monitoração de sensores em Tempo Real • Manutenção Preditiva • Garantia de Qualidade na Manufatura
  38. 39 © Cloudera, Inc. All rights reserved. ”You must unlearn

    what you have learned” (Filme: Start Wars – Episódio V, 1980- Mestre Yoda)
  39. 40 © Cloudera, Inc. All rights reserved. PRODUCER KAFKA Tópico

    Evento 1 Tópico Evento 2 Regra de Negócio (Streaming) Broker de mensagens Armazenamento Engine MPP Utilização do Kudu para Workload Analítico Relatório Online JDBC Dashboard Web
  40. 41 © Cloudera, Inc. All rights reserved. Por onde começar?

    Usuários Baixar o Kudu / VM de teste: getkudu.io Lista de discussão: [email protected] Artigo que mostra a motivação do Kudu: getkudu.io/kudu.pdf Desenvolvedores Contribuíndo com o Kudu: github.com/cloudera/kudu (commits) gerrit.cloudera.org (reviews) issues.cloudera.org (KUDU JIRA) Lista de desenvolvimento do Kudu: [email protected] Contribuições e Participações são sempre bem-vindas!