Como instalar o Apache Zeppelin no Ubuntu 16.04

Você está aqui:
Tempo estimado de leitura: 4 min

O Apache Zeppelin é um notebook de código aberto baseado na Web e uma ferramenta colaborativa para ingestão, descoberta, análise e visualização de dados interativos. O Zeppelin suporta mais de 20 idiomas, incluindo o Apache Spark, SQL, R, Elasticsearch e muitos mais. O Apache Zeppelin permite criar lindos documentos controlados por dados e ver os resultados de sua análise.

Pré-requisitos

  • Uma instância do servidor Site & Site Ubuntu 16.04.
  • Um usuário sudo .
  • Um nome de domínio apontado para o servidor.

Para este tutorial, usaremos zeppelin.example.com como o nome de domínio apontado para a instância do Vultr. Por favor, certifique-se de substituir todas as ocorrências do nome do domínio de exemplo com o atual.

Atualize seu sistema básico usando o guia Como atualizar o Ubuntu 16.04 . Depois que seu sistema tiver sido atualizado, prossiga para instalar o Java.

Instale Java

O Apache Zeppelin é escrito em Java, portanto, requer que o JDK funcione. Adicione o repositório do Ubuntu para o Oracle Java 8.

sudo add-apt-repository --yes ppa:webupd8team/java
sudo apt update

Instale o Oracle Java.

sudo apt -y install oracle-java8-installer

Verifique sua versão.

java -version

Você verá a seguinte saída.

[email protected]:~$ java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

Configure o caminho padrão para o Java instalando o pacote a seguir.

sudo apt -y install oracle-java8-set-default

Você pode verificar se JAVA_HOMEestá definido executando.

echo $JAVA_HOME

Você verá.

[email protected]:~$ echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle

Se você não vir nenhuma saída, precisará sair do shell atual e efetuar login novamente.

Instalar o Zeppelin

O Apache Zeppelin envia todas as dependências junto com os arquivos binários, portanto, não precisamos instalar nada a não ser o Java. Baixe o binário do Zeppelin no seu sistema. Você sempre pode encontrar a versão mais recente do aplicativo na página de download do Zeppelin .

wget http://www-us.apache.org/dist/zeppelin/zeppelin-0.7.3/zeppelin-0.7.3-bin-all.tgz

Extraia o arquivo.

sudo tar xf zeppelin-*-bin-all.tgz -C /opt

O comando acima irá extrair o arquivo para /opt/zeppelin-0.7.3-bin-all. Renomeie o diretório por conveniência.

sudo mv /opt/zeppelin-*-bin-all /opt/zeppelin

O Apache Zeppelin está agora instalado. Você pode iniciar imediatamente o aplicativo, mas ele não será acessível a você, pois ele localhostapenas escuta . Vamos configurar o Apache Zeppelin como um serviço. Também vamos configurar o Nginx como um proxy reverso.

Configurar o Systemd

Nesta etapa, vamos configurar um arquivo de unidade Systemd para o aplicativo Zeppelin. Isso garantirá que o processo do aplicativo seja iniciado automaticamente na reinicialização e falhas do sistema.

Por motivos de segurança, crie um usuário sem privilégios para executar o processo do Zeppelin.

sudo useradd -d /opt/zeppelin -s /bin/false zeppelin

Forneça a propriedade dos arquivos ao usuário recém-criado do Zeppelin.

sudo chown -R zeppelin:zeppelin /opt/zeppelin

Crie um novo arquivo de unidade de serviço Systemd.

sudo nano /etc/systemd/system/zeppelin.service

Preencha o arquivo com o seguinte.

[Unit]
Description=Zeppelin service
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/opt/zeppelin/bin/zeppelin-daemon.sh start
ExecStop=/opt/zeppelin/bin/zeppelin-daemon.sh stop
ExecReload=/opt/zeppelin/bin/zeppelin-daemon.sh reload
User=zeppelin
Group=zeppelin
Restart=always

[Install]
WantedBy=multi-user.target

Inicie o aplicativo.

sudo systemctl start zeppelin

Ative o serviço Zeppelin para iniciar automaticamente no momento da inicialização.

sudo systemctl enable zeppelin

Para garantir que o serviço esteja em execução, você pode executar o seguinte.

sudo systemctl status zeppelin

Configurar o proxy reverso

Por padrão, o servidor Zeppelin escuta localhost na porta 8080. Usaremos o Nginx como um proxy reverso para que o aplicativo possa ser acessado por meio de portas HTTP e padrão HTTPS. Também configuraremos o Nginx para usar um SSL gerado com o Let’s Encrypt Free SSL CA.

Instale o Nginx.

sudo apt -y install nginx

Inicie o Nginx e ative-o para iniciar automaticamente no momento da inicialização.

sudo systemctl start nginx
sudo systemctl enable nginx

Adicione o repositório do Certbot.

sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update

