我在一个带有~10个节点的aws emr集群上运行一些Map-Reduce-Jobs。 (emr 4.7.11,m3.xlarge)
当作业运行时,工作节点在约4小时后逐个开始死亡。 在日志中我发现了以下错误:
"1/3 local-dirs are bad: /mnt/yarn; 1/1 log-dirs are bad: /var/log/hadoop-yarn/containers"
当节点发生故障时,工作节点上的磁盘使用率为96%。 所以我假设节点上的磁盘达到了100%,并且没有文件可以写入磁盘。
所以我尝试将500GB EBS卷附加到每个实例。但是Hadoop只使用/mnt
并且不使用额外的卷(/mnt2
)。
如何配置AWS EMR群集以使用/mnt2
?
我尝试使用配置文件,但群集现在失败,并在bootstrap上出现错误On the master instance (i-id), bootstrap action 6 returned a non-zero
。
不幸的是,在s3存储桶中有自举动作6登录
配置文件:
[
{
"Classification": "core-site",
"Properties": {
"hadoop.tmp.dir": "/mnt2/var/lib/hadoop/tmp"
}
},
{
"Classification": "mapred-site",
"Properties": {
"mapred.local.dir": "/mnt2/var/lib/hadoop/mapred"
}
}
]
任何人都有提示为什么群集在启动时失败? 或者是否有另一种方法来增加m3.xlarge实例的初始EBS卷?
https://forums.aws.amazon.com/thread.jspa?threadID=225588 看起来像是同一个问题,但没有解决方案
答案 0 :(得分:0)
如果磁盘(如/ mnt /)超过90%,则核心/任务节点将被标记为运行不正常且无法使用。
请参阅yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage
http://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop-yarn-common/yarn-default.xml
现在,如果您使用EMR API附加EBS卷(在配置群集时),则EMR会自动将这些卷用于某些属性。例如:mapred.local.dir将使用所有安装。但是,某些属性(如hadoop.tmp.dir,yarn.nodemanager.log-dirs)可能不会使用所有安装。对于此类属性,您需要添加逗号目录路径作为值,并使用配置API或手动编辑必要文件来设置它们。
<property>
<name>mapred.local.dir</name>
<value>/mnt/mapred,/mnt1/mapred</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/mnt/var/lib/hadoop/tmp</value>
</property>