【问题标题】:How can I set-up Zeppelin to be part of startup services on CentOS?如何将 Zeppelin 设置为 CentOS 上启动服务的一部分?
【发布时间】:2018-06-24 17:01:01
【问题描述】:

OP 答案如下(希望对社区有所帮助)

您将在下面看到我的实际答案。 (我发布这个问题是为了传递答案。)我花了一段时间才找到正确的答案,所以我在这里发帖可能会加快其他可怜人的努力。


Apache Zeppelin 安装仅解释 Ubuntu 案例

如果您查看 Apache's site(截至 2018 年 1 月),您将看到在 Ubuntu 操作系统上设置服务(例如,您可以在启动、重启时启动的守护程序等)的说明。你会发现类似的东西:

sudo service zeppelin start
sudo service zeppelin stop
sudo service zeppelin restart

但是,如果您按照该页面进行标准安装,则在使用 CentOS 7 时,默认情况下在安装后没有注册 zeppelin 服务。也就是说,如果您输入类似 service zeppelin start 的内容,该服务将获胜找不到。

此外,对于我正在使用的 CentOS 7,有一个 shift towards using systemctl instead。但是尝试systemctl 也不起作用(zeppelin 未找到)。


Zeppelin 本身工作正常,只有“自动启动”有问题

我可以让直接可执行调用,例如,./bin/zeppelin-daemon.sh start,正常工作。但这并没有提供我想要的解决方案。我想知道如果机器重新启动或其他任何事情,Zeppelin 将可用,因为它在启动时启动。

【问题讨论】:

    标签: centos apache-zeppelin


    【解决方案1】:

    具有挑战性的搜索

    我认为“真相一定存在”,但我搜索的许多路径都没有帮助。

    但是,this link from InfoWorld 成功了。


    关键问题

    总的来说,我需要了解两个问题:

    1. 在 CentOS 7 中,systemctl 是理想的,service 仍然可以接受。
    2. 无论出于何种原因,zeppelin.service 文件不会在 CentOS 中自动创建(也许所有非 Ubuntu 风格的 *nix?),即使标准的 .service 文件可以正常工作。所以请继续阅读该链接,但这个故事的重要部分是我需要执行以下操作:
      1. 从头开始创建一个/etc/systemd/system/zeppelin.service 文件。
      2. 在该文件中,放置以下内容:

    [Unit] Description=Service to run Zeppelin Daemon Documentation= [Service] User=zeppelin Group=zeppelin Type=forking WorkingDirectory=/home/zeppelin ExecStart=/home/zeppelin/zeppelin-current/bin/zeppelin-daemon.sh start ExecStop=/home/zeppelin/zeppelin-current/bin/zeppelin-daemon.sh stop [Install] WantedBy=multi-user.target


    一些细节

    上面的大部分内容可能是不言而喻的(链接的文章并没有过多地解释细节),但这里是一个细分:

    • User=zeppelin:在这种情况下,Zeppelin 实例被设置为多用户,从服务器远程登录。如果您希望在重新启动时自动启动 Zeppelin,您可能有相同的用例。
      • 因此,您“应该”创建一个用户 zeppelin(Zeppelin 软件使用的任何通用用户),这在 InfoWorld 链接中进行了说明,但 also here
    • Group=zeppelin:同上。
    • WorkingDirectory:同上(创建用户zeppelin,在那里安装Zeppelin,yada,yada...链接有更多关于步骤的信息)。
    • ExecStart:这是重点;您需要确保每当您输入service zeppelin start 时,它都指向此路径,即您输入ExecStart 的路径。
    • ExecStop:和上面的想法一样。

    注册新服务

    那么“魔法”的最后一点就是打字:

    systemctl daemon-reload
    

    这是关键。如果这意味着什么,它类似于输入source ~/.bash_profile。这就是您所说的,实际上是刷新所有守护进程。

    最后,我建议明确输入

    service zeppelin start
    

    这样你就可以确定它被找到了。假设它确实做了一些事情(例如,您看到类似 Zeppelin start [ OK ]Redirecting to /bin/systemctl start zeppelin.service... 在任何一种情况下,您都知道 service 已找到并有效)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-02
      • 2013-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 2018-08-23
      • 2017-01-29
      相关资源
      最近更新 更多