HBase
 sql >> Base de Dados >  >> NoSQL >> HBase

Cloudera Impala:consultas em tempo real no Apache Hadoop, de verdade


Após um longo período de intenso esforço de engenharia e feedback dos usuários, estamos muito satisfeitos e orgulhosos em anunciar o projeto Cloudera Impala. Essa tecnologia é revolucionária para os usuários do Hadoop, e não aceitamos essa afirmação de ânimo leve.

Quando o Google publicou seu artigo Dremel em 2010, ficamos tão inspirados quanto o resto da comunidade pela visão técnica de trazer capacidade de consulta ad hoc em tempo real para o Apache Hadoop, complementando o processamento em lote tradicional do MapReduce. Hoje, estamos anunciando uma base de código totalmente funcional e de código aberto que cumpre essa visão – e, acreditamos, um pouco mais – que chamamos de Cloudera Impala. Um binário Impala agora está disponível em forma beta pública, mas se você preferir testar o Impala por meio de uma VM pré-preparada, também temos um desses para você. Você também pode revisar o código-fonte e o equipamento de teste no Github agora mesmo.

O Impala eleva o nível de desempenho de consulta, mantendo uma experiência de usuário familiar. Com o Impala, você pode consultar dados armazenados em HDFS ou Apache HBase – incluindo SELECT, JOIN e funções agregadas – em tempo real. Além disso, ele usa os mesmos metadados, sintaxe SQL (Hive SQL), driver ODBC e interface de usuário (Hue Beeswax) do Apache Hive, fornecendo uma plataforma familiar e unificada para consultas orientadas a lotes ou em tempo real. (Por essa razão, os usuários do Hive podem utilizar o Impala com pouca sobrecarga de configuração.) A primeira versão beta inclui suporte para arquivos de texto e SequenceFiles; SequenceFiles podem ser compactados como Snappy, GZIP e BZIP (com Snappy recomendado para desempenho máximo). O suporte para formatos adicionais, incluindo arquivos de texto Avro, RCFile, LZO e o formato de coluna Parquet, está planejado para a queda de produção.

Para evitar latência, o Impala contorna o MapReduce para acessar diretamente os dados por meio de um mecanismo de consulta distribuído especializado que é muito semelhante aos encontrados em RDBMSs paralelos comerciais. O resultado é um desempenho muito mais rápido do que o Hive, dependendo do tipo de consulta e configuração. (Consulte as Perguntas frequentes abaixo para obter mais detalhes.) Observe que essa melhoria de desempenho foi confirmada por várias grandes empresas que testaram o Impala em cargas de trabalho do mundo real por vários meses.

Uma visão arquitetônica de alto nível está abaixo:



Há muitas vantagens nessa abordagem sobre abordagens alternativas para consultar dados do Hadoop, incluindo:

  • Graças ao processamento local em nós de dados, os gargalos de rede são evitados.
  • Um repositório de metadados único, aberto e unificado pode ser utilizado.
  • A conversão de formato de dados dispendiosa é desnecessária e, portanto, não há sobrecarga.
  • Todos os dados podem ser consultados imediatamente, sem atrasos para ETL.
  • Todo o hardware é utilizado para consultas Impala, bem como para MapReduce.
  • Apenas um único pool de máquinas é necessário para dimensionar.

Recomendamos que você leia a documentação para obter mais detalhes técnicos.

Por fim, gostaríamos de responder a algumas perguntas que prevemos que serão populares:

O Impala é de código aberto?
Sim, Impala é 100% open source (Licença Apache). Você pode revisar o código por si mesmo no Github hoje.

Qual ​​a diferença entre Impala e Dremel?
A primeira e principal diferença é que o Impala é de código aberto e está disponível para todos usarem, enquanto o Dremel é proprietário do Google.

Tecnicamente, a Dremel alcança tempos de resposta interativos em conjuntos de dados muito grandes por meio do uso de duas técnicas:
  • Um novo formato de armazenamento colunar para dados/dados relacionais aninhados com estruturas aninhadas
  • Algoritmos de agregação escalável distribuídos, que permitem que os resultados de uma consulta sejam calculados em milhares de máquinas em paralelo.

Este último é emprestado de técnicas desenvolvidas para SGBDs paralelos, que também inspiraram a criação do Impala. Ao contrário do Dremel, conforme descrito no artigo de 2010, que só podia lidar com consultas de tabela única, o Impala já suporta o conjunto completo de operadores de junção que são um dos fatores que tornam o SQL tão popular.

Para obter todos os benefícios de desempenho demonstrados pela Dremel, o Hadoop terá em breve um formato de armazenamento binário colunar eficiente chamado Parquet. Mas ao contrário do Dremel, o Impala suporta uma variedade de formatos de arquivo populares. Isso permite que os usuários executem o Impala em seus dados existentes sem precisar “carregá-los” ou transformá-los. Ele também permite que os usuários decidam se desejam otimizar para flexibilidade ou apenas desempenho puro.

Para resumir, o Impala plus Parquet alcançará o desempenho de consulta descrito no documento da Dremel, mas superará o que está descrito na funcionalidade SQL.

