AWS EMR群集因磁盘已满而失败

时间:2016-12-21 10:37:21

标签: amazon-web-services hadoop amazon-emr

我在一个带有~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 看起来像是同一个问题,但没有解决方案

1 个答案:

答案 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>