我的Java應用程序在mapper上運行,並使用Qubole API創建子進程。應用程序存儲兒童qubole queryID。我需要在退出之前攔截終止信號並關閉子進程。 hadoop job -kill jobId
和yarn application -kill applicationId
命令都以SIGKILL方式查殺作業,我不知道如何攔截關機。是否有可能以某種方式攔截作業殺手或配置hadoop讓應用程序有機會正常關機?如何優雅地殺掉hadoop工作/攔截hadoop job -kill`
當本地運行時,應用程序使用ShutdownHook成功攔截關閉,而不是在映射容器中並且能夠終止其子進程。
請建議如何在mapper中運行時攔截關機,或者我做錯了什麼?
關於ShutdownHooks未被執行,預計應用程序是否被SIGKILL殺死(請參閱:https://stackoverflow.com/questions/2541597/how-to-gracefully-handle-the-sigkill-signal-在-JAVA)。我不相信你能「處理」SIGKILL,正如鏈接中提到的那樣,你可以監控工作的狀態。據我所知,目前爲止還沒有工具可以「正常關機」工作。 – Adonis