疑问:hadoop.service.shutdown.timeout是否仅可通过core-site.xml配置?
hadoop.service.shutdown.timeout参数的配置限制
这个参数确实只能通过core-site.xml这类Hadoop全局配置文件来配置,核心原因在于ShutdownHookManager的初始化逻辑:
- ShutdownHookManager会在Hadoop服务/作业启动的最早期完成初始化,此时它会直接读取Hadoop全局Configuration实例中的
hadoop.service.shutdown.timeout值,而这个全局实例优先加载的是core-site.xml等系统级配置文件。 - 你尝试的两种方式都无法覆盖这个初始值:
- 通过
YARN_OPTS添加-Dhadoop.service.shutdown.timeout:虽然能修改JVM系统属性,但ShutdownHookManager已经在启动初期读取过参数值,不会再动态更新。 - 在代码中通过ToolRunner的Configuration实例设置:这个Configuration是作业级别的,仅作用于作业自身的配置逻辑,无法影响框架层面已经初始化完成的ShutdownHookManager的超时设置。
- 通过
附上你提供的超时日志:
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)
内容的提问来源于stack exchange,提问作者Evelina Dumitrescu
相关产品推荐
相关产品推荐

