낙오 항목은 작업이 동시에 완료되지 않도록 하여 Dataflow 작업 속도를 저하시키는 작업 항목입니다.
일괄 파이프라인에서 낙오 항목은 다음 특성을 가진 작업 항목으로 정의됩니다.
- 같은 스테이지에 있는 다른 작업 항목보다 완료하는 데 훨씬 오래 걸립니다.
- 스테이지 내에서 동시 로드를 줄입니다.
- 새 작업이 시작되지 않도록 차단합니다.
최악의 경우에는 낙오 항목으로 인해 작업의 적은 비율이 진행되어 작업의 전체 지연을 초래하므로 단계가 완료되지 않을 수 있습니다.
Dataflow는 일괄 작업 중에 발생하는 낙오 항목을 감지합니다. Dataflow가 낙오 항목을 감지하면 낙오 항목의 원인도 확인합니다.
Google Cloud 콘솔에서 낙오 항목 보기
Dataflow 작업을 시작한 후 Google Cloud 콘솔을 사용하여 감지된 낙오 항목을 볼 수 있습니다.
낙오 항목은 스테이지 또는 작업자별로 볼 수 있습니다. 이러한 뷰를 사용하여 낙오 항목이 있는 스테이지를 찾은 다음 각 단계 내에서 낙오 항목이 발생한 작업자를 찾습니다.
단계별 낙오 항목 보기
단계별로 낙오 항목을 보려면 다음 안내를 따르세요.
Google Cloud 콘솔에서 Dataflow 작업 페이지로 이동합니다.
작업으로 이동
작업 이름을 클릭합니다.
작업 세부정보 페이지에서 실행 세부정보 탭을 클릭합니다.
그래프 뷰 목록에서 스테이지 진행 상태를 선택합니다. 진행률 그래프에는 각 스테이지 내에서 감지된 모든 낙오 항목의 집계 수가 표시됩니다.
스테이지의 세부정보를 보려면 스테이지 막대 위로 마우스를 가져갑니다. 스테이지의 작업자를 보려면 세부정보 패널에서 작업자 보기를 클릭합니다.
작업자별 낙오 항목 보기
작업자별로 낙오 항목을 보려면 다음 안내를 따르세요.
Google Cloud 콘솔에서 Dataflow 작업 페이지로 이동합니다.
작업으로 이동
작업 이름을 클릭합니다.
작업 세부정보 페이지에서 실행 세부정보 탭을 클릭합니다.
그래프 뷰 목록에서 작업자 진행 상황을 선택합니다.
단계별 작업자 필터링 목록에서 단계를 선택합니다. 진행률 그래프에는 해당 단계에서 감지된 낙오 항목이 표시됩니다. 낙오 항목이 처음 감지된 지점은 막대에서 음영이 어둡습니다.
작업자의 세부정보를 보려면 해당 작업자의 막대 위로 마우스를 가져갑니다.
스테이지 정보 패널의 낙오 항목 세부정보 섹션에는 페이지에 표시된 모든 작업자의 낙오 항목이 다음 정보와 함께 나열됩니다.
- 낙오 항목이 감지된 시작 시간
- 낙오 항목을 경험한 작업자
- 원인(알려진 경우)
일괄 작업의 낙오 항목 문제 해결
Dataflow는 일괄 파이프라인에서 다음과 같은 낙오 항목의 원인을 감지합니다.
핫키. 핫키는 동일한
PCollection
의 다른 키보다 훨씬 더 많은 요소를 나타내는 키입니다. 자세한 내용은 이 문서의 핫키로 인한 낙오 항목 문제 해결을 참조하세요.느린 작업자. 느린 작업자에서 작업 항목은 평소보다 느리게 실행됩니다. 느린 작업자의 처리 속도는 동일 스테이지에서 비슷한 작업을 수행하는 작업자의 처리 속도보다 느린 경우가 많습니다. CPU 부족, 스래싱, 머신 아키텍처, 중단된 작업자 프로세스 등 여러 요인으로 인해 작업자 속도가 느려질 수 있습니다. 속도가 느려지면 Dataflow가 자동으로 문제 해결을 시도합니다. 자세한 내용은 이 문서에서 느린 작업자로 인한 낙오 항목 자동 해결을 참조하세요.
확인할 수 없는 원인. 원인이 확인되지 않은 낙오 항목의 경우 '느리거나 중단된 작업 문제 해결'에서 느린 일괄 작업의 일반적인 문제 해결 단계를 참조하세요.
핫키로 인한 낙오 항목 문제 해결
다양한 요인으로 인해 낙오 항목이 발생할 수 있지만 일반적인 원인 중 하나는 핫키의 존재입니다. 핫키는 동일한 PCollection
에 있는 다른 키보다 훨씬 더 많은 요소를 나타내는 키입니다. 핫키는 Dataflow가 요소를 병렬로 처리하는 기능을 제한하므로 낙오 항목을 만들 수 있습니다.
Dataflow가 핫키로 인해 낙오 항목을 감지하면 낙오 항목 세부정보 패널에 Hot Key
가 원인으로 표시됩니다.
기본적으로 Dataflow는 핫키의 키 값을 표시하지 않습니다. 키 값을 표시하려면 작업을 실행할 때 hotKeyLoggingEnabled
파이프라인 옵션을 true
로 설정합니다.
이 문제를 해결하려면 데이터가 균등하게 분산되었는지 확인합니다. 키의 값이 불균형하다면 다음 조치 실행을 고려해 보세요.
- 데이터를 다시 입력하세요.
ParDo
변환을 적용하여 새로운 키-값 쌍을 출력합니다. - Java 작업의 경우
Combine.PerKey.withHotKeyFanout
변환을 사용합니다. - Python 작업의 경우
CombinePerKey.with_hot_key_fanout
변환을 사용합니다. - Dataflow Shuffle 사용 설정
예를 들어, 파이프라인이 SQL 변환의 일부로 JOIN
작업을 수행하는 경우, 확장된 JOIN
작업의 일부로 수행되는 GroupByKey
로 지정된 키를 전달할 때 과도한 데이터 양이 포함될 가능성이 높습니다.
자세한 내용은 beam-issue/28186의 기능 요청을 참조하세요.
느린 작업자로 인한 낙오 항목 자동 해결
느린 작업자는 Dataflow에서 일반적이지 않지만 작업 성능에 영향을 줄 수 있습니다. 성능 문제를 방지하기 위해 Dataflow는 느린 작업자가 발견되었을 때 작업자로 인해 낙오 항목이 발생하기 전에 문제를 해결하려고 시도합니다.
자동 해결을 시도할 때는 호스트 유지보수 이벤트를 시뮬레이션합니다. 이 이벤트는 정기적으로 수행되는 Compute Engine 유지보수 메커니즘입니다. 작업자의 호스트 유지보수 정책에 따라 작업자는 라이브 마이그레이션이 수행되거나 다시 시작됩니다. 라이브 마이그레이션이 수행될 때는 워크로드가 중단되지 않습니다. 작업자가 다시 시작된 경우에는 느린 작업자에서 진행 중인 작업이 손실되고 처리가 다시 시작됩니다.
느린 작업자가 감지되고 문제가 성공적으로 해결되면 job-message 로그에 다음 메시지가 표시됩니다.
Slow worker ... detected and automatically remediated ...
느린 작업자가 낙오 항목이 아니면 추가 조치를 수행할 필요가 없습니다.
해결이 실패하면 느린 작업자로 인해 Dataflow 모니터링 인터페이스에 낙오 항목이 표시될 수 있습니다.
유지보수 이벤트 시뮬레이션 요청과 같이 프로젝트에 할당량이 부족하면 자동 해결이 실패할 수 있습니다. 기본 할당량에 대한 자세한 내용은 '리소스 사용 할당량 및 권한 관리'의 리전 측정항목에 대한 API 비율 제한을 참조하세요. 더 높은 할당량 비율을 요청하려면 '할당량 보기 및 관리'의 더 높은 할당량 한도 요청을 참조하세요.
다음 단계
- Dataflow 모니터링 인터페이스 사용 방법 알아보기
- 모니터링 인터페이스의 실행 세부정보 탭 이해하기