使用sbin / start-dfs.sh

时间:2020-02-19 07:30:39

标签: php hadoop

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

当我执行start-dfs.sh时,效果很好。

我正在使用的PHP代码是

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

以上代码的输出为

在[localhost]起始datanode上的起始namenode。开始 次要名称节点[chbpc-VirtualBox]。

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

1 个答案:

答案 0 :(得分:0)

答案

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

说明

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

&-为此提供。

也可以使用自定义日志文件/ dev / null,并且stop-dfs.sh中的所有信息都将重定向到该文件。

我对此解决方案的测试

将此代码段复制到您的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

PS

您使用stop-dfs.sh脚本名称来启动hadoop,还是将脚本名称与start.sh混合在一起?

相关问题