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
Postar um comentário