====== Slide 1: Apache Drill ====== {{ :slides:beedrill002.jpg?200 |}} Cárlisson Galdino < bardo@carlissongaldinoSEMSPAM.com.br> ====== Slide 2: Conteúdo ====== * Apache Drill * Slide 1: Apache Drill * Slide 2: Conteúdo * Slide 3: O que diz a Wikipedia * Slide 4: Tipo assim... * Slide 5: O que diz o Marketing * Slide 6: E o que é o Drill? * Slide 7: O Fluxo da Consulta * Slide 8: Raio-X do DrillBit * Slide 9: Detalhes da Flexibilidade * Slide 10: Detalhes do Desempenho * Slide 11: SQLLine * Slide 12: Referências Web * * O que diz o Marketing ====== Slide 3: O que diz a Wikipedia ====== * Apache Drill é um framework de código aberto que suporta aplicações distribuídas de dados intensivos para análise interativa de grandes conjuntos de dados. ====== Slide 4: Tipo assim... ====== {{ :slides:drill2.png?nolink&300 |}} ====== Slide 5: O que diz o Marketing ====== * Arquitetura Flexível e Extensível * Consulta Interativa em Escala * Velocidade é a Chave * Libera Dados Aninhados * Flexibilidade ====== Slide 6: E o que é o Drill? ====== * Engenho de consulta para Hadoop * Mantido pela Apache Foundation (incubado) * Funciona em Linux e Mac OS X * Roda em Java (versão mínima: JavaSE Runtime 7 Oracle) ====== Slide 7: O Fluxo da Consulta ====== {{ :slides:queryflow.png?nolink |}} * JDBC, ODBC ou linha de comando. * Todos aceitam consultas. Sem conceito de mestre-escravo. * Drillbit consultado vira o motorista * Zookeeper mantém lista de nós ativos ====== Slide 8: Raio-X do DrillBit ====== {{ :slides:drillbitmodules.png?nolink |}} * RPC (+ camada de API em C++) * SQL Parser utiliza Optiq * Otimização baseada em regras, custo, localidade, dentre outras * A saída da otimização são (sub)consultas distribuídas * Lidando com Hadoop, Drill provê storage plugins para arquivos e HBase/M7 * Cache utiliza a ferramenta Hazelcast * fragmentos de plano de consulta * estado intermediário da execução da consulta * estatísticas ====== Slide 9: Detalhes da Flexibilidade ====== * Sem esquema - Drill começa a processar os dados em unidades chamadas "record batches" e descobre os esquemas enquanto processa a busca. * Dados aninhados - Drill trata dados complexos e semiestruturados como nativos em todas as camadas do produto. * Metadados - Drill NÃO está preso a um único repositório Hive. Não exige definição de metadados, mas permite sua criação, se necessário, em SQL DDL. * Extensibilidade - para todas as camadas, incluindo plugin de armazenamento, camada de consulta, camada de otimização/execução, e APIs. ====== Slide 10: Detalhes do Desempenho ====== * Execução Colunar - otimiza armazenamento colunar e execução com modelo de dados na memória, tanto hierárquico quanto colunar. * Em formato colunar, Drill evita acesso a colunas não envolvidas na consulta. * Expande o modelo colunar, com uma camada de execução que processa SQL diretamente sem materialização de tuplas e sem desaninhar dados. * Vetorização - Record Batches são vetores de valores de muitos registros diferentes. * Técnica: modern chip technology com deep-pipelined CPU designs * Execução de consulta otimista e em "pipeline" - Drill assume que falhas não são frequentes * Se a consulta falha em um nó, é executada novamente * Diferente do MapReduce, Drill não persiste no disco * Usa prioritariamente a memória, só usando o disco se a memória acabar ====== Slide 11: SQLLine ====== * Console em Java para consulta. Já inicia um Drillbit automaticamente *0: jdbc:drill:zk=local>* SELECT * FROM cp.`employee.json`; | employee_id | full_name | first_name | last_name | position_id | position_ | | 1101 | Steve Eurich | Steve | Eurich | 16 | Store T | | 1102 | Mary Pierson | Mary | Pierson | 16 | Store T | | 1103 | Leo Jones | Leo | Jones | 16 | Store Tem | | 1104 | Nancy Beatty | Nancy | Beatty | 16 | Store T | | 1105 | Clara McNight | Clara | McNight | 16 | Store | | 1106 | Marcella Isaacs | Marcella | Isaacs | 17 | Stor | | 1107 | Charlotte Yonce | Charlotte | Yonce | 17 | Stor | 1,155 rows selected (0.762 seconds) *0: jdbc:drill:zk=local>* ====== Slide 12: Referências Web ====== {{ :slides:drill_runtime.png?nolink|}} * Projetos * Apache Drill * Apache ZooKeeper * Optiq * Hazelcast * Outros * Apache Drill - Interactive AdHoc Analysis at Scale - Artigo * Apache Drill - Slides * A criatura do primeiro slide é um Beedrill, personagem da GameFreak/Nintendo. ====== O que diz o Marketing ====== * Arquitetura Flexível e Extensível - APIs e interfaces bem documentadas permitem rápidas adições de novas fontes de dados e formatos de arquivo. Novos operadores e linguagens de consulta também são fáceis de adicionar ao Drill. * Consulta Interativa em Escala - Apache Drill fornece consultas de baixa latência de várias fontes de dados diferentes, incluindo dados aninhados. Inspirado pelo Dremel da Google, Drill se destina a escala de 10.000 servidores e consultar petabytes de dados em segundos. * Velocidade é a Chave - Utilizando um formato eficiente de armazenamento colunar, um mecanismo de execução otimista e um layout de memória cache-consciente, Apache Drill é rápido pra caramba. Coordenação, planejamento de consulta, otimização, agendamento e execução são todos distribuídos ao longo de nós em um sistema para maximizar a paralelização.bro * Libera Dados Aninhados - Realiza análise interativa em todos os seus dados, incluindo aninhados e schema-less. Drill suporta consulta por muitas fontes de dados schema-less diferentes incluindo HBase, Cassandra e MongoDB. Naturalmente, registros planos estão incluídos como um caso especial de dados aninhados. * Flexibilidade - Níveis e APIs fortemente definidos para integração direta com um vasto leque de tecnologias. -- CarlissonGaldino - 30 Jun 2014