YarnException:未经授权的启动容器的请求

时间:2013-11-28 04:42:56

标签: java hadoop mapreduce cluster-computing yarn

我在3个集群上设置了hadoop2.2.0。一切都很顺利。 NodeManager和Datanode在每个集群中启动。但是,当我运行wordcount示例时,会发生100%映射,并且它会出现以下异常:

map 100% reduce 0%
13/11/28 09:57:15 INFO mapreduce.Job: Task Id : attempt_1385611768688_0001_r_000000_0, Status : FAILED
Container launch failed for container_1385611768688_0001_01_000003 : org.apache.hadoop.yarn.exceptions.
YarnException: Unauthorized request to start container.
This token is expired. current time is 1385612996018 found 1385612533275
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

我已经通过互联网找出解决方案。但我找不到。帮帮我。

4 个答案:

答案 0 :(得分:7)

当您的节点具有不同的时间设置时,会发生此异常。 确保所有3个节点具有相同的时间n个时区设置,然后重新启动计算机。

这对我有用。希望对你有所帮助!!!!

答案 1 :(得分:3)

其中一个选项是通过设置

来增加容器的使用寿命

yarn.resourcemanager.rm.container-allocation.expiry-interval-ms

默认为10分钟

E.g。
服务范围/高级
YARN服务配置安全阀用于yarn-site.xml

    <property>
       <name>yarn.resourcemanager.rm.container-allocation.expiry-interval-ms</name>
       <value>1000000</value>
    </property>

答案 2 :(得分:3)

除了时间设置之外,确保节点正在运行NTP或时间同步得很好 - 我遇到了同样的问题并发现其中一个节点在日期中设置了错误的 YEAR 。一旦我把时间放在彼此的几秒钟内,那么错误就消失了。

答案 3 :(得分:1)

如果您突然看到此错误,则可能是由于虚拟机的时间漂移​​。

  

所有虚拟机都容易出现时间漂移。

如果长时间运行的群集未与已知的良好时间源同步,系统时间可能会漂移几分钟。因此,所有群集节点都使用自己的系统时间可以随着时间的推移偶尔漂移。

您的Hadoop作业最初可能会成功运行,因为漂移可能不太明显。但是,在长时间运行的集群中,如果其中一个工作时间漂移太长(与主时间相比)超过10分钟的间隔,则作业会失败,因为计划在此工作人员上的YARN容器将被标记为EXPIRED AM提交它。

关键部分是:

  

“对于任何容器,如果相应的NM未向RM报告   容器已在配置的时间间隔内开始运行   时间,默认为10分钟,容器被认为是死的   由RM过期。“

您可以在此处详细了解YARN容器分配:http://hortonworks.com/blog/apache-hadoop-yarn-resourcemanager/

因此,如果增加yarn-site.xml配置文件中的yarn.resourcemanager.rm.container-allocation.expiry-interval-ms,则作业将起作用。

但这只是一个临时的解决方法。

  

要避免实际问题,您需要使用一些同步   像NTP这样的机制。

NTP 负责与全球时间服务器和您的主/工作节点进行时间同步。

您需要确保NTP守护程序已在群集的所有节点上启动并运行。 NTP还应在群集的整个生命周期内保持“同步”(ntpstat)。一些明显的问题可能导致NTP不同步

  • 您的防火墙可能阻止了UDP端口123.
  • 你可能有AD 具有与NTP冲突的不同时间同步的环境。

http://support.ntp.org/bin/view/Support/TroubleshootingNTP