Princípios básicos do Hive
O Hive é uma infraestrutura de armazém de dados construída sobre o Hadoop. Ele fornece uma série de ferramentas que podem ser usadas para extrair, transformar e carregar dados (ETL). Hive é um mecanismo que pode armazenar, consultar e analisar dados em massa armazenados no Hadoop. Hive define linguagem de consulta simples como SQL, que é conhecido como HiveQL. Ele permite que um usuário familiarizado com SQL consulte dados. A computação de dados do Hive depende do MapReduce, Spark e Tez.
O novo motor de execução Tez é usado para substituir o MapReduce original, melhorando significativamente o desempenho. O Tez pode converter vários jobs dependentes em um job, portanto, apenas quando a gravação do HDFS for necessária e menos nós de trânsito forem necessários, melhorando significativamente o desempenho dos jobs de DAG.
Hive fornece as seguintes funções:
- Analisa dados estruturados massivos e resume os resultados da análise.
- Permite que jobs complexas do MapReduce sejam compilados em linguagens SQL.
- Suporta formatos flexíveis de armazenamento de dados, incluindo notação de objeto JavaScript (JSON), valores separados por vírgulas (CSV), TextFile, RCFile, SequenceFile e ORC (Optimized Row Columnar).
Estrutura do sistema do Hive:
- Interface de usuário: três interfaces de usuário estão disponíveis, ou seja, CLI, Cliente e WUI. A CLI é a interface de usuário mais usada. Uma transcrição do Hive é iniciada quando a CLI é iniciada. Cliente refere-se a um cliente Hive, e um usuário cliente se conecta ao Servidor Hive. Ao entrar no modo cliente, você precisa especificar o nó em que o Servidor Hive reside e iniciar o Servidor Hive nesse nó. A IU da Web é usada para acessar o Hive através de um navegador. O MRS pode acessar o Hive somente no modo de cliente. Para obter detalhes, consulte Uso do Hive a partir rascunho. Para obter detalhes sobre como desenvolver aplicação do Hive, consulte Desenvolvimento de aplicação do Hive.
- Armazenamento de metadados: o Hive armazena metadados em bancos de dados, por exemplo, MySQL e Derby. Metadados no Hive incluem um nome de tabela, colunas de tabela e partições e suas propriedades, propriedades de tabela (indicando se uma tabela é uma tabela externa) e o diretório onde os dados da tabela são armazenados.
Estrutura do Hive
O Hive é um processo de serviço de instância única que fornece serviços traduzindo o HQL em jobs de MapReduce relacionados ou operações de HDFS. Figura 1 mostra como o Hive está conectado a outros componentes.
Módulo |
Descrição |
---|---|
HiveServer |
Vários HiveServers podem ser implantados em um cluster para compartilhar cargas. O HiveServer fornece serviços de banco de dados do Hive externamente, converte instruções HQL em tarefas do YARN ou operações do HDFS para concluir a extração, conversão e análise de dados. |
MetaStore |
|
WebHCat |
Vários WebHCats podem ser implantados em um cluster para compartilhar cargas. O WebHCat fornece APIs REST e executa os comandos do Hive por meio das APIs REST para enviar jobs do MapReduce. |
Cliente do Hive |
O cliente do Hive inclui a interface de linha de comando (CLI) homem-máquina Beeline, unidade JDBC para aplicações JDBC, driver Python para aplicações Python e arquivos JAR HCatalog para MapReduce. |
Cluster do ZooKeeper |
Como um nó temporário, o ZooKeeper registra a lista de endereços IP de cada instância do HiveServer. O driver do cliente se conecta a ZooKeeper para obter a lista e seleciona instâncias de HiveServer correspondentes com base no mecanismo de roteamento. |
Cluster do HDFS/HBase |
O cluster do HDFS armazena os dados da tabela do Hive. |
Cluster do MapReduce/YARN |
Fornece serviços de computação distribuída. A maioria das operações de dados do Hive depende do MapReduce. A principal função do HiveServer é traduzir instruções HQL em jobs do MapReduce para processar dados massivos. |
HCatalog é construído no Hive Metastore e incorpora a capacidade DDL do Hive. HCatalog também é uma tabela baseada em Hadoop e camada de gerenciamento de armazenamento que permite leitura/gravação de dados conveniente em tabelas de HDFS usando diferentes ferramentas de processamento de dados, como MapReduce e Pig. Além disso, o HCatalog também fornece APIs de leitura/gravação para essas ferramentas e usa uma CLI do Hive para publicar comandos para definir dados e consultar metadados. Depois de encapsular esses comandos, o WebHCat Server pode fornecer APIs RESTful, conforme mostrado em Figura 2.
Princípios
O Hive funciona como um armazém de dados baseado na arquitetura HDFS e MapReduce e converte instruções HQL em jobs do MapReduce ou operações HDFS. Para obter detalhes sobre o Hive e o HQL, consulte Manual de linguagem HiveQL.
Figura 3 mostra a estrutura do Hive.
- Metastore: lê, grava e atualiza metadados como tabelas, colunas e partições. Sua camada inferior são os bancos de dados relacionais.
- Driver: gerencia o ciclo de vida da execução da HiveQL e participa de toda a execução do job do Hive.
- Compiler: traduz instruções HQL em uma série de jobs interdependentes de Map ou Reduce.
- Optimizer: é classificado em otimizador lógico e otimizador físico para otimizar planos de execução HQL e jobs de MapReduce, respectivamente.
- Executor: executa jobs Map ou Reduce com base em dependências de job.
- ThriftServer funciona como os servidores de JDBC, fornece APIs Thrift e integra-se com Hive e outras aplicações.
- Clients: inclui as APIs da WebUI e JDBC e fornece APIs para acesso do usuário.