我正在使用 Amazon EMR(Hadoop2/AMI 版本:3.3.1)并且我想更改默认配置(例如复制因子)。为了使更改生效,我需要重新启动集群,这就是我的问题开始的地方。
怎么做?我在 ./.versions/2.4.0/sbin/stop-dfs.sh
找到的脚本不起作用。从文件 ./.versions/2.4.0/etc/hadoop/slaves
无论如何都是空的。 init.d中有一些脚本:
$ ls -l/etc/init.d/hadoop-*
-rwxr-xr-x 1 root root 477 Nov 8 02:19/etc/init.d/hadoop-datanode
-rwxr-xr-x 1 root root 788 Nov 8 02:19/etc/init.d/hadoop-httpfs
-rwxr-xr-x 1 root root 481 Nov 8 02:19/etc/init.d/hadoop-jobtracker
-rwxr-xr-x 1 root root 477 Nov 8 02:19/etc/init.d/hadoop-namenode
-rwxr-xr-x 1 root root 1632 Oct 27 21:12/etc/init.d/hadoop-state-pusher-control
-rwxr-xr-x 1 root root 484 Nov 8 02:19/etc/init.d/hadoop-tasktracker
但是如果我停止 namenode 的东西会立即再次启动它。我查找了文档,Amazon 提供了 600 页的用户指南,但更多的是如何使用集群而不是维护。
最佳答案
在 EMR 3.x.x
上,它使用传统的 SysVInit 脚本来管理服务。 ls/etc/init.d/
可以告诉你这些服务的 list 。您可以像这样重新启动服务,
sudo service hadoop-namenode restart
But if I for example stop the namenode something will start it again immediately.
不过,EMR 也有一个名为 service-nanny
的进程,用于监控 hadoop 相关服务并确保所有 em' 始终处于运行状态。这是将它带回来的神秘过程。
因此,要真正重新启动服务,您需要停止服务保姆一段时间,然后重新启动/停止必要的进程。一旦您带回 service nanny ,它就会再次发挥作用。因此,您可以运行如下命令 -
sudo service service-nanny stop
sudo service hadoop-namenode restart
sudo service service-nanny start
请注意,此行为在 4.x.x 和 5.x.x AMI 中有所不同,其中 upstart 用于停止/启动应用程序,而 service-nanny 不再带回应用程序。
关于hadoop - 重启 Amazon EMR 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28108508/