Apache Hive

Origem: Wikipédia, a enciclopédia livre.
Apache Hive
Apache Hive
Modelo do desenvolvimento Software Livre
Sistema operacional Multiplataforma
Gênero(s) Data warehouse
Licença Apache License 2.0
Estado do desenvolvimento Ativo
Página oficial hive.apache.org

Apache Hive é um software de Data Warehouse desenvolvido em cima do Apache Hadoop para consulta e análise de dados.[1] O Hive oferece uma interface semelhante ao SQL para consulta de dados em diferentes bancos de dados e sistemas de arquivos integrados ao Hadoop. Comandos tradicionais de SQL são implementados na API Java para serem executados em dados distribuídos. O Hive fornece as abstrações necessárias para integrar comandos do tipo SQL(em uma linguagem chamada HiveQL). Como a maioria das aplicações de Data Warehousing trabalham com consultas baseadas em linguagens SQL, o Apache Hive facilita a portabilidade dessas aplicações para o Hadoop.[2] Embora tenha sido inicialmente desenvolvido pelo Facebook, atualmente é também usado e desenvolvido por outras organizações, como a Netflix e a Amazon.[3][4]

Comparação com Bancos de Dados tradicionais[editar | editar código-fonte]

Embora A linguagem HiveQL seja um dialeto de SQL, existem muitas diferenças de estrutura e funcionamento entre o Hive e os bancos de dados relacionais. As diferenças se devem, em grande parte, ao fato de que o Hive foi desenvolvido para uso com o ecossistema Hadoop, e portanto precisa obedecer as restrições do Hadoop e do MapReduce.

Em bancos de dados tradicionais, um esquema de banco de dados é utilizado. Em tais bancos, o esquema é aplicado quando os dados são carregados, assegurando que os dados inseridos seguem os formatos especificados pelas definições de tabela. O Apache Hive, por outro lado, não verifica a compatibilidade dos dados com o esquema no momento do registro. Ao invés disso, são feitas checagens quando os dados são lidos.[5] Cada uma dessas abordagens tem suas vantagens e desvantagens. Conferir os dados com o esquema no momento do registro exige mais processamento, fazendo com que os bancos relacionais demorem mais tempo para o carregamento de dados. No entanto, checagens de qualidade executadas no momento do registro asseguram que os dados não estão corrompidos. A detecção precoce de dados corruptos permite um manejo de exceções mais eficiente, e consultas subsequentes serão mais rápidas. O Hive, por outro lado, permite o registro dinâmico de dados, assegurando um carregamento muito mais rápido, mas com a desvantagem de consultas mais lentas. Hive leva vantagem se o esquema não estiver disponível no momento do registro, sendo gerado posteriormente.[5]

Transações são operações muito importantes em bancos de dados. Como em qualquer sistema gerenciador de banco de dados (SGBD), O Hive permite todas as quatro operações básicas de transação (ACID): Atomicidade, Consistência, Isolamento e and Durabilidade. As transações foram introduzida no Hive na versão 0.13, mas eram limitadas a nível de partição.[6] Nas versões mais recentes do Hive 0.14 essas funções foram incorporadas de forma completa, mantendo as propriedades ACID. As versões subsequentes fornecem transações de linha como INSERT, DELETE and UPDATE.[7] Habilitar transações de INSERT, UPDATE, DELETE requer a configuração adequada de propriedades como hive.support.concurrency, hive.enforce.bucketing, and hive.exec.dynamic.partition.mode.[8]

Segurança[editar | editar código-fonte]

A versão 0.7.0 adicionou integração com a segurança do Hadoop. Hadoop passou a usar o protocolo Kerberos para maior segurança de autorizações. Kerberos permite autenticação mútua entre cliente e servidor. Nesse sistema, o pedido de autorização é enviado junto à requisição em si. Versões anteriores do Hadoop tinham alguns problemas de segurança, como por exemplo a possibilidade de falsificar nomes de usuário configurando a propriedade hadoop.job.ugi e também o fato das operações MapReduce serem executadas pelo mesmo nome de usuário: hadoop ou mapred. A integração do Hive 0.7.0 com a segurança Hadoop, esses problemas foram resolvidos. Permissões para novos arquivos criados são reguladas pelo HDFS. O model de autorização HDFS tem três entidades(user,group e other) com três possíveis permissões(read, write e execute).

Ver também[editar | editar código-fonte]

Referências

  1. Venner, Jason (2009). Pro Hadoop. [S.l.]: Apress. ISBN 978-1-4302-1942-2 
  2. Programming Hive [Book]. [S.l.: s.n.] 
  3. OSCON Data 2011, Adrian Cockcroft, "Data Flow at Netflix" no YouTube
  4. Amazon Elastic MapReduce Developer Guide
  5. a b White, Tom (2010). Hadoop: The Definitive Guide. [S.l.]: O'Reilly Media. ISBN 978-1-4493-8973-4. (pede subscrição (ajuda)) 
  6. «Introduction to Hive transactions». datametica.com. Consultado em 12 de setembro de 2016 
  7. «Hive Transactions - Apache Hive - Apache Software Foundation». cwiki.apache.org. Consultado em 12 de setembro de 2016 
  8. «Configuration Properties - Apache Hive - Apache Software Foundation». cwiki.apache.org. Consultado em 12 de setembro de 2016 

Ligações externas[editar | editar código-fonte]