我在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)
我已经通过互联网找出解决方案。但我找不到。帮帮我。
答案 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不同步