2016-06-24 5 views
-1

job.waitForCompletion(true)을 사용하여 실행 한 MapReduce 작업이 있습니다. 작업 실행 중 하나 이상의 감속기 작업이 종료되거나 충돌하면 MapReduce 작업 전체가 다시 시작되고 매퍼 및 축소 기가 다시 실행됩니다 (문서). 내 질문은 다음과 같습니다.MapReduce 작업이 다시 시작되었거나 새로 시작되었는지 확인하는 방법은 무엇입니까?

1] 작업이 새로 시작되었거나 이전 실행에서 일부 실패로 인해 다시 시작된 경우 알 수 있습니까? (이것은 Q2로 안내했습니다)

2] 카운터가 도움이 될 수 있습니까? 일부 작업이 실패하면 카운터의 가치가 넘겨 져서 전체 작업을 다시 시작합니까?

3] Hadoop은 이전 계산을 추적하고 mappers 및 reducers가 실패/충돌하기 전에 수행 한 것과 동일한 계산을 수행하지 않도록하는 inbuilt 검사 점 지정 방법을 제공합니까?

죄송합니다. 질문에 명확하지 않은 문구가 있으면 죄송합니다. 도움 주셔서 감사합니다.

답변

2
  1. 일부 전문 용어에 대한 수정입니다. 하나 이상의 작업이 실패하면 작업이 다시 시작되지 않습니다. 작업이 다시 시작될 수 있습니다. 매퍼/감속기 컨텍스트에서 ID의 마지막 토큰으로 시도 번호가 포함 된 https://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapreduce/TaskAttemptContext.html#getTaskAttemptID()을 얻을 수 있습니다.

  2. 실패한 작업 시도의 카운터 업데이트는 작업 합계에 집계되지 않으므로 오버 카운팅 할 염려가 없어야합니다.

  3. 일반적으로 없습니다. 실패한 작업의 출력은 프레임 워크에 의해 지워집니다. 작업 실패로 인해 계산하는 데 비용이 많이 드는 것을 무서워하는 경우 작업을 여러지도/축소 단계로 나눠서하는 것이 좋습니다. 자신 만의 가변 분산 캐시를 가질 수도 있지만 권장하지는 않습니다.

+0

안녕 Yurgis, 해명 주셔서 감사합니다! – avp