8

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

4 回答 4

8

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

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

于 2013-12-04T11:46:26.563 回答
3

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

于 2014-02-16T21:39:55.173 回答
3

选项之一是通过设置来增加容器的寿命

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

默认情况下是 10 分钟

例如
Service-Wide / Advanced
YARN Service Configuration Safety Valve for yarn-site.xml

    <property>
       <name>yarn.resourcemanager.rm.container-allocation.expiry-interval-ms</name>
       <value>1000000</value>
    </property>
于 2014-01-21T11:42:43.907 回答
1

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

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

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

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

关键部分是:

“对于任何一个容器,如果对应的NM没有在配置的时间间隔内(默认10分钟)向RM报告容器已经开始运行,则该容器被RM视为死亡并过期。”

您可以在此处了解有关 YARN 容器分配的更多信息:http: //hortonworks.com/blog/apache-hadoop-yarn-resourcemanager/

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

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


为避免实际问题,您需要使用一些同步机制,如 NTP。

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

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

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

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

于 2016-03-28T19:47:39.027 回答