Utilizando zeppelin com zepl na nuvem(GCP)

Primeiramente gostaria de agradecer ao pessoal da Zepl pelo suporte que eles me deram, em especial para Sejun, Anthony e Khalid.




Vamos começar, iremos montar um ambiente na nuvem do Google(GCP - Google Cloud Platform) utilizando o dataproc, o dataproc é um ambiente que possuí um cluster Apache Hadoop com Apache Spark, neste post estarei utilizando o Google Cloud SDK (Shell da GCP), caso queira baixar SDK segue o link https://cloud.google.com/sdk/downloads?hl=pt-br
O apache zeppelin não vem por padrão instalado no dataproc por isso iremos realizar um clone do repositório do google no github para incluir este serviço ao dataproc, para realizar o git clone digite o comando abaixo:
https://github.com/GoogleCloudPlatform/dataproc-initialization-actions
Após realizar o git clone vamos entrar no diretório/pasta do serviço
cd dataproc-initialization-actions/apache-zeppelin/bin
Agora vou criar um Google Storage para armazenar este script pois eu não deixarei
meu cluster ligado 24/7, ao finalizar a sua utilização irei desligar o cluster para não
obter gastos desnecessários, para criar um Google Storage com a SDK instalada digite o
comando abaixo:
gsutil mb gs://guilhermecolla/
Agora irei copiar o script de instalação/inicialização do zeppelin para dentro do
Storage criado:
gsutil cp zeppelin.sh gs://guilhermecolla/
Agora vamos criar uma regra no firewall da nossa cloud para liberar o acesso a porta 8080 para conseguirmos realizar a conexão do zeppelin
gcloud compute firewall-rules create zeppelin --source-ranges 0.0.0.0/0 --allow tcp:8080 --target-tags master
  • --source-ranges Range de ip para liberação no firewall
  • --allow o protocolo e a porta que o acesso vai ser concedido
  • --target-tags nome da tag que vai ser adicionado na instâcia para essa regra entrar em ação
Após realizar a criação da regra de firewall vamos criar nosso cluster, vamos passar como parâmetro o script de instalação do zeppelin. 
gcloud dataproc clusters create zeppelin --tags master --initialization-actions gs://guilhermecolla/zeppelin.sh --initialization-action-timeout 15m
  • --tags tags de rede a ser utilizada, no caso a tag master foi a tag criada acima
  • --initialization-actions scripts que vão ser executados na inicizalição do cluster, no caso estou utilizando o zeppelin.sh que enviei para o meu Storage
  • --initialization-action-timeout tempo para dar timeout na inicialização
Agora já temos o nosso cluster criado com o zeppelin instalado, caso queira conferir basta digitar no seu navegador:
http://IP_EXTERNO_GCP:8080
Ao digitar essa URL a página do zeppelin deve aparecer conforme abaixo:



Agora vamos configurar o Zepl como nosso repositório de notebook, as informações abaixo foram retiradas da documentação https://docs.zepl.com/ e com o suporte da Zepl.
Primeiro vamos criar uma conta no site https://www.zepl.com
Ao criar a sua conta você deve se deparar com a seguinte tela:
Agora vamos criar o nosso Space clicando em New Space e preencher o formulário conforme abaixo:

  • Name - nome do Space
  • Description - descrição do Space
  • External Repository - se o seu space vai se conectar com o zeppelin,github ou AWS
  • Zeppelin - opção de repositório externo 
Agora clique em Apply e se tudo ocorreu ok, deve aparecer a tela igual a abaixo:
Algumas informações importante, no canto esquerda perceba que o seu status está "Disconnected" ou seja você não está conectado a nenhum repositório externo, e perceba que abaixo do ip 0.0.0.0 temos um hash este é o nosso token de autenticação.
Agora vamos voltar para o nosso cluster com o seguinte comando:
gcloud compute ssh zeppelin-m
zeppelin-m é o nome da minha instância com um -m adicionado no final, -m identificando que é o master do nosso cluster. Agora vamos instalar o Java na versão 8, não deixe de fazer este step, primeiro vamos adicionar o seu repositório:
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | sudo tee /etc/apt/sources.list.d/webupd8team-java.list  
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | sudo tee -a /etc/apt/sources.list.d/webupd8team-java.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
Após adicionar o repositório vamos atualizar a os mesmos:
sudo apt-get update
sudo apt-get install oracle-java8-installer oracle-java8-set-default -y
Agora vamos alterar as configurações do zeppelin para habilitar o Zepl, para habilitar basta realizar algumas alterações no arquivo /etc/zeppelin/conf/zeppelin-env.sh
vim /etc/zeppelin/conf/zeppelin-env.sh
#Alterar a variável JAVA_HOME conforme abaixo
export JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre
#Alterar a variável ZEPPELIN_NOTEBOOK_STORAGE conforme abaixo
export ZEPPELIN_NOTEBOOK_STORAGE="org.apache.zeppelin.notebook.repo.zeppelinhub.ZeppelinHubRepo"
#Alterar as duas variáveis conforme abaixo, o token pode ser obtido no site https://www.zepl.com
export ZEPPELINHUB_API_ADDRESS="https://www.zepl.com"
export ZEPPELINHUB_API_TOKEN="xxxxxxx-xxxxx-xxxx-xxx-xxxxxxxx"
  • ZEPPELIN_NOTEBOOK_STORAGE onde os notebooks estão sendo armazenados
  • ZEPPELINHUB_API_ADDRESS Url da Api
  • ZEPPELINHUB_API_TOKEN Token que foi criado na criação do nosso Space
Pronto Zepl configurado mas antes de terminamos vamos realizar uma alteração no shiro.ini para habilitarmos login com user/password ao invés de ficar logando com anonymous, alterar o arquivo /etc/zeppelin/conf/shiro.ini conforme o antes/depois abaixo:
vim /etc/zeppelin/conf/shiro.ini
#Antes:
/api/version = anon
#/api/interpreter/** = authc, roles[admin]
#/api/configurations/** = authc, roles[admin]
#Depois
/api/credential/** = authc, roles[admin]
#/** = anon
/** = authc

#/api/version = ano
#/api/configurations/** = authc, roles[admin]
#/api/interpreter/** = authc, roles[admin]
/api/credential/** = authc, roles[admin]
#/** = anon
/** = authc


Agora vamos reiniciar o serviço do zeppelin:
systemctl restart zeppelin
Basta abrir o navegador e entrar na url:
http://IP_EXTERNO_GCP:8080
Ao entrar nessa URL no canto superior direito possuí um botão de login as credenciais padrão são:
user: admin
password: password1
Após se logar volte para o Zepl e verifique se o status do seu space está como connect conforme imagem abaixo:

Na imagem acima foi recortado o TOKEN_ID.
Caso esteja como connect, basta criar um notebook no zeppelin e verificar se o mesmo foi replicado para o Zepl conforme imagem abaixo, na imagem abaixo os meus 4 notebooks criados no zeppelin foram replicados no Zepl.
Zeppelin

Zepl

Share:

0 comentários:

Postar um comentário