配置hadoop.service.shutdown.timeout属性

问题描述 投票:0回答:1

我需要配置

hadoop.service.shutdown.timeout
的值,因为当我们的 MR 作业停止时关闭钩子会触发超时:

2023-08-25 08:44:39,566 [WARN] [Thread-0] [org.apache.hadoop.util.ShutdownHookManager] - ShutdownHook '' timeout, java.util.concurrent.TimeoutException
java.util.concurrent.TimeoutException
at java.util.concurrent.FutureTask.get(FutureTask.java:205)
at org.apache.hadoop.util.ShutdownHookManager.executeShutdown(ShutdownHookManager.java:124)
at org.apache.hadoop.util.ShutdownHookManager$1.run(ShutdownHookManager.java:95)

问题在于,只有在

core-site.xml
中设置了该值才生效。例如,如果我们将其作为属性添加到环境变量 YARN_OPTS (
-D hadoop.service.shutdown.timeout
) 或在代码中设置它(传递给
ToolRunner
的 Configuration 类的实例),即使值发生变化(我们检查过)这是通过日志记录实现的),如果文件中未指定,则根据
core-site.xml
中的值或默认值触发超时。

此属性只能通过

core-site.xml
配置文件进行配置吗?

hadoop mapreduce hadoop-yarn hadoop2
1个回答
0
投票

我相信简短的答案是“是”,仅通过

core-site.xml
,因为 Hadoop 的
ShutdownHookManager
在关闭执行器线程时通过读取
core-site.xml
创建一个新的配置对象。

长答案更长,但仍然是“可能是”,除非您找到一种方法来遵循上述类的注释中相当晦涩的建议,以使用

addShutdownHook()
:

显式注册钩子
>  * Unless a hook was registered with a shutdown explicitly set through
>  * {@link #addShutdownHook(Runnable, int, long, TimeUnit)},
>  * the shutdown time allocated to it is set by the configuration option
>  * {@link CommonConfigurationKeysPublic#SERVICE_SHUTDOWN_TIMEOUT} in
>  * {@code core-site.xml}, with a default value of
>  * {@link CommonConfigurationKeysPublic#SERVICE_SHUTDOWN_TIMEOUT_DEFAULT}
© www.soinside.com 2019 - 2024. All rights reserved.