java - hadoop 일을 우아하게/죽이는 법`hadoop job-kill`



mapreduce qubole (1)

SIGKILL은 멈출 수 없으며 어떤 프로세스도이를 잡을 수 없습니다. 자바 애플리케이션도 JVM 자체도 ... 실제로 이벤트는 프로세스로 전송되지 않습니다. 커널이 모든 프로세스 리소스를 지체없이 직접 폐기하라는 직접적인 명령이라고 생각하면됩니다.

man 7 signal :

시그널 SIGKILL과 SIGSTOP은 붙 잡히거나 차단되거나 무시 될 수 없다.

이것은 기본 코어 커널 기능이며,이를 우회 할 수 없습니다.

또한 Prabhu (2015-07-15) 에 따라 hadoop 작업을 죽이는 방법 에 유의하십시오.

다음 명령의 사용이 감가 상각됩니다.

hadoop job -list
hadoop job -kill $jobId

사용을 고려하다

mapred job -list
mapred job -kill $jobId

이것은 Apache Hadoop - 비추천 API 문서 에서 확인됩니다.

불행하게도, 현재의 mapred command documentation 에 따르면, 작업을 종료하기 위해 보내지는 신호의 타입을 제어 할 수 없다.

Java 응용 프로그램은 mapper에서 실행되며 Qubole API를 사용하여 하위 프로세스를 만듭니다. 응용 프로그램에 자식 qubole 쿼리 ID가 저장됩니다. 나가기 전에 신호를 차단하고 자식 프로세스를 종료해야합니다. hadoop job -kill jobIdyarn application -kill applicationId 명령이 SIGKILL 방식으로 작업을 종료하고 있는데, 종료를 가로채는 방법을 모르겠습니다. 여하튼 잡 죽이기를 가로 채거나 hadoop을 구성하여 응용 프로그램 기회를 정상적으로 종료 할 수 있습니까?

매퍼 컨테이너가 아닌 로컬로 실행 중일 때 ShutdownHook을 사용하여 응용 프로그램이 성공적으로 종료를 가로 채고 하위 프로세스를 종료 할 수 있습니다.

매퍼에서 실행 중일 때 종료를 차단하는 방법을 제안하십시오. 아니면 잘못된 것입니다.





qubole