如何在Ubuntu 16.04上安装Apache Zeppelin

Apache Zeppelin是基于Web的开放源代码笔记本和协作工具,用于交互式数据提取,发现,分析和可视化。Zeppelin支持20多种语言,包括Apache Spark,SQL,R,Elasticsearch等。Apache Zeppelin允许您创建漂亮的数据驱动的文档并查看分析结果。

先决条件

  • Vultr Ubuntu 16.04服务器实例。
  • 一个 sudo的用户
  • 指向服务器的域名。

在本教程中,我们将使用 zeppelin.example.com 指向Vultr实例的域名作为域名。请确保将所有示例域名都替换为实际的示例域名。

使用指南如何更新Ubuntu 16.04更新基本系统 。系统更新后,继续安装Java。

安装Java

Apache Zeppelin用Java编写,因此它需要JDK才能工作。添加适用于Oracle Java 8的Ubuntu存储库。

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

安装Oracle Java。

sudo apt -y install oracle-java8-installer

验证其版本。

java -version

您将看到以下输出。

user@vultr:~$ 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)

通过安装以下软件包来设置Java的默认路径。

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

您可以JAVA_HOME通过运行验证是否已设置。

echo $JAVA_HOME

你会看见。

user@vultr:~$ echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle

如果您根本看不到任何输出,则需要从当前shell注销并重新登录。

安装齐柏林飞艇

Apache Zeppelin附带了所有依赖项以及二进制文件,因此除了Java之外,我们不需要安装其他任何东西。在您的系统上下载Zeppelin二进制文件。您始终可以在Zeppelin下载页面上找到该应用程序的最新版本 。

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

提取档案。

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

上面的命令会将存档提取到/opt/zeppelin-0.7.3-bin-all。为了方便起见,重命名目录。

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

现在已安装Apache Zeppelin。您可以立即启动该应用程序,但是您只能访问它,因此您将无法访问该应用程序localhost。我们将Apache Zeppelin配置为服务。我们还将Nginx配置为反向代理。

配置系统

在此步骤中,我们将为Zeppelin应用程序设置一个Systemd单位文件。这将确保在系统重新启动和出现故障时自动启动应用程序进程。

出于安全原因,请创建一个没有特权的用户来运行Zeppelin进程。

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

向新创建的Zeppelin用户提供文件的所有权。

sudo chown -R zeppelin:zeppelin /opt/zeppelin

创建一个新的Systemd服务单元文件。

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

用以下内容填充文件。

[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

启动应用程序。

sudo systemctl start zeppelin

启用Zeppelin服务以在启动时自动启动。

sudo systemctl enable zeppelin

为确保服务正在运行,您可以运行以下命令。

sudo systemctl status zeppelin

配置反向代理

默认情况下,Zeppelin服务器localhost 在port上 侦听 8080。我们将使用Nginx的反向代理,这样应用程序可以通过标准的访问 HTTPHTTPS 端口。我们还将Nginx配置为使用由Let's Encrypt free SSL CA生成的SSL。

安装Nginx。

sudo apt -y install nginx

启动Nginx并使它能够在启动时自动启动。

sudo systemctl start nginx
sudo systemctl enable nginx

添加Certbot存储库。

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

安装Certbot,这是Let's Encrypt CA的客户端应用程序。

sudo apt -y install certbot

注意要从Let's Encrypt CA获取证书,必须为其生成证书的域指向服务器。如果不是,请对域的DNS记录进行必要的更改,并在再次发出证书请求之前,等待DNS传播。Certbot在提供证书之前会检查域权限。

生成SSL证书。

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

生成的证书可能存储在中 /etc/letsencrypt/live/zeppelin.example.com/。SSL证书将存储为 fullchain.pem ,私钥将存储为 privkey.pem

让我们加密证书的有效期限为90天,因此建议您使用Cron作业设置证书的自动续订。

打开cron作业文件。

sudo crontab -e

在文件末尾添加以下行。

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

上面的cron作业每天凌晨5:30运行。如果证书到期,它将自动更新。

为Zeppelin站点创建一个新的服务器阻止文件。

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

填充文件。

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;
    }
  }

激活配置文件。

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

重新启动Nginx,以使更改生效。

sudo systemctl restart nginx zeppelin

齐柏林飞艇现在可以在以下地址访问。

https://zeppelin.example.com

默认情况下,未启用身份验证,因此您可以直接使用该应用程序。

由于每个人都可以访问该应用程序,因此每个人也可以访问您创建的笔记本。禁用匿名访问并启用身份验证非常重要,这样只有经过身份验证的用户才能访问应用程序。

禁用匿名访问

要禁用默认的匿名访问,请将配置文件模板复制到其实时位置。

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

编辑配置文件。

sudo nano conf/zeppelin-site.xml

在文件中找到以下几行。

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

将该值更改 false 为禁用匿名访问。

启用S​​hiro身份验证

现在我们已经禁用了匿名访问,我们需要启用某种身份验证机制,以便特权用户可以登录。Apache Zeppelin使用Apache Shiro身份验证。复制Shiro配置文件。

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

编辑配置文件。

sudo nano conf/shiro.ini

在文件中找到以下几行。

[users]

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

该列表包含用户名,密码和用户角色。目前,我们将仅使用 adminuser1。更改和的密码, adminuser1 通过注释其他用户禁用它们。您还可以更改用户名和用户角色。要了解有关Apache Shiro用户和角色的更多信息,请阅读Shiro授权指南

更改密码后,代码块应该会这样。

[users]

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

现在,重新启动Zeppelin以应用更改。

sudo systemctl restart zeppelin

您将看到身份验证已启用,并且可以使用Shiro配置文件中设置的用户名和密码登录。

留下評論

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息