hadoop 오류 보고 org.apache.hadoop.mapred.TaskTracker: Process Thread Dump: lost task

다음과 같은 항목이 최근에 잘못 보고되었습니다.
org.apache.hadoop.mapred.TaskTracker: Process Thread Dump: lost task
Thread 2958 (process reaper):
   State: RUNNABLE
    Blocked count: 0
   Waited count: 0
   Stack:
     java.lang.UNIXProcess.waitForProcessExit(Native Method)
     java.lang.UNIXProcess.access$900(UNIXProcess.java:20)
     java.lang.UNIXProcess$1$1.run(UNIXProcess.java:132)
Thread 2957 (JVM Runner jvm_201005091721_0012_m_209736581 spawned.):
   State: WAITING
   Blocked count: 1
   Waited count: 2
   Waiting on [url=mailto:java.lang.UNIXProcess@874c04]java.lang.UNIXProcess@874c04[/url]
   Stack:
     java.lang.Object.wait(Native Method)
     java.lang.Object.wait(Object.java:485)
     java.lang.UNIXProcess.waitFor(UNIXProcess.java:165)
    org.apache.hadoop.util.Shell.runCommand(Shell.java:186)
    org.apache.hadoop.util.Shell.run(Shell.java:134)
    org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:286)        org.apache.hadoop.mapred.JvmManager$JvmManagerForType$JvmRunner.runChild(JvmManager.java:335)   org.apache.hadoop.mapred.JvmManager$JvmManagerForType$JvmRunner.run(JvmManager.java:324)

오류는tasktracker가timeout에 규정된 시간 내에 심장 박동 상태를 되돌려 주지 않았기 때문에jobtracker는 이tasktracker가 죽었다고 생각하고 코드가 죽은 순환이 있는지 확인하거나 처리 시간이 너무 길다고 생각합니다.기본 타임아웃은 10분입니다.
 
해결 방법:
1. 시간 초과 설정:mapred.task.timeout: 1800000을 30분으로 설정
또는 0으로 설정하면 시간 초과를 검사하지 않습니다. 정보 코드가 필요하면 절대 문제없습니다. 0으로 설정하는 것을 권장하지 않습니다. 모든 tasktracker는slaver의child 프로세스이기 때문에 방치하면 이 프로세스는 계속 존재합니다.
 
2. tasktracker 상태가 자동으로 반환됩니다.
context.progress();

 
 
프로젝트에서 코드가 사순환하는 것을 발견한 것은 집단 시간이 동기화되지 않아서 끊임없이elasticsearch를 요청하는 오류가 발생했습니다. 어젯밤 시계가 동기화된 후에 버그가 해결되었습니다.
 
 
 

좋은 웹페이지 즐겨찾기