2013-07-02 5 views
0

실패한 맵 작업에 대해 cleanup() 메서드가 호출 되었습니까? 그렇다면 '원 자성'을 어떻게 보장 할 것인가?은 실패한 맵 작업에 대해 호출 된 cleanup() 메소드입니다.

필자의 경우, cleanup() 메소드에서 DB에 기록되는 매퍼 (mapper)에서 일부 통계를 준비하고 있습니다. 이 경우 매퍼가 입력 분할 실행 중 실패하면 정리 메소드는 처리 된 데이터를 DB에 씁니다. 대체 매퍼 시도가 동일한 데이터를 다시 쓰게되므로 잘못된 통계가 발생합니다.

답변

2

매퍼가 실패 할 때마다 정리 작업이 호출되거나 호출되지 않을 수 있습니다. 예를 들어 맵핑 메소드에서 맵퍼가 실패하면 클린업이 호출되지 않습니다. 그러나 매퍼가 정리 메소드에 실패하면 정리가 이미 호출되었습니다.

매퍼가 실패하면 일반적으로 hadoop은 다른 컴퓨터의 매퍼 작업을 다시 실행합니다. 따라서 매퍼 또는 리듀서를 여러 번 실행하는 것이 항상 동일한 결과를 출력하는지 또는 디버깅하기가 어려울 수 있는지 확인해야합니다.

상황에 따라 일부 카운터를 설정하여 통계 데이터를 수집하고 작업 성공 후 카운터를 읽을 수 있습니다. 일부 매퍼가 실패하면 카운터가 중단됩니다. 귀하의 직무 성공 이후의 카운터는 정확함을 보증합니다.