다음을 통해 공유


Azure HDInsight에서 Apache Ambari를 사용하여 Apache Pig 최적화

Apache Ambari는 HDInsight 클러스터를 관리하고 모니터링하는 웹 인터페이스입니다. Ambari Web UI에 대한 소개는 Apache Ambari Web UI로 HDInsight 클러스터 관리를 참조하세요.

Apache Pig 속성을 Ambari 웹 UI에서 수정하여 Pig 쿼리를 조정할 수 있습니다. Pig 속성을 Ambari에서 직접 수정하면 /etc/pig/2.4.2.0-258.0/pig.properties 파일의 Pig 속성이 수정됩니다.

  1. Pig 속성을 수정하려면 Pig Configs(구성) 탭으로 이동한 다음 Advanced pig-properties(고급 Pig 속성) 창을 확장합니다.

  2. 수정할 속성의 값을 찾아서 주석 처리를 제거하고 변경합니다.

  3. 창의 오른쪽 위에서 저장을 선택하여 새 값을 저장합니다. 일부 속성은 서비스를 다시 시작해야 할 수도 있습니다.

    Advanced Apache pig properties.

참고 항목

모든 세션 수준 설정은 pig.properties 파일의 속성 값을 재정의합니다.

실행 엔진 조정

Pig 스크립트를 실행하기 위해 두 개의 실행 엔진 즉, MapReduce 및 Tez를 사용할 수 있습니다. Tez는 최적화된 엔진이며 MapReduce보다 훨씬 빠릅니다.

  1. 실행 엔진을 수정하려면 Advanced pig-properties(고급 Pig 속성) 창에서 exectype 속성을 찾습니다.

  2. 기본값은 MapReduce입니다. 이것을 Tez로 변경합니다.

로컬 모드 사용

Hive와 마찬가지로 로컬 모드는 비교적 양이 적은 데이터의 작업 속도를 높이는 데 사용됩니다.

  1. 로컬 모드를 사용하도록 설정하려면 pig.auto.local.enabledtrue로 설정합니다. 기본값은 false입니다.

  2. 입력 데이터 크기가 pig.auto.local.input.maxbytes 속성 값보다 작은 작업은 작은 작업으로 간주됩니다. 기본값은 1GB입니다.

사용자 jar 캐시 복사

Pig는 UDF에 필요한 JAR 파일을 태스크 노드에서 사용할 수 있도록 분산 캐시에 복사합니다. 이러한 jar 파일은 자주 변경되지 않습니다. pig.user.cache.enabled 설정을 사용하도록 설정하면 jar를 캐시에 배치하여 동일한 사용자가 실행하는 작업에 다시 사용할 수 있습니다. 이 설정으로 인해 작업 성능이 약간 향상됩니다.

  1. 사용하도록 설정하려면 pig.user.cache.enabled을 true로 설정합니다. 기본 설정은 거짓입니다.

  2. 캐시된 jar의 기본 경로를 설정하려면 pig.user.cache.location을 기본 경로로 설정합니다. 기본값은 /tmp입니다.

메모리 설정으로 성능 최적화

다음 메모리 설정은 Pig 스크립트 성능을 최적화하는 데 도움이 됩니다.

  • pig.cachedbag.memusage: bag에 지정된 메모리의 양입니다. bag은 튜플의 컬렉션입니다. 튜플은 정렬된 필드 집합이며 필드는 데이터의 일부입니다. bag의 데이터가 지정된 메모리를 초과하면 데이터가 디스크로 유출됩니다. 기본값은 0.2이며, 이것은 사용 가능한 메모리의 20%를 나타냅니다. 이 메모리는 애플리케이션의 모든 bag에서 공유됩니다.

  • pig.spill.size.threshold: 이 유출 크기 임계값(바이트)보다 큰 bag은 디스크로 스필됩니다. 기본값은 5MB입니다.

임시 파일 압축

Pig는 작업 실행 중에 임시 파일을 생성합니다. 임시 파일을 압축하면 디스크에 파일을 쓰거나 읽을 때 성능이 향상됩니다. 다음 설정을 사용하여 임시 파일을 압축할 수 있습니다.

  • pig.tmpfilecompression: true이면 임시 파일 압축이 사용됩니다. 기본값은 false입니다.

  • pig.tmpfilecompression.codec: 임시 파일을 압축하는 데 사용하는 압축 코덱입니다. CPU 사용률을 낮추기 위해 권장되는 압축 코덱은 LZO 및 Snappy입니다.

분할 결합 사용

사용하도록 설정하면 맵 작업 수가 줄어들도록 작은 파일이 결합됩니다. 이렇게 설정하면 작은 파일이 많이 있는 작업의 효율이 향상됩니다. 사용하도록 설정하려면 pig.noSplitCombination을 true로 설정합니다. 기본값은 false입니다.

매퍼 조정

매퍼 수는 pig.maxCombinedSplitSize 속성을 수정하여 제어됩니다. 이 속성은 단일 맵 작업으로 처리되는 데이터 크기를 지정합니다. 기본값은 파일 시스템의 기본 블록 크기입니다. 이 값을 높이면 매퍼 작업 수가 감소됩니다.

리듀서 조정

리듀서 수는 pig.exec.reducers.bytes.per.reducer 매개 변수를 기반으로 계산됩니다. 해당 매개 변수는 리듀서당 처리되는 바이트 수를 지정합니다(기본값: 1GB). 최대 리듀서 수를 제한하려면 pig.exec.reducers.max 속성을 설정합니다(기본값: 999).

다음 단계