스파크 성능 최적화를 위한 모범 사례 살펴보기

카운트()는 스파크 동작입니다. 디버깅 중에 추가되고 제거되지 않는 스파크 응용 프로그램에서 여러 개의카운트()호출이 있는 경우 일반적인 문제입니다. 스파크 액션을 찾고 필요하지 않은 것을 제거하는 것이 좋습니다.

파일 형식

응용 프로그램에 대한 데이터 집합을 디자인할 때는 스파크와 함께 사용할 수 있는 파일 형식을 최대한 활용해야 합니다. 고려해야 할 몇 가지 사항:

  • 스파크는 읽기 처리량에 대한 아파치 마루와 오크에 최적화되어 있습니다. 스파크는 디스크 입출력을 감소 벡터화 지원이있다.
  • 쪽모이 세공 파일 형식을 사용하고 압축을 사용하십시오.
  • 아파치 스파크에서 사용할 수 있는 다양한 파일 형식과 기본 제공 데이터 소스가 있습니다.분할 가능한 파일 형식을 사용하십시오.
  • 작은 파일이 너무 많지 않은지 확인합니다. 당신은 많은 작은 파일이있는 경우,그것은 더 나은 성능을 위해 그 압축을 할 의미가 있습니다.

병렬 처리

  • 스파크 파티션 수를 늘려 데이터 크기에 따라 병렬 처리를 늘립니다. 클러스터 리소스가 최적으로 활용되는지 확인합니다. 파티션이 너무 적 으면 일부 실행 프로그램이 유휴 상태가 될 수 있지만 파티션이 너무 많으면 작업 스케줄링의 오버 헤드가 발생할 수 있습니다.
  • 파티션과 작업을 조정합니다. 스파크는 100 천분의 1 초+의 작업을 처리하고 실행 프로그램에 대한 코어 당 적어도 2-3 작업을 권장 할 수 있습니다.
  • 스파크는 파일 크기 입력에 따라 파티션 수를 결정합니다. 때때로 파티션 수를 명시적으로 지정하는 것이 좋습니다.
    • 스파크.사이트맵파일.최대 신뢰 바이트,스파크 2.0 에서 사용할 수 있습니다.0,쪽모이 세공,오크 및 제이슨 용.
  • 셔플 파티션은스파크를 설정하여 조정할 수 있습니다.사이트맵셔플.파티션,기본값은 200 입니다. 데이터 집합 크기가 큰 경우 매우 작습니다.

셔플 줄이기

셔플은 네트워크 및 디스크 입출력과 관련된 클러스터의 노드에서 데이터를 이동해야 하기 때문에 비용이 많이 드는 작업입니다. 여기 셔플을 줄이기 위해 몇 가지 도움말입니다:

  • 조정스파크.사이트맵셔플.파티션.
  • 각 작업 크기가 너무 크지 않도록 입력 데이터 집합을 적절하게 분할합니다.
  • 스파크 사용자 인터페이스를 사용하여 가능한 한 셔플을 줄일 수있는 기회를 찾기 위해 계획을 연구하십시오.
  • 스파크에 대한 공식 권장 사항.사이트맵셔플.파티션:
    • 큰 데이터 세트의 경우,파티션(예를 들어,1 백메가바이트의 사용 대상 크기)에 대한 2 백메가바이트 작업 대상 크기보다 1 백메가바이트에서 아무 곳이나 목표로하고 있습니다.
    • 스파크.사이트맵셔플.파티션=몫(셔플 단계 입력 크기/대상 크기)/총 코어)*총 코어.

데이터 집합 크기 필터링/줄이기

응용 프로그램 파이프라인에서 가능한 한 빨리 데이터를 필터링할 기회를 찾습니다. 필터 작업이 있고 데이터 하위 집합에 대한 분석에만 관심이 있는 경우 이 필터를 일찍 적용하십시오. 데이터 집합 크기를 일찍 줄일 수 있다면 그렇게 하십시오. 선택적 조건자는 유용합니다. 적절한 그들을 사용. 적용 가능한 경우 파티션 필터를 사용하십시오.

캐시 적절하게

