Skip to main content
Cloudera Quickstart com Kerberos e Pentaho Data Integration - começando do zero

Cloudera Quickstart com Kerberos e Pentaho Data Integration – começando do zero

0 Flares Twitter 0 Facebook 0 Filament.io 0 Flares ×

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:

  • 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 para quickstart.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

  • Instale o Kerberos – instalável no Linux, Windows e no Mac (que já traz instalado).

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ê.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

0 Flares Twitter 0 Facebook 0 Filament.io 0 Flares ×