Tutorial Sqoop: O que é Apache Sqoop? Archiestrutura e exemplo

O que é SQOOP no Hadoop?

Apache SQOOP (SQL-to-Hadoop) é uma ferramenta projetada para oferecer suporte à exportação e importação em massa de dados para HDFS a partir de armazenamentos de dados estruturados, como bancos de dados relacionais, data warehouses corporativos e sistemas NoSQL. É uma ferramenta de migração de dados baseada em uma arquitetura de conector que suporta plugins para fornecer conectividade a novos sistemas externos.

Um exemplo de caso de uso do Hadoop Sqoop é uma empresa que executa uma importação noturna do Sqoop para carregar os dados do dia de um RDBMS transacional de produção em um Colméia armazém de dados para análise posterior.

A seguir neste tutorial do Apache Sqoop, aprenderemos sobre a arquitetura Apache Sqoop.

Sqoop Archiarquitetura

Todos os existentes Sistemas de Gerenciamento de Banco de Dados são projetados com SQL padrão em mente. No entanto, cada SGBD difere até certo ponto em relação ao dialeto. Portanto, esta diferença coloca desafios quando se trata de transferências de dados entre sistemas. Os conectores Sqoop são componentes que ajudam a superar esses desafios.

A transferência de dados entre o Sqoop Hadoop e o sistema de armazenamento externo é possível com a ajuda dos conectores do Sqoop.

Sqoop possui conectores para trabalhar com uma variedade de bancos de dados relacionais populares, incluindo MySQL, PostgreSQL, Oracle, SQL Server e DB2. Cada um desses conectores sabe como interagir com seu SGBD associado. Há também um conector JDBC genérico para conexão com qualquer banco de dados que suporte Javaprotocolo JDBC. Além disso, o Sqoop Big data fornece dados otimizados MySQL e PostgreSQL conectores que usam APIs específicas de banco de dados para realizar transferências em massa com eficiência.

Sqoop Archiarquitetura
Sqoop Archiarquitetura

Além disso, o Sqoop em big data possui vários conectores de terceiros para armazenamentos de dados, desde empresas armazéns de dados (incluindo Netezza, Teradata e Oracle) para armazenamentos NoSQL (como Couchbase). No entanto, esses conectores não vêm com o pacote Sqoop; eles precisam ser baixados separadamente e podem ser facilmente adicionados a uma instalação existente do Sqoop.

Por que precisamos do Sqoop?

O processamento analítico usando Hadoop requer o carregamento de grandes quantidades de dados de diversas fontes em clusters Hadoop. Esse processo de carregamento de dados em massa no Hadoop, a partir de fontes heterogêneas e posterior processamento, apresenta um certo conjunto de desafios. Manter e garantir a consistência dos dados e garantir a utilização eficiente dos recursos são alguns fatores a serem considerados antes de selecionar a abordagem certa para o carregamento de dados.

Problemas maiores:

1. Carregamento de dados usando scripts

A abordagem tradicional de usar scripts para carregar dados não é adequada para carregamento de dados em massa no Hadoop; esta abordagem é ineficiente e muito demorada.

2. Acesso direto a dados externos via aplicativo Map-Reduce

Fornecer acesso direto aos dados residentes em sistemas externos (sem carregar no Hadoop) para aplicativos de redução de mapa complica esses aplicativos. Portanto, esta abordagem não é viável.

3. Além de ter a capacidade de trabalhar com dados enormes, o Hadoop pode trabalhar com dados de diversas formas diferentes. Portanto, para carregar dados tão heterogêneos no Hadoop, diferentes ferramentas foram desenvolvidas. Sqoop e Calha são duas dessas ferramentas de carregamento de dados.

A seguir neste tutorial do Sqoop com exemplos, aprenderemos sobre a diferença entre Sqoop, Flume e HDFS.

Sqoop vs Flume vs HDFS no Hadoop

Sqoop Calha HDFS
Sqoop é usado para importar dados de fontes de dados estruturados, como RDBMS. Flume é usado para mover dados de streaming em massa para HDFS. HDFS é um sistema de arquivos distribuído usado pelo ecossistema Hadoop para armazenar dados.
Sqoop possui uma arquitetura baseada em conector. Os conectores sabem como se conectar à respectiva fonte de dados e buscar os dados. Flume possui uma arquitetura baseada em agente. Aqui, é escrito um código (que é chamado de 'agente') que se encarrega de buscar os dados. O HDFS possui uma arquitetura distribuída onde os dados são distribuídos entre vários nós de dados.
HDFS é um destino para importação de dados usando Sqoop. Os dados fluem para o HDFS através de zero ou mais canais. HDFS é o destino final para armazenamento de dados.
O carregamento de dados do Sqoop não é orientado a eventos. O carregamento de dados do Flume pode ser acionado por um evento. O HDFS apenas armazena os dados fornecidos por qualquer meio.
Para importar dados de fontes de dados estruturados, é necessário usar apenas comandos Sqoop, pois seus conectores sabem como interagir com fontes de dados estruturados e buscar dados delas. Para carregar dados de streaming, como tweets gerados no Twitter ou arquivos de log de um servidor web, deve-se utilizar o Flume. Os agentes Flume são criados para buscar dados de streaming. O HDFS possui seus próprios comandos shell integrados para armazenar dados nele. O HDFS não pode importar dados de streaming