Instale o Certbot, que é o aplicativo cliente para o Let’s Encrypt CA.

sudo apt -y install certbot

Nota : Para obter certificados de Let’s Encrypt CA, o domínio para o qual os certificados serão gerados deve estar voltado para o servidor. Caso contrário, faça as alterações necessárias nos registros DNS do domínio e aguarde o DNS se propagar antes de fazer a solicitação de certificado novamente. O Certbot verifica a autoridade do domínio antes de fornecer os certificados.

Gere os certificados SSL.

sudo certbot certonly --webroot -w /var/www/html -d zeppelin.example.com

Os certificados gerados provavelmente serão armazenados em /etc/letsencrypt/live/zeppelin.example.com/. O certificado SSL será armazenado fullchain.pem e a chave privada será armazenada como privkey.pem.

Vamos Criptografar certificados expiram em 90 dias, portanto, é recomendável configurar a renovação automática dos certificados usando trabalhos Cron.

Abra o arquivo de trabalho cron.

sudo crontab -e

Adicione a seguinte linha no final do arquivo.

30 5 * * * /usr/bin/certbot renew --quiet

O cron job acima será executado todos os dias às 5:30 da manhã. Se o certificado estiver vencido, ele será automaticamente renovado.

Crie um novo arquivo de bloco de servidor para o site Zeppelin.

sudo nano /etc/nginx/sites-available/zeppelin

Preencha o arquivo.

upstream zeppelin {
server 127.0.0.1:8080;
}
server {
    listen 80;
    server_name zeppelin.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443;
    server_name zeppelin.example.com;

    ssl_certificate           /etc/letsencrypt/live/zeppelin.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/zeppelin.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log  /var/log/nginx/zeppelin.access.log;

location / {
        proxy_pass http://zeppelin;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_redirect off;
    }
location /ws {
    proxy_pass http://zeppelin/ws;
    proxy_http_version 1.1;
    proxy_set_header Upgrade websocket;
    proxy_set_header Connection upgrade;
    proxy_read_timeout 86400;
    }
  }

Ative o arquivo de configuração.

sudo ln -s /etc/nginx/sites-available/zeppelin /etc/nginx/sites-enabled/zeppelin

Reinicie o Nginx para que as alterações entrem em vigor.

sudo systemctl restart nginx zeppelin

O Zeppelin está agora acessível no seguinte endereço.

https://zeppelin.example.com

Por padrão, não há autenticação ativada, portanto, você pode usar o aplicativo diretamente.

Como o aplicativo é acessível a todos, os cadernos que você cria também são acessíveis a todos. É muito importante desabilitar o acesso anônimo e habilitar a autenticação para que somente os usuários autenticados possam acessar o aplicativo.

Desativar acesso anônimo

Para desabilitar o acesso anônimo padrão, copie o modelo do arquivo de configuração em seu local ativo.

cd /opt/zeppelin
sudo cp conf/zeppelin-site.xml.template conf/zeppelin-site.xml

Edite o arquivo de configuração.

sudo nano conf/zeppelin-site.xml

Encontre as seguintes linhas no arquivo.

<property>
  <name>zeppelin.anonymous.allowed</name>
  <value>true</value>

Altere o valor para false desativar o acesso anônimo.

Ativar autenticação Shiro

Agora que desativamos o acesso anônimo, precisamos ativar algum tipo de mecanismo de autenticação para que os usuários com privilégios possam efetuar login. O Apache Zeppelin usa a autenticação Apache Shiro. Copie o arquivo de configuração Shiro.

sudo cp conf/shiro.ini.template conf/shiro.ini

Edite o arquivo de configuração.

sudo nano conf/shiro.ini

Encontre as seguintes linhas no arquivo.

[users]

admin = password1, admin
user1 = password2, role1, role2
user2 = password3, role3
user3 = password4, role2

A lista contém o nome de usuário, senha e funções dos usuários. Por enquanto, só usaremos admin e user1. Altere a senha de admin e user1 e desative os outros usuários comentando-os. Você também pode alterar o nome de usuário e as funções dos usuários. Para saber mais sobre usuários e funções do Apache Shiro, leia o guia de autorização do Shiro .

Depois de ter alterado as senhas, o bloco de código deve ser assim.

[users]

admin = StrongPassword, admin
user1 = UserPassword, role1, role2
# user2 = password3, role3
# user3 = password4, role2

Agora reinicie o Zeppelin para aplicar as alterações.

sudo systemctl restart zeppelin

Você verá que a autenticação foi ativada e poderá efetuar login usando o nome de usuário e senha definidos no arquivo de configuração do Shiro.

Esse artigo foi útil?
Não Gostei 0
Visualizações: 143

Ainda não Têm uma Conta?

Então Cadastre-se

Nome de Usuário*
E-mail*
Senha*
Confirmar Senha*

Já têm Uma Conta? Click Aqui.

Já tem uma Conta?

Ainda não tem Conta?