【发布时间】:2018-07-11 02:39:59
【问题描述】:
我对 Amazon EMR 集群上的 HDFS 设置进行了一些更改。我想重新启动 namenode 和 datanode 以使更改生效。我在namenode(master)和datanodes上都找不到任何启动和停止脚本。应该怎样重启集群?
【问题讨论】:
我对 Amazon EMR 集群上的 HDFS 设置进行了一些更改。我想重新启动 namenode 和 datanode 以使更改生效。我在namenode(master)和datanodes上都找不到任何启动和停止脚本。应该怎样重启集群?
【问题讨论】:
在 EMR4 上,在主控主机上运行以下命令 -
sudo /sbin/start hadoop-hdfs-namenode
ssh -i <key.pem> <slave-hostname1> "sudo /sbin/restart hadoop-hdfs-datanode"
ssh -i <key.pem> <slave-hostname2> "sudo /sbin/restart hadoop-hdfs-datanode"
ssh -i <key.pem> <slave-hostname3> "sudo /sbin/restart hadoop-hdfs-datanode"
【讨论】:
您必须手动重新启动集群。这可以手动执行,也可以使用简单的 shell 脚本执行。
1) 获取所有节点的主机名或IP地址列表,
2) 使用密钥 ssh 进入节点
3) 重启需要的服务。
如果您擅长编程,您可以创建一个通用实用程序,该实用程序将使用集群 id 获取与 EMR 对应的所有节点的 ipaddress 列表,并在各个节点中执行服务重启。
否则,手动获取所有节点的主机名或IP地址,并创建如下脚本并从主节点执行
sudo service hadoop-hdfs-namenode restart
ssh -i <key.pem> <hostname1> "sudo service hadoop-hdfs-datanode restart"
ssh -i <key.pem> <hostname2> "sudo service hadoop-hdfs-datanode restart"
ssh -i <key.pem> <hostname3> "sudo service hadoop-hdfs-datanode restart"
【讨论】:
sudo restart hadoop-hdfs-namenode
在 EMR 5.x 上,这是我使用的:
将 PEM 文件复制到您的头节点并设置以下值:
CLUSTER_ID="j-XXXXXXXXXXX"
IDENT="cluster.pem"
运行这个:
nodes=$(aws emr list-instances \
--cluster-id $ \
--instance-group-types CORE \
--instance-states RUNNING \
--output text \
--query "Instances[*].PublicDnsName" )
for node in nodes; do
ssh -i $IDENT \
-o StrictHostKeyChecking=no \
-o UserKnownHostsFile=/dev/null \
$node "sudo stop hadoop-hdfs-datanode; sudo start hadoop-hdfs-datanode"
done
【讨论】: