복붙노트

[HADOOP] "작업 시도 _201104251139_0295_r_000006_0 작업이 600 초 동안 상태를보고하지 못했습니다."

HADOOP

"작업 시도 _201104251139_0295_r_000006_0 작업이 600 초 동안 상태를보고하지 못했습니다."

데이터 집합에서 일부 정보를 추출하는 mapreduce 작업을 썼습니다. 데이터 세트는 영화에 대한 사용자의 평점입니다. 사용자 수는 약 250K이고 영화 수는 약 300k입니다. map 출력은 *> 및 *>입니다. 감속기에서, 나는이 쌍을 처리 할 것입니다.

그러나 내가 작업을 수행 할 때 매퍼는 예상대로 완료되지만 감속기는 항상

Task attempt_* failed to report status for 600 seconds.

이것은 상태를 업데이트하지 못해서 발생했기 때문에 다음과 같이 context.progress ()에 대한 호출을 추가했습니다.

int count = 0;
while (values.hasNext()) {
  if (count++ % 100 == 0) {
    context.progress();
  }
  /*other code here*/
}

불행히도, 이것은 도움이되지 않습니다. 여전히 많은 작업을 줄였습니다.

다음은 로그입니다.

Task attempt_201104251139_0295_r_000014_1 failed to report status for 600 seconds. Killing!
11/05/03 10:09:09 INFO mapred.JobClient: Task Id : attempt_201104251139_0295_r_000012_1, Status : FAILED
Task attempt_201104251139_0295_r_000012_1 failed to report status for 600 seconds. Killing!
11/05/03 10:09:09 INFO mapred.JobClient: Task Id : attempt_201104251139_0295_r_000006_1, Status : FAILED
Task attempt_201104251139_0295_r_000006_1 failed to report status for 600 seconds. Killing!

BTW, 오류가 복사 단계로 축소에서 일어난 로그는 말한다 :

reduce > copy (28 of 31 at 26.69 MB/s) > :Lost task tracker: tracker_hadoop-56:localhost/127.0.0.1:34385

도와 주셔서 감사합니다.

해결법

  1. ==============================

    1.가장 쉬운 방법은이 구성 매개 변수를 설정하는 것입니다.

    가장 쉬운 방법은이 구성 매개 변수를 설정하는 것입니다.

    <property>
      <name>mapred.task.timeout</name>
      <value>1800000</value> <!-- 30 minutes -->
    </property>
    

    in mapred-site.xml

  2. ==============================

    2.가장 쉬운 방법은 프로그램 내부에서 작업 구성을 설정하는 것입니다

    가장 쉬운 방법은 프로그램 내부에서 작업 구성을 설정하는 것입니다

     Configuration conf=new Configuration();
     long milliSeconds = 1000*60*60; <default is 600000, likewise can give any value)
     conf.setLong("mapred.task.timeout", milliSeconds);
    

    ** 설정하기 전에 jobtracker GUI의 job 파일 (job.xml) 파일에서 올바른 속성 이름인지 확인하십시오. mapred.task.timeout 또는 mapreduce.task.timeout . . . 작업 파일에서 해당 속성이 설정된 값에 따라 변경되는지 다시 검사합니다.

  3. ==============================

    3.새로운 버전에서,이 링크 (task.timeout 검색)에 설명 된대로 매개 변수의 이름이 mapreduce.task.timeout으로 변경되었습니다. 또한 위의 링크에서 설명한대로이 시간 제한을 비활성화 할 수도 있습니다.

    새로운 버전에서,이 링크 (task.timeout 검색)에 설명 된대로 매개 변수의 이름이 mapreduce.task.timeout으로 변경되었습니다. 또한 위의 링크에서 설명한대로이 시간 제한을 비활성화 할 수도 있습니다.

    다음은 mapred-site.xml의 설정 예입니다.

    <property>
      <name>mapreduce.task.timeout</name>
      <value>0</value> <!-- A value of 0 disables the timeout -->
    </property>
    
  4. ==============================

    4.하이브 쿼리와 타임 아웃이있는 경우 위의 구성을 다음과 같이 설정할 수 있습니다.

    하이브 쿼리와 타임 아웃이있는 경우 위의 구성을 다음과 같이 설정할 수 있습니다.

    set mapred.tasktracker.expiry.interval = 1800000;

    set mapred.task.timeout = 1800000;

  5. ==============================

    5.https://issues.apache.org/jira/browse/HADOOP-1763에서

    https://issues.apache.org/jira/browse/HADOOP-1763에서

    원인은 다음과 같습니다.

    1. Tasktrackers run the maps successfully
    2. Map outputs are served by jetty servers on the TTs.
    3. All the reduce tasks connects to all the TT where maps are run. 
    4. since there are lots of reduces wanting to connect the map output server, the jetty servers run out of threads (default 40)
    5. tasktrackers continue to make periodic heartbeats to JT, so that they are not dead, but their jetty servers are (temporarily) down.
    
  6. from https://stackoverflow.com/questions/5864589/how-to-fix-task-attempt-201104251139-0295-r-000006-0-failed-to-report-status-fo by cc-by-sa and MIT license