스파크는 메모리에 데이터 세트의 캐싱을 지원합니다. 다양한 옵션을 사용할 수 있습니다:

  • 파이프라인 흐름에서 동일한 작업을 여러 번 계산할 때 캐싱을 사용합니다.
  • 캐싱을 사용하여 필요한 캐시 설정을 사용하도록 설정합니다.
  • 필요한 경우 지연로드 및 프라임 캐시를 미리 알고 있어야합니다. 일부는 열망하고 일부는 그렇지 않습니다.
  • 캐시한 데이터 집합에 대한 정보를 보려면 스파크 사용자 인터페이스의 저장소 탭을 확인하십시오.
  • 리소스를 해제하기 위해 캐시된 데이터 집합을 사용할 때,특히 클러스터를 사용하는 다른 사용자가 있을 때 캐시된 데이터 집합을 분리하지 않는 것이 좋습니다.

조인

조인은 일반적으로 비용이 많이 드는 작업이므로 응용 프로그램의 조인에 주의하여 최적화하십시오. 브로드캐스트는 관계 중 하나가 브로드캐스트할 수 있을 만큼 작은 경우에 가장 성능이 좋다. 아래는 몇 가지 팁:

  • 가입 순서 문제;가장 선택적 가입 시작. 스파크 미만의 관계.사이트맵자동방송조인를 다시보류하면 방송해시조인가 선택되었는지 확인할 수 있습니다.
  • 필요한 경우 특정 유형의 조인을 강제로 사용합니다.
    • 예:작은 데이터세트와 큰 데이터세트를 결합하는 경우 브로드캐스트 조인이 강제로 작은 데이터세트를 브로드캐스트할 수 있습니다.
    • 스파크가 브로드캐스트 해시 조인을 수신하고 있는지 확인합니다.
  • 교차 조인을 피하십시오.
  • 브로드캐스트해시 조인는 가장 성능이 뛰어나지만 조인의 두 관계가 큰 경우에는 적용되지 않을 수 있습니다.
  • 스파크에 대한 테이블에 대한 통계를 수집하여 최적의 계획을 계산합니다.

클러스터 리소스 조정

  • 리소스 관리자 및 스파크 버전에 따라 클러스터의 리소스를 조정합니다.
  • 사용 가능한 메모리를 드라이버에 조정합니다.드라이버.메모리.
  • 클러스터의 리소스(실행기 메모리,실행기 수 및 실행기 코어)에 따라 실행기 수와 메모리 및 코어 사용량을 조정합니다.

작업 중인 스파크 릴리스에 대한 구성 설명서를 확인하고 적절한 매개 변수를 사용하십시오.

값 비싼 작업 방지

  • 필요하지 않은 경우 주문하지 마십시오.
  • 쿼리를 작성할 때*선택을 사용하여 모든 열을 가져오는 대신 쿼리와 관련된 열만 검색합니다.
  • 불필요하게 카운트를 호출하지 마십시오.

데이터 기울이기

  • 파티션의 크기가 같은지 확인하십시오.
    • 예를 들면 다음과 같습니다. 다른 몇 백 메가바이트 반면 어쩌면 하나의 파티션은 몇 킬로바이트입니다. 일부 작업은 다른 작업보다 크며 큰 작업의 실행자는 바쁜 반면 작은 작업을 처리하는 다른 실행자는 완료되고 유휴 상태가 됩니다.
    • 원본의 데이터가 최적으로 분할되지 않은 경우 다시 파티션을 사용하여 균형 잡힌 파티션을 가져온 다음 캐싱을 사용하여 적절한 경우 메모리에 유지하는 장단점을 평가할 수도 있습니다.
  • 다시 분할하면 셔플이 발생하고 셔플은 비용이 많이 드는 작업이므로 응용 프로그램을 기준으로 평가해야 합니다.
  • 파티션 크기 및 작업 기간을 찾습니다.사용 가능한 사용자 정의 함수가 여러 개 있습니다. 성능을 위해 성능에 적합하므로 기본 제공 함수 중 하나를 사용할 수 있는지 확인합니다. 이 패키지에는 디버깅 심볼이 들어 있습니다. 이것은 수학적으로 정확한 유형 계층구조인,강력한 타입을 정의합니다. 이것은 수학적으로 정확한 유형 계층구조인,강력한 타입을 정의합니다. 팬더를 작성하는 방법에 대한 자세한 정보를 얻을 수 있습니다.

    나는 당신이 당신의 스파크 응용 프로그램을 작성하는 방법에 대한 가서 당신에게 도움이되기를 바랍니다. 행복한 개발! 곧 블로그에서,나는 당신의 스파크 작업에 대한 실행 계획을 얻는 방법을 보여줍니다.

답글 남기기

이메일 주소는 공개되지 않습니다.