Apache Hive
e um software de
Data Warehouse
desenvolvido em cima do
Apache Hadoop
para consulta e analise 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 sao implementados na
API
Java
para serem executados em dados distribuidos. O Hive fornece as abstracoes necessarias para integrar comandos do tipo SQL(em uma linguagem chamada
HiveQL
). Como a maioria das aplicacoes de Data Warehousing trabalham com consultas baseadas em linguagens SQL, o Apache Hive facilita a portabilidade dessas aplicacoes para o Hadoop.
[
2
]
Embora tenha sido inicialmente desenvolvido pelo
Facebook
, atualmente e tambem usado e desenvolvido por outras organizacoes, como a
Netflix
e a
Amazon
.
[
3
]
[
4
]
Comparacao com Bancos de Dados tradicionais
[
editar
|
editar codigo-fonte
]
Embora A linguagem HiveQL seja um
dialeto
de SQL, existem muitas diferencas de estrutura e funcionamento entre o Hive e os
bancos de dados relacionais
. As diferencas se devem, em grande parte, ao fato de que o Hive foi desenvolvido para uso com o
ecossistema Hadoop
, e portanto precisa obedecer as restricoes do Hadoop e do
MapReduce
.
Em bancos de dados tradicionais, um
esquema de banco de dados
e utilizado. Em tais bancos, o esquema e aplicado quando os dados sao carregados, assegurando que os dados inseridos seguem os formatos especificados pelas definicoes de tabela. O Apache Hive, por outro lado, nao verifica a compatibilidade dos dados com o esquema no momento do registro. Ao inves disso, sao feitas checagens quando os dados sao 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 nao estao corrompidos. A deteccao precoce de dados corruptos permite um manejo de excecoes mais eficiente, e consultas subsequentes serao mais rapidas. O Hive, por outro lado, permite o registro dinamico de dados, assegurando um carregamento muito mais rapido, mas com a desvantagem de consultas mais lentas. Hive leva vantagem se o esquema nao estiver disponivel no momento do registro, sendo gerado posteriormente.
[
5
]
Transacoes
sao operacoes muito importantes em bancos de dados. Como em qualquer
sistema gerenciador de banco de dados (SGBD)
, O Hive permite todas as quatro operacoes basicas de transacao (
ACID
):
Atomicidade
,
Consistencia
, Isolamento e and
Durabilidade
. As transacoes foram introduzida no Hive na versao 0.13, mas eram limitadas a nivel de particao.
[
6
]
Nas versoes mais recentes do Hive 0.14 essas funcoes foram incorporadas de forma completa, mantendo as propriedades
ACID
. As versoes subsequentes fornecem transacoes de linha como
INSERT, DELETE and UPDATE
.
[
7
]
Habilitar transacoes de
INSERT, UPDATE, DELETE
requer a configuracao adequada de propriedades como
hive.support.concurrency
,
hive.enforce.bucketing
, and
hive.exec.dynamic.partition.mode
.
[
8
]
A versao 0.7.0 adicionou integracao com a seguranca do Hadoop. Hadoop passou a usar o protocolo
Kerberos
para maior seguranca de autorizacoes. Kerberos permite autenticacao mutua entre cliente e servidor. Nesse sistema, o pedido de autorizacao e enviado junto a requisicao em si. Versoes anteriores do Hadoop tinham alguns problemas de seguranca, como por exemplo a possibilidade de falsificar nomes de usuario configurando a propriedade
hadoop.job.ugi
e tambem o fato das operacoes MapReduce serem executadas pelo mesmo nome de usuario: hadoop ou mapred. A integracao do Hive 0.7.0 com a seguranca Hadoop, esses problemas foram resolvidos. Permissoes para novos arquivos criados sao reguladas pelo
HDFS
. O model de autorizacao HDFS tem tres entidades(
user
,
group
e
other
) com tres possiveis permissoes(
read
,
write
e
execute
).
Referencias