Integrando o Cloudera Impala no Pentaho

Como o ecossistema Hadoop é muito centrado em dados, torna-se natural o ajuste da base de dados para desenvolvedores com experiência em SQL. Em grande maioria, os trabalhos de desenvolvimento de aplicativos para Hadoop consiste em escrever programas para copiar, converter/reorganizar e analisar arquivos de dados, isso dá muito trabalho de fazer de forma confiável, em paralelo, entre cluster e em grande escala.

O Impala surge como uma opção, atuando como uma camada de abstração, permitindo ao desenvolvedor executar consultas em SQL, com bom desempenho, a dados que estão no Apache Hadoop, mantendo uma experiência já familiar ao usuário.

Com o Impala, você pode consultar os dados armazenados em HDFS ou Apache HBase (incluindo funções SELECT, join e aggregate) em tempo real. Além disso, ele usa os mesmos metadados, sintaxe SQL (Hive SQL), driver ODBC e interface do usuário (Hue) que o Apache Hive, fornecendo uma plataforma comum e unificada para consultas em batch. Ele não exige que os dados sejam movidos ou transformados antes do processamento. Facilmente integrável com o ecossistema Hadoop, pois seus formatos de arquivos e dados, metadados, segurança e gerenciamento de recursos são os mesmos usados por MapReduce, Apache Hive, Apache Pig e outros softwares Hadoop. Ele é projetado especificamente para assimilar os pontos fortes do Hadoop e a familiaridade do suporte SQL e o desempenho de vários usuários da base de dados tradicional, permitindo consultas ad-hoc das principais ferramentas analíticas.

 

Integrando com o Pentaho

Alguns dos nossos clientes, que utilizam o ambiente Cloudera e Pentaho, nos pediram para conectar o Pentaho Data Integration (PDI) e o BA Server ao Impala, numa distribuição Cloudera 5.12, pois eles tiveram uma série de dificuldades para realizar essa conexão, então criamos um guia para realizar essa operação.

Para começar levantamos um Quickstart do Cloudera 5.12. Realizamos o download do drive jdbc do Impala neste link.

obs: Fique sempre atento a versão do Impala que está utilizando (versão 2.10 no nosso caso).

Caso você ainda tenha dúvidas sobre a utilização do Cloudera Quickstart, veja nosso post que publicamos recentemente Cloudera Quickstart com Kerberos e Pentaho Data Integration (começando do zero)

 

Site de Download do Impala JDBC Connector

 

Após baixar o drive você irá se deparar com os seguintes questionamentos:

  1. Qual drive eu uso (Cloudera ImpalaJDBC4_2.X.XX ou Cloudera ImpalaJDBC41_2.X.XX)?
  2. Em quais pastas instala-se esses drives?
  3. Quais são os arquivos jar que devemos colocar na instalação do Pentaho?

 

1. Cloudera Impala JDBC 4.0 ou 4.1?

 

Arquivos do Driver do Impala JDBC

O primeiro questionamento foi bem fácil de responder, há uma documentação no arquivo que explica o que corresponde cada uma das versões. A versão Cloudera_ImpalaJDBC4_X.XX deve ser aplicada em ferramentas que utilizem a JRE 6.0 e a Cloudera_ImpalaJDBC41_X.XX é indicada para versão de JRE 7 ou mais atual. Como estamos trabalhando com Pentaho 8, que utiliza a versão 8.X da JRE, vamos utilizar a versão Cloudera ImpalaJDBC41_2.X.XX.

2. Qual a pasta no Pentaho?

Na página de help da pentaho (https://help.pentaho.com/Documentation/8.0/Setup/Configuration/Pentaho_Server/Data_Connections/Native) há a definição de qual pasta o drive deverá ser instalado.

  • Pentaho Server/pentaho/server/pentaho-server/tomcat/lib/
  • Spoondata-integration/lib 

 

 

3. Quais libs devemos adicionar?

As libs necessárias para a instalação são:

  • ImpalaJDBC4.jar
  • TCLIServiceClient.jar
  • httpclient-4.1.3.jar
  • httpcore-4.1.3.jar
  • log4j-1.2.14.jar
  • slf4j-api-1.5.11.jar
  • slf4j-log4j12-15.11.jar
  • libthrift-0.9.0.jar

Finalizada essa implantação do Driver, podemos começar a criar as conexões com o Impala. No BA Server escolhemos a opção de Manage Data Sources (Fontes de Dados) e criamos um New Connection., escolhemos o Database Type como Cloudera Impala e inserimos os dados de HostName, Database Name e Port Number.

 

Configurando Conexão do Cloudera Impala no BA Server

 

No PDI também funciona como uma conexão JDBC normal da mesma forma que no BA Server.

 

Configuração do Impala no PDI

 

Após isso podemos executar nossas transformações e realizar consultas ao banco e aproveitar os recurso desse banco de dados.

 

Resultados Alcançados nessa Integração

Tendo configurado o Cloudera Impala no PDI e BA Server tivemos um excelente resultado nas consultas feitas através do Analyzer sobre o Impala, mas no caso do PDI não se assuste se a inserção de dados (realizado através de um Table Output) seja extremamente lenta (cerca de 2 row/s em alguns casos), isso é perfeitamente normal, pois geralmente bancos auto-gerenciáveis são muito lentos em operações de insert, a solução para isso é utilizar bulk loader, no caso do Impala não existe um bulk loader nativo, mas existem maneiras de criar um de forma bem fácil. fique atento ao conteúdo desse blog que vamos criar uma postagem especial sobre isso.

 

Leonardo Luiz