Princípios básicos do Loader
Loader é desenvolvido com base no componente de Sqoop de código aberto. Ele é usado para trocar dados e arquivos entre o MRS e bancos de dados relacionais e sistemas de arquivos. O Loader pode importar dados de bancos de dados relacionais ou servidores de arquivos para os componentes HDFS e HBase, ou exportar dados de HDFS e HBase para bancos de dados relacionais ou servidores de arquivos.
Um modelo de Loader consiste em Loader Client e Loader Server, como mostrado na Figura 1.
Tabela 1 descreve as funções de cada módulo mostrado na figura anterior.
Módulo |
Descrição |
---|---|
Loader Client |
Cliente do Loader. Ele fornece duas interfaces: IU da Web e CLI. |
Loader Server |
Servidor do Loader. Processa solicitações de operação enviadas do cliente, gerencia conectores e metadados, envia jobs do MapReduce e monitora o status do job do MapReduce. |
REST API |
Ele fornece uma APIs Representational State Transfer (RESTful) (HTTP + JSON) para processar as solicitações de operação enviadas pelo cliente. |
Job Scheduler |
Agendador de jobs simples. Ele executa periodicamente jobs do Loader. |
Transform Engine |
Motor de transformação de dados. Ele suporta combinação de campo, corte de cordas e reversão de cordas. |
Execution Engine |
Motor de execução de job do Loader. Ele executa jobs do Loader de maneira MapReduce. |
Submission Engine |
Motor de envio de jobs do Loader. Ele envia jobs do Loader para MapReduce. |
Job Manager |
Ele gerencia jobs do Loader, incluindo criação, consulta, atualização, exclusão, ativação, desativação, início e interrupção de jobs. |
Metadata Repository |
Repositório de metadados. Ele armazena e gerencia dados sobre conectores do Loader, procedimentos de transformação e jobs. |
HA Manager |
Ele gerencia o status ativo/em espera dos processos do Loader Server. O Loader Server tem dois nós que são implementados no modo ativo/em espera. |
O carregador importa ou exporta jobs em paralelo usando jobs do MapReduce. Alguns jobs de importação ou exportação podem envolver apenas as operações de Map, enquanto outras podem envolver as operações de Map e Reduce.
Loader implementa tolerância a falhas usando MapReduce. Jobs podem ser reprogramados em caso de falha na execução de trabalhos.
- Importar dados para o HBase
Quando a operação Mapa é executada para jobs do MapReduce, o Loader obtém dados de uma fonte de dados externa.
Quando uma operação de Redução é executada para um job do MapReduce, o Loader ativa o mesmo número de tarefas de Redução com base no número de Regions. As tarefas Reduce recebem dados das tarefas Map, geram HFiles por Region e armazenam os HFiles em um diretório temporário do HDFS.
Quando um job do MapReduce é enviado, o Loader migra HFiles do diretório temporário para o HBase.
- Importar dados para HDFS
Quando uma operação de Mapa é executada para um job do MapReduce, o Loader obtém dados de uma fonte de dados externa e exporta os dados para um diretório temporário (denominado export directory-ldtmp).
Quando um job do MapReduce é enviado, o Loader migra os dados do diretório temporário para o de saída.
- Exportar dados para um banco de dados relacional
Quando uma operação Map é executada para um job do MapReduce, o Loader obtém dados do HDFS ou HBase e insere os dados em uma tabela temporária (Tabela de preparo) através da API de Conectividade de banco de dados Java (JDBC).
Quando um job do MapReduce é enviado, o Loader migra os dados da tabela temporária para uma tabela formal.
- Exportar dados para um sistema de arquivos
Quando uma operação Map é executada para um job do MapReduce, o Loader obtém dados do HDFS ou HBase e grava os dados em um diretório temporário do servidor de arquivos.
Quando um job do MapReduce é enviado, o Loader migra os dados do diretório temporário para um diretório formal.
Para obter detalhes sobre a arquitetura e os princípios do Loader, consulte https://sqoop.apache.org/docs/1.99.3/index.html.