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:
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: password1Apó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
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
0 comentários:
Postar um comentário