【问题标题】:Hadoop daemons can't stop using proper commandHadoop 守护进程无法停止使用正确的命令
【发布时间】:2016-04-08 04:11:37
【问题描述】:

运行 Hadoop 系统会运行一些守护程序作业,例如 namenode、journalnode 等。我将以 namenode 为例。

当我们启动namenode时,我们可以使用命令:hadoop-daemon.sh start namenode

当我们停止namenode时,我们可以使用命令:hadoop-daemon.sh stop namenode。

但是问题来了,如果我昨天或几个小时前才启动名称节点,停止命令可以正常工作。但是如果namenode已经工作了1个月。当我使用停止命令时,它会显示:

没有要停止的名称节点。

但是我可以看到使用命令 JPS 运行的守护进程 NameNode。然后我必须使用kill命令来杀死进程。

为什么会发生这种情况?有什么方法可以确保停止命令始终有效?

谢谢

【问题讨论】:

    标签: linux hadoop


    【解决方案1】:

    hadoop-daemon.sh 一段时间后不起作用的原因是因为在 hadoop-env.sh 中有调用的参数: 导出 HADOOP_PID_DIR 导出 HADOOP_SECURE_DN_PID_DIR 其中存储了这些守护进程的 pid 号。该目录的默认位置是 /tmp。问题是 /tmp 文件夹会在一段时间后自动清理(Red Hat Linux)。在这种情况下,pid文件被删除,所以 当我们运行 daemon 命令时,该命令找不到存储在该文件中的进程 ID。 与 yarn-daemon.sh 命令相同。

    修改hadoop-env.sh: HADOOP_PID_DIR HADOOP_SECURE_DN_PID_DIR 纱线-env.sh: YARN_PID_DIR mapred-env.sh: HADOOP_MAPRED_PID_DIR 到其他目录而不是使用默认的 /tmp 文件夹应该可以解决问题。 修改后,重启所有相关进程。 同样出于安全考虑,包含 pid 的文件夹不应被其他非管理员用户访问。

    【讨论】:

    • 如何停止 hadoop?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 2014-07-17
    • 2013-09-20
    • 1970-01-01
    相关资源
    最近更新 更多