如何在CentOS 7上安装Apache Zeppelin

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

先决条件

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

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

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

安装Java

Apache Zeppelin用Java编写,因此它需要JDK才能工作。下载Oracle SE JDK RPM软件包。

wget --no-cookies --no-check-certificate --header "Cookie:oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.rpm"

安装下载的软件包。

sudo yum -y localinstall jdk-8u151-linux-x64.rpm

如果Java已成功安装,则您应该能够验证其版本。

java -version

您将看到以下输出。

[user@vultr ~]$ java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

在继续进行之前,我们需要设置JAVA_HOMEJRE_HOME环境变量。在系统中找到JAVA可执行文件的绝对路径。

readlink -f $(which java)

您将看到类似的输出。

[user@vultr ~]$ readlink -f $(which java)
/usr/java/jdk1.8.0_151/jre/bin/java

现在,根据Java目录的路径设置JAVA_HOMEJRE_HOME环境变量。

echo "export JAVA_HOME=/usr/java/jdk1.8.0_151" >> ~/.bash_profile
echo "export JRE_HOME=/usr/java/jdk1.8.0_151/jre" >> ~/.bash_profile

执行bash_profile文件。

source ~/.bash_profile

现在,您可以运行echo $JAVA_HOME命令来检查是否设置了环境变量。

[user@vultr ~]$ echo $JAVA_HOME
/usr/java/jdk1.8.0_151

安装齐柏林飞艇

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 Web服务器配置为反向代理。

配置系统服务

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

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

sudo adduser -d /opt/zeppelin -s /sbin/nologin 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 yum -y install nginx

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

sudo systemctl start nginx
sudo systemctl enable nginx

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

sudo yum -y install certbot

在可以请求证书之前,您将需要允许端口80和/ 443或标准HTTPHTTPS服务通过防火墙。

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload

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

生成SSL证书。

sudo certbot certonly --webroot -w /usr/share/nginx/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/conf.d/zeppelin.example.com.conf

填充文件。

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

重新启动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配置文件中设置的用户名和密码登录。



Leave a Comment

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 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。