문제

우리는 Mapper vs 콜렉터 대 감속기에 대한 하드웨어에 대해 격렬하게 서로 다른 제약이있는 훌륭하고 복잡한 탄력있는 맵을 가지고 있습니다.

문제는 다음과 같습니다. 매퍼의 경우, 여러 개의 매퍼를 병렬로 운영하는 경량의 기계가 필요합니다. 수집가는 더 많은 기억을냅니다. 그러나 각각 6GB의 피크 힙을 약 6GB로주는 것이 좋습니다. ...에 ...에 그러나 문제는 감속기입니다. 그 중 하나가 꺼지면 가공을 위해 약 32-64GB를 초과합니다.

상자의 전체 메모리가 소비되므로 원형 로빈 유형의 작업 사망을 얻는 결과 하나의 매퍼와 감속기가 다른 곳에서 다시 시작됩니다.

가장 간단한 접근 방식은 소규모 상자에서 실행되는 매퍼 / 콜렉터가있는 동안 감속기가 다른 "그룹"(소수의 주름 상자)에서 실행되도록 할 수있는 방법을 지정할 수있는 경우가 있습니다. 이것은 또한 우리가 정말로 노드 매퍼가 감속기의 요구에 달리고 있으면 실제로 중요한 비용 절감으로 이어질 수 있습니다.

대안은 매퍼 수집기의 출력을 처리하기 위해 스마일 할 수있는 두 번째 클러스터가 있도록 작업을 "해제"하는 것입니다. 그러나 그것은 분명히 "하위 최적"입니다.

그래서 질문은 다음과 같습니다.

  • "그룹"이 매퍼 또는 감속기가 무엇을 할지를 지정하는 방법이 있습니다. 탄성 MapReduce 및 / 또는 Hadoop을 실행 하시겠습니까?
  • 는 모든 매퍼가 완료 될 때까지 감속기가 시작되지 않도록하는 방법이 있습니까?
  • 누구든지 이것에 접근하는 방법에 대한 다른 아이디어가 있습니까?

환호!

도움이 되었습니까?

해결책

Hadoop 동안 작업을 매핑하면 감속기가 모든 매퍼가 완료된 후에 실행을 시작합니다.맵 단계의 출력은 파티셔닝이 수행되기 전에 셔플 및 분류되어 어떤 데이터가 데이터를 수신하는지 결정합니다.따라서 감속기는 셔플 / 정렬 단계가 종료 된 후 (매퍼가 완료된 후) _ 샘플링을 시작합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top