【问题标题】:Start Hadoop cluster using sbin/start-dfs.sh使用 sbin/start-dfs.sh 启动 Hadoop 集群
【发布时间】:2020-02-19 07:30:39
【问题描述】:

我想用 PHP 而不是终端来启动 Hadoop 守护进程。

当我执行 start-dfs.sh 时,它运行良好。

我使用的 PHP 代码是

<?php
    echo shell_exec('/usr/local/hadoop3/sbin/stop-dfs.sh');
?>

以上代码的输出是

在 [localhost] 启动数据节点上启动名称节点。开始 辅助名称节点 [chbpc-VirtualBox] .

但是当我在浏览器中输入 url http://localhost:9870/dfshealth.html#tab-overview(检查我的 Hadoop 的状态)时,尽管有上面的输出,它实际上并没有启动。

【问题讨论】:

  • 我建议你安装 Apache Amarbi 而不是开始制作自己的 Hadoop 仪表板

标签: php hadoop


【解决方案1】:

回答

<?php
    echo shell_exec('/usr/local/hadoop3/sbin/stop-dfs.sh > /dev/null &');
?>

说明

当你使用 shell_exec 运行守护进程时,你应该从这个进程中分离出来以完成你的 shell_exec 命令,但你应该保持守护进程处于进程状态。

&amp; - 提供这样做。

另外 /dev/null 您可能正在使用您的自定义日志文件,并且来自 stop-dfs.sh 的所有信息都将重定向到此文件。

我对此解决方案的测试

将此 sn-p 复制到您的 bash 控制台:

cat <<EOT > daemon.sh
while true; do date; sleep 1; done

EOT

chmod +x daemon.sh

cat <<EOT > daemon-runner.php
<?php
    echo shell_exec(__DIR__ . '/daemon.sh > daemon-log &');

EOT

touch daemon-log

php daemon-runner.php

tail -f daemon-log

附言

您使用stop-dfs.sh 脚本名称来启动您的hadoop,也可能您将脚本名称与start.sh 混淆了?

【讨论】:

  • 我试过这个代码。但它没有显示任何结果,而且我的 hadoop 也没有停止
  • 您尝试手动运行/usr/local/hadoop3/sbin/stop-dfs.sh 吗?如果您在 bash 中手动运行此脚本,该脚本会停止您的 hadoop?
  • hm,这很陌生,我建议你,尝试运行这个 php 脚本:&lt;?php echo shell_exec('/usr/local/hadoop3/sbin/stop-dfs.sh &gt; /tmp/stop-log &amp;'); ?&gt;,运行后,你应该会看到/tmp/stop-log 文件cat /tmp/stop-log 以获取有关停止过程的更多详细信息。
  • 也可能你的 php 用户 - www-data 没有停止你的 hadoop 的权限。要检查这种情况,请尝试像这样以 sudo 运行脚本:&lt;?php echo shell_exec('echo YOUR_SUDO_PASSWORD | sudo -S /usr/local/hadoop3/sbin/stop-dfs.sh &gt; /dev/null &amp;'); 或查看:unix.stackexchange.com/questions/115054/…
  • 没有得到相同的输出:在 [localhost] 停止数据节点上停止名称节点。停止辅助名称节点 [chbpc-VirtualBox] 。但是当我在浏览器中检查 url:localhost:9870/dfshealth.html#tab-overview(检查我的 Hadoop 的状态)时,它实际上并没有停止
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-15
  • 1970-01-01
  • 2021-01-28
  • 1970-01-01
  • 1970-01-01
  • 2016-04-22
  • 2020-05-27
相关资源
最近更新 更多