YarnException:未经授权的启动容器的请求
我在3个集群上设置了hadoop2.2.0。 一切都很顺利。 NodeManager和Datanode在每个集群中启动。 但是,当我运行wordcount示例时,会发生100%映射,并给出以下exception:
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)
我已经通过互联网找出解决方案。 但我无法找到。 帮帮我。
当节点具有不同的时间设置时,会发生此exception。 确保所有3个节点具有相同的时间n时区设置,然后重新启动计算机。
这对我有用。 希望对你有所帮助!!!!
其中一个选择是通过设置来增加容器的使用寿命
yarn.resourcemanager.rm.container-allocation.expiry-interval-ms
默认为10分钟
例如
服务范围/高级
YARN服务配置用于yarn-site.xml的安全阀
yarn.resourcemanager.rm.container-allocation.expiry-interval-ms 1000000
除了时间设置之外,确保节点正在运行NTP或者时间同步得很好 – 我遇到了同样的问题并发现其中一个节点在日期中设置了错误的YEAR 。 一旦我把时间放在彼此的几秒钟内,那么错误就消失了。
如果您突然看到此错误,那么可能是由于虚拟机的时间漂移。
所有虚拟机都容易出现时间漂移。
如果长时间运行的集群未与已知的良好时间源同步,则系统时间可能会漂移几分钟。 因此,所有群集节点使用自己的系统时间可能会随着时间的推移而随时间漂移。
您的Hadoop作业最初可能会成功运行,因为漂移可能不太明显。 但是,在长时间运行的集群中,如果其中一个工作时间漂移太长(与主时间相比)超过10分钟的间隔,那么作业将失败,因为计划在此工作人员上的YARN容器将尽快标记为EXPIRED AM提交它。
关键部分是:
“对于任何容器,如果相应的NM未向RM报告容器已在配置的时间间隔内开始运行,默认情况下为10分钟,则该容器被视为已死并且已由RM过期。”
您可以在此处了解有关YARN Container分配的更多信息: 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。
- 您可能正在使用与NTP冲突的不同时间同步的AD环境。