Importando e exportando dados com Sqoop


A plataforma Hadoop consegue realizar o processamento distribuído de informações de origens diversas, que podem ser estruturadas ou não, possibilitando o desenvolvimento de novas aplicações e novas formas de analisar os negócios. 

Atualmente grande parte das informações estruturadas das companhias está armazenada em bancos de dados relacionais e precisam ser integradas com informações não estruturadas no ambiente Hadoop. Para realizar a importação e exportação de dados entre bancos de dados relacionais e o Hadoop foi criada a ferramenta Sqoop (http://sqoop.apache.org), também da Fundação Apache.

O pacote Sqoop obtido no site da Fundação Apache fornece conectores específicos para MySQL, PostGreSQL, Oracle, SQL Server e DB2, assim como tem também um conector genérico para JDBC (Java Database Connectivity), que pode ser usado para conexão com qualquer banco de dados ou ferramenta que suporte JDBC. Existem também no mercado outros conectores para Netezza, Teradata, NoSQL, etc, fornecidos por empresas diversas que podem ser adquiridos e integrados ao Sqoop.

Ao realizar um import o Sqoop executa jobs MapReduce que lêem uma tabela do banco de dados e gravam os dados no HDFS. Tal como o Hadoop, o Sqoop também é escrito em Java e utiliza a API JDBC para acessar bancos de dados. Na operação de importação, os dados retornados no cursor são gravados em um arquivo sequencial no HDFS.

A figura abaixo, extraída do livro Hadoop – The Definitive Guide, de Tom White, ilustra o processo de importação usado pelo Sqoop.


Como esta é uma plataforma utilizada para processamento de grandes quantidades de dados, o Sqoop pode utilizar a primary key da tabela para particionar o trabalho total em mais de um job MapReduce, conseguindo assim paralelizar o processamento e obter melhor performance.

O Sqoop também pode ser utilizado para criar tabelas no Hive a partir de tabelas existentes em um ambiente de banco de dados relacional.

Também é possível utilizar o Sqoop para exportar dados do HDFS para uma tabela existente em um banco de dados relacional. Este processo utiliza jobs MapReduce que vão ler os dados no HDFS e acessar a tabela no banco de dados relacional usando JDBC para inserir os dados na mesma.

Pensando na utilização do Sqoop na indústria de Óleo & Gás, existem muitos logs de operações de produção de petróleo e gás, dados de sensores de poços (temperatura, volume e pressão), que estão armazenados em sistemas historiadores operacionais (OSIsoft PI, GE Proficy Historian, etc) que possuem acesso via JDBC e podem ser importados para a plataforma Hadoop, permitindo criar uma série de novos relatórios analíticos operacionais voltados para otimização da produção e redução de custos. 

Podemos chamar esta utilização de “Real-time operational intelligence”, que é uma disciplina emergente, baseada na transformação da vasta quantidade de dados existentes atualmente nos sistemas de produção em informações que tenham valor para o negócio. 

No próximo post vou abordar a distribuição Cloudera do Hadoop.






Comentários

Postagens mais visitadas deste blog

Hive, o que é ?

O que é o HDFS ?

O que é o HBASE ?