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



我已经在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)

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

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

这对我很有效。希望这对你也有帮助!!!!

其中一个选项是通过设置来延长容器的使用寿命

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

默认情况下为10分钟

例如
服务范围/高级
YARN-site.xml的YARN服务配置安全阀

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

除了时间设置之外,还要确保节点运行NTP或时间同步得相当好-我遇到了同样的问题,发现其中一个节点的日期设置错误。一旦我把时间间隔在几秒钟内,错误就消失了。

如果您突然看到这个错误,那么它可能是由于虚拟机的时间漂移引起的。

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

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

Hadoop作业最初可能会成功运行,因为漂移可能不太明显。但是,在长时间运行的集群上,如果其中一个工作进程的时间漂移太长(与主进程的时间相比),超过了10分钟的间隔,那么作业就会失败,因为AM一提交作业,在该工作进程上调度的YARN容器就会被标记为EXPIRED。

关键部分是:

"对于任何集装箱,如果相应的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

相关内容

  • 没有找到相关文章

最新更新