Como estamos na linha de frente do suporte Pentaho no Brasil, vira e mexe a gente recebe perguntas e pedidos de ajuda sobre como conectar em clusters Hadoop – Cloudera, Hortonworks ou MapR – com o Pentaho Data Integration ou Pentaho Server. Recentemente ajudamos um parceiro nosso a conectar seu Pentaho num gigantesco cluster Cloudera com Kerberos configurado. Para isso, a gente criou, do zero, um mini cluster com essas características. Eis como foi feito.
Todo o tutorial foi feito usando o MacOS como sistema operacional Host, mas os mesmos conceitos são perfeitamente replicáveis em Linux e até em Windows.
Parte 01. Subindo um Cloudera Quickstart
A Cloudera disponibiliza o que talvez seja uma das formas mais fácieis de subir um ambiente de brincadeira de Hadoop. Indo NESSE SITE, voce baixa a VM Cloudera Quickstart, que pode ser adquirida através dos formatos:
- Docker
- VirtualBox
- VMWare
- KVM
Pra simplificar e manter as coisas mais estáveis, a gente vai usar aqui a versão VirtualBox dessa VM.
Dependências
- VirtualBox – Para o tipo de máquina virtual que a gente escolheu, VirtualBox, é preciso ir no site de downloads, baixar e instalar os binários na sua máquina.
Importando a VM
Considerando que o VirtualBox está instalado no seu PC, você vai:
- Baixar a VM quickstart CDH NESSE SITE;
- Descompactar o arquivo
- Mover os arquivos descompactados para o diretório onde você deseja armazenar os arquivos dessa VM (talvez você tenha um disco mais rápido ou com mais capacidade em outro local)
- Clicar em importar appliance no menu File e depois localizar seu OVF
- Configurar Memória RAM, número de processadores, local do disco (vmdk), DVD, etc.
- Esperar A VM ser importada;
- Configurar a rede para utilizar o modo Bridged – Você vai em Machine > Settings e vai procurar a aba Network. Lá, escolha Bridged adapter. Isso vai fazer com que sua VM pegue um IP da rede e facilitar na hora de acessar os serviços do Hadoop e Kerberos.
Bom, agora é hora de iniciar normalmente a sua VM.
Como a gente está configurando a VM no modo Bridged, algo que vai ajudar é, garantir que a maquina vai sempre pegar o mesmo endereço IP. Para garantir isso, você pode, opcionalmente, colocar uma reserva de IP no DHCP do seu roteador.
Para ver o MAC Address da sua VM, vá em Machine > Settings > Network > Advanced e copie o Mac Address da máquina virtual. Depois é só ir na pagina de administração do seu roteador, ir nas configurações de DHCP e designar para aquele MAC address, um IP fixo.
Utilizando pela primeira vez
Clique com o botão direito na sua VM recém criada e escolha Start para ela inicializar.
Quando ela inincializar, você deve ver uma tela como essa:
- Anote o endereço IP da máquina, isso vai ser importante depois (1).
Note também que no navegador há vários favoritos para endereços importantes de serviços do Hadoop.
- Vá no desktop e rode o script Launch Cloudera Express – Seja paciente durante este e outros processos. Alguns scripts e ações demoram alguns minutos para completarem e estabilizarem.
No final do script, deve aparecer o resultado, com a url de acesso ao Cloudera Manager, usuário e senha.
- Entre no cloudera manager – o link está nos favoritos do navegador. Informe as credenciais (user/pass):
cloudera / cloudera
- Inicie todos os serviços – No painel à esquerda, com a relação de serviços, clique no dropdown do “Cloudera Quickstart” e escolha start. Confirme, aguarde e observe.
Após alguns minutos, os serviços devem estar com um sinal verde indicando que a tarefa de startup foi executada corretamente.
- Adicione quickstart.cloudera no
/etc/hosts
da maquina host (a sua maqiuna real). Você deve adicionar uma linha o ip anotado em (1) e o hostname da maquina, da seguinte forma:
# Entrada para o Cloudera Quickstart
# 10.139.0.58 é o IP da sua VM (1)
10.139.0.58 quickstart.cloudera
Essa entrada no /etc/hosts vai fazer com que, toda vez que você procure pelo endereço de rede quickstart.cloudera
, a aplicação saiba que IP resolver.
- Da sua máquina host, teste o hostname com um ping:
$ ping quickstart.cloudera
# Resultado:
PING quickstart.cloudera (10.139.0.58): 56 data bytes
64 bytes from 10.139.0.58: icmp_seq=0 ttl=64 time=0.387 ms
64 bytes from 10.139.0.58: icmp_seq=1 ttl=64 time=0.438 ms
Conectando com o Pentaho Data Integration
Vamos considerar a utilização da versão Enterprise do Pentaho Data Integration e dividir essa etapa de configuração em 2 partes:
- Escolha da distribuição
- Colocação de arquivos para o shim (iremos repetir isso quando mudarmos para Kerberos)
- Configuração de permissões de escrita do usuário
- Teste do cluster no PDI
Para te ajudar, separamos 5 Dicas para melhorar sua experiência de uso do Spoon
Escolha da distribuição
- Inicie a interface do Pentaho Data Integration (Spoon);
- Abra a opção Select Hadoop Distribution… através do menu Tools;
- Na janela Hadoop Distribution, selecione “Cloudera CDH 5.12” e clique OK.
- Feche o Spoon e depois inicie novamente a interface.
Colocação de arquivos para o shim
- Vá até http://quickstart.cloudera:7180/ e faça login com
cloudera/cloudera
; - Da lista de serviços na coluna à esquerda da interface, clique em cima do nome do serviço HDFS;
- Clique em Actions e escolha a opção “Download Client Configuration”
- Descompacte os arquivos e salve todos (sobrescrevendo quando necessário) dentro de
data-integration/plugins/pentaho-big-data-plugin/hadoop-configurations/cdh512/
- Certifique-se de ir também nos serviços do Hive e do HBase para pegar arquivos de configuração. No final, você precisa copiar para a pasta do shim (
cdh512/
): - core-site.xml
- hbase-site.xml
- hdfs-site.xml
- hive-site.xml
- mapred-site.xml
- yarn-site.xml
- Feche o Spoon e depois inicie novamente a interface.
NOTA: Depois, que configurarmos o kerberos no servidor e no cliente, vamos fazer esse passo novamente.
Configuração de permissões do usuário cloudera
Nosso objetivo final aqui é a configuração de autenticação com o Kerberos, então pra manter a simplicidade agora, vamos fazer um permissionamento simples de escrita para o usuário cloudera, que não deve ser feito em produção.
Entre no terminal da máquina Quickstart
# Alterne para super usuario
sudo su
# Alterne para o usuario hdfs
su hdfs
# De permissão de escrita geral na pasta do cloudera
hadoop fs -chmod 777 /user/cloudera
Teste do cluster no PDI
- Crie uma nova transformação para habilitar os elementos da aba View
- Clique com o botão direito em Hadoop Clusters e escolha New Cluster;
- Altere onde tem
localhost
paraquickstart.cloudera
; - Informe as credenciais do HDFS:
cloudera/cloudera
; - Altere a porta do oozie para
11000
; - Clique em Test;
Ignore o erro que pode aparecer de permissão de acesso à pasta Home.
Agora nós vamos fazer uma transformação simples que joga dados no HDFS. Seguem os passos:
- Crie uma nova trnsformação no Pentaho Data Integration;
- Adicione o Step Generate Rows e coloque lá alguns campos de quaisquer tipos e peça para gerar 1000 linhas;
- Adicione o step Hadoop File Output e configure um hop saindo do Generate Rows para este novo step;
- Em Hadoop Cluster, escolha o cluster que você acabou de configurar;
- Adicione em Folder/File o caminho
/user/cloudera/output-test
; - Na aba Fields, pressione Get Fields, note que aparecem os campos que você configurou no Generate Rows e depois clique OK para fechar o step;
- Rode a transformação;
- Entre no navegador do Name Node (http://quickstart.cloudera:50070/explorer.html#/user/cloudera) e verifique que seu arquivo encontra-se lá.
Parte 02. Ativando o Kerberos no Cloudera
Instale o Kerberos dentro da VM
- Execute o script
sudo /home/cloudera/kerberos
e anote o resultado da saída – se der algum erro, apenas rode novamente que o erro não deve aparecer novamente.
Habilite o Kerberos no seu cluster
- Entre no Cloudera Manager como
admin/admin
; - Vá em Administration > Security e clique em Enable Kerberos
- Passo [1] – Marque as 4 opções e depois Continue
- Passo [2] – Configure:
- Mude o Kerberos Security Realm para o que o script informou (
CLOUDERA
) - Informe o KDC Server Host que o script informou (
quickstart.cloudera
) - Continue
- Passo [3] – Marque Manage krb5.conf through Cloudera Manager e Continue;
- Passo [4] – Informe o usuário e senha que o script gerou (user:
cloudera-scm/admin
, senha:cloudera
) - Passo [5] – Aguarde até aparecer
Successfully imported KDC Account Manager credentials
e depois Continue; - Passo [6] – Vai mostrar os Principals criados pra cada serviço – apenas Continue;
- Passo [7] – Marque Yes, I am ready to restart the cluster now. e Continue;
- Passo [8] – Aguarde O reinicio do cluster. Se algo der errado, você pode abrir o manager em outra aba, parar todos os serviços de uma vez, reiniciar o Cloudera Management Service e depois iniciar todos os serviços novamente.
Se você abrir o terminal agora e digitar:
hdfs dfs -ls /
Deverá aparecer um erro de permissão do Kerberos.
Adicionando um usuário Kerberos
# Você precisa de acesso root
sudo su
# Entra na adm do kerberos
kadmin.local
# Esse comando cadastra um usuario e pede pra digitar senha
addprinc marpontes@CLOUDERA
list_principals
# Sai da adm do kerberos
quit
# testa usuario - vai pedir senha
kinit marpontes@CLOUDERA
# Mostra informação de autenticação no Kerberos
klist
# Agora você também deve ser capaz de ler o hdfs
hdfs dfs -ls /
Agora nós precisamos criar uma pasta para o usuário no HDFS e configurar as permissões dele no cluster
# Localizar keytab do hdfs
sudo su # se ainda não tiver feito
find / -name '*hdfs.keytab'
# Escolher arquivo keytab e logar como hdfs
kinit -kt /var/run/cloudera-scm-agent/process/84-hdfs-NAMENODE/hdfs.keytab hdfs/quickstart.cloudera@CLOUDERA
# Agora você deve ver que está com ticket do hdfs/quickstart.cloudera@CLOUDERA
klist
# Criar os arquivos
hadoop fs -mkdir /user/marpontes
hadoop fs -chown marpontes /user/marpontes
# Testar acesso
kinit marpontes@CLOUDERA
hdfs dfs -ls /user/marpontes
# Verificar configuração do kerberos
vim /etc/krb5.conf
Parte 03. Configurando o PDI com Kerberos
Dependências
A única coisa que precisei fazer na minha distribuição do MacOS, foi alterar o arquivo /etc/krb5.conf
Configurando o Kerberos no cliente
- Edite o arquivo
/etc/krb5.conf
mantendo as configurações que você encontra no seu cluster – lembre-se de que ao final da configuração do usuário, nós verificamos o conteúdo desse arquivo no sistema do Hadoop.
Meu arquivo está da seguinte maneira:
[libdefaults]
default_realm = CLOUDERA
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
proxiable = true
rdns = false
default_tgs_enctypes = rc4-hmac
default_tkt_enctypes = rc4-hmac
permitted_enctypes = rc4-hmac
udp_preference_limit = 1
kdc_timeout = 3000
#default_ccache_name = KEYRING:persistent:%{uid}
[realms]
CLOUDERA = {
kdc = quickstart.cloudera
admin_server = quickstart.cloudera
}
[domain_realm]
- Digite
kinit marpontes@CLOUDERA
e entre sua senha; - Digite
klist
e você deve ver um ticket válido
Configurando o PDI
- Execute novamente os passos descritos na seção Colocação de arquivos para o shim; Você deve sobrescrever novamente os arquivos:
- core-site.xml
- hbase-site.xml
- hdfs-site.xml
- hive-site.xml
- mapred-site.xml
- yarn-site.xml
- Abra o Pentaho Data Integration, vá até a tela de configuração do seu cluster e teste a conexão
Testando a escrita
- Agora abra a mesma transformação que você criou antes e substitua o caminho de saída do arquivo para
/user/marpontes/kerberos-write
Voilà
Agora você pode verificar que o arquivo está lá. Usando a linha de comando da sua máquina virtual ou memso o Pentaho Data Integration, como vamos demonstrar:
- Dentro da mesma transformação, adicione um novo step: “Hadoop File Input”
- Configure o Environment escolhendo seu cluster
- Adicione o caminho
/user/marpontes/
- Adicione o Wildcard
.*
- Clique em Show Filename(s) – Você deve ver seu arquivo lá
Conclusão
Esse setup é a mais básico e serve para garantir que as coisas estão funcionando, verificar o funcionamento de componentes e de rede. Em produção há outras configurações a serem feitas. A lista completa você encontra na documentação oficial da Pentaho – se for interessante para você, podemos continuar essa configuração aqui num cluster mais robusto. Essa conexão entre PDI e Hadoop com Kerberos é algo que sempre aparece para a gente e espero que tenhamos ajudado você.
Se você ainda possui bastante dúvidas no Pentaho Data Integration, se liga que estamos com novidades por ai, em breve lançaremos nosso primeiro Curso Online de PDI, aproveita que tem desconto para quem fizer o pré-cadastro, basta clicar AQUI ou na imagem abaixo 🙂