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