가져오기 실패가 너무 많음 - Amazon EMR

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

가져오기 실패가 너무 많음

"Too many fetch-failures(가져오기 실패 횟수가 너무 많습니다.)" 또는 "Error reading task output(작업 출력을 읽는 중 오류가 발생했습니다.)" 오류 메시지가 단계 또는 작업 시도 로그에 있는 경우 이는 실행 중인 작업이 다른 작업의 출력에 따라 좌우됨을 의미합니다. 대체로 이 상황은 감소 작업이 실행 대기 중이며 하나 이상의 map 작업 출력이 필요하지만 출력을 아직 사용할 수 없는 경우에 발생합니다.

출력을 사용할 수 없는 이유는 몇 가지가 있을 수 있습니다.

  • 필수 선행 작업이 여전히 처리 중입니다. 이 작업은 대체로 map 작업입니다.

  • 데이터가 다른 인스턴스에 있는 경우 네트워크 연결 상태가 좋지 않아서 데이터를 사용하지 못할 수도 있습니다.

  • 를 사용하여 출력을 검색하는 HDFS 경우 문제가 있을 수 HDFS 있습니다.

이 오류의 가장 일반적인 원인은 이전 작업이 여전히 처리 중이라는 점입니다. 특히 reduce 작업을 먼저 실행하려 할 때 오류가 발생하는 경우는 아마도 이 상황에 해당될 것입니다. 오류를 반환하는 클러스터 단계에 대해 syslog 로그를 검토하여 이 경우에 해당하는지 여부를 확인할 수 있습니다. syslog에 map 작업과 reduce 작업이 둘 다 진행 중인 것으로 표시되면 이는 아직 완료되지 않은 map 작업이 있는 상태에서 reduce 단계가 시작되었음을 나타냅니다.

로그에서 찾아볼 사항 중 하나는 100%에 도달하고 나서 그보다 낮은 값으로 내려가는 map 진행률입니다. map 백분율이 100%에 도달하는 경우 이것이 모든 map 작업이 완료되었음을 의미하지는 않습니다. 단순히 하둡이 모든 map 작업을 실행 중임을 의미할 뿐입니다. 이 값이 100% 미만으로 내려가면 map 작업이 실패했음을 의미하며 구성에 따라 하둡에서 해당 작업을 다시 예약하려 할 수도 있습니다. 로그에서 맵 백분율이 100% 로 유지되는 경우 CloudWatch 지표RunningMapTasks, 특히 맵 작업이 아직 처리 중인지 확인하십시오. 마스터 노드의 하둡 웹 인터페이스를 사용하여 이 정보를 찾아볼 수도 있습니다.

이 문제를 발생한 경우 몇 가지를 시도해 볼 수 있습니다.

  • reduce 단계의 시작 전 대기 시간을 늘립니다. 이렇게 하려면 하둡 구성 설정인 mapred.reduce.slowstart.completed.maps를 더 긴 시간으로 변경하면 됩니다. 자세한 내용은 부트스트랩 작업을 생성하여 추가 소프트웨어 설치 단원을 참조하십시오.

  • reducer 수를 클러스터의 총 reducer 용량에 맞춥니다. 이렇게 하려면 해당 작업에 대한 하둡 구성 설정인 mapred.reduce.tasks를 조정하면 됩니다.

  • combiner 클래스 코드를 사용하여 가져와야 하는 출력 수를 최소화합니다.

  • Amazon EC2 서비스에 클러스터의 네트워크 성능에 영향을 미치는 문제가 없는지 확인합니다. 이렇게 하려면 서비스 상태 대시보드를 사용합니다.

  • 클러스터 내 인스턴스의 메모리 리소스를 검토하여 데이터 처리가 노드 리소스를 과도하게 사용하지 않는지 확인하십시오. CPU 자세한 내용은 클러스터 하드웨어 및 네트워킹 구성 단원을 참조하십시오.

  • Amazon EMR 클러스터에서 사용되는 Amazon 머신 이미지 (AMI) 의 버전을 확인하십시오. 버전이 2.3.0 ~ 2.4.4이면 더 최신 버전으로 업데이트합니다. AMI지정된 범위의 버전에서는 맵 단계에서 출력을 전달하지 못할 수 있는 Jetty 버전을 사용합니다. reducer가 map 단계에서 출력을 가져올 수 없는 경우 가져오기 오류가 발생합니다.

    Jetty는 HTTP Hadoop 클러스터 내에서 시스템 간 통신에 사용되는 오픈 소스 서버입니다.