As consultas do Impala são realmente muito mais rápidas do que as do Hive?
A quantidade exata de melhoria de desempenho é altamente dependente de vários fatores:
  • Configuração de hardware:o Impala geralmente é capaz de aproveitar ao máximo os recursos de hardware e, especificamente, gera menos carga de CPU do que o Hive, o que geralmente se traduz em maior largura de banda de E/S agregada observada do que com o Hive. É claro que o Impala não pode ir mais rápido do que o hardware permite, portanto, qualquer gargalo de hardware limitará a aceleração observada. Para consultas puramente vinculadas a E/S, normalmente observamos ganhos de desempenho na faixa de 3 a 4 vezes.
  • Complexidade da consulta:consultas que exigem várias fases MapReduce no Hive ou exigem junções no lado reduzido terão uma aceleração mais alta do que, digamos, consultas simples de agregação de tabela única. Para consultas com pelo menos uma junção, parecemos ter ganhos de desempenho de 7 a 45 vezes.
  • Disponibilidade de memória principal como cache para dados de tabela:Se os dados acessados ​​por meio da consulta saem do cache, a aceleração será mais dramática graças à eficiência superior do Impala. Nesses cenários, vimos acelerações de 20 a 90 vezes no Hive, mesmo em consultas de agregação simples.

O Impala é um substituto para MapReduce ou Hive – ou para a infraestrutura tradicional de data warehouse?
Não. Haverá muitos casos de uso viáveis ​​para MapReduce e Hive (por exemplo, para cargas de trabalho de transformação de dados de longa duração), bem como estruturas de data warehouse tradicionais (por exemplo, para análises complexas em conjuntos de dados estruturados e limitados). O Impala é um complemento para essas abordagens, suportando casos de uso em que os usuários precisam interagir com conjuntos de dados muito grandes, em todos os silos de dados, para obter conjuntos de resultados focados rapidamente.

A versão beta do Impala tem alguma limitação técnica?
Como mencionado anteriormente, os formatos de arquivo suportados na primeira versão beta incluem arquivos de texto e SequenceFiles, com muitos outros formatos a serem suportados na próxima versão de produção. Além disso, atualmente todas as junções são feitas em um espaço de memória não maior que o do menor nó do cluster; em produção, as junções serão feitas na memória agregada. Por fim, nenhuma UDF é possível no momento.

Quais são os requisitos técnicos para a versão beta do Impala?
Você precisará ter o CDH4.1 instalado no RHEL/CentOS 6.2. É altamente recomendável o uso do Cloudera Manager (Free ou Enterprise Edition) para implantar e gerenciar o Impala, pois ele cuida da implantação distribuída e dos detalhes de monitoramento automaticamente.

Qual ​​é a política de suporte para a versão beta do Impala?
Se você já é um cliente Cloudera com um bug, pode abrir um tíquete de Suporte ao Cliente e tentaremos resolvê-lo da melhor maneira possível. Se você não for um cliente Cloudera existente, poderá usar nossa instância pública do JIRA ou a lista de discussão do usuário impala, que será monitorada pelos funcionários da Cloudera.

Quando o Impala estará disponível para uso geral em produção?
Uma queda de produção está prevista para o primeiro trimestre de 2013. Os clientes podem obter suporte comercial na forma de uma assinatura Cloudera Enterprise RTQ nesse momento.

Esperamos que você aproveite a oportunidade para revisar o código-fonte do Impala, explorar a versão beta, baixar e instalar a VM ou qualquer combinação dos itens acima. Seu feedback em todos os casos é apreciado; precisamos da sua ajuda para tornar o Impala ainda melhor.

Traremos mais atualizações sobre o Impala à medida que nos aproximamos da disponibilidade de produção. (Atualização:Leia sobre Impala 1.0.)

Recursos Impala:
– Código fonte do Impala
– Downloads do Impala (versão Beta e VM)
– Documentação do Impala
– JIRA público
– Lista de discussão do Impala
– Impala gratuito treinamento (Screencast)

(Adicionado em 30/10/2012) Artigos de terceiros sobre o Impala:
– GigaOm: consulta em tempo real para Hadoop democratiza o acesso a análises de big data (22 de outubro de 2012)
– Com fio: Homem sai do Google e reconstrói máquina de consulta ultra-secreta (24 de outubro de 2012)
– InformationWeek: Cloudera lança consulta Hadoop em tempo real (24 de outubro de 2012)
– GigaOm:Cloudera torna o SQL um cidadão de primeira classe no Hadoop (24 de outubro de 2012)
– ZDNet:O Impala da Cloudera traz o Hadoop para SQL e BI (25 de outubro de 2012)
– Wired:Perfil de Marcel Kornacker (29 de outubro de 2012)
– Dr. Dobbs: Cloudera Impala – Processando petabytes na velocidade de Pensamento (29 de outubro de 2012)

Marcel Kornacker é o arquiteto do Impala. Antes de ingressar na Cloudera, ele foi o desenvolvedor líder do mecanismo de consulta do projeto F1 do Google.

Justin Erickson é o gerente de produto da Impala.