복붙노트

[HADOOP] Hive는 직업에 대한 감속기의 수를 어떻게 선택합니까?

HADOOP

Hive는 직업에 대한 감속기의 수를 어떻게 선택합니까?

여러 곳에서 Hadoop 작업의 기본 감속기 수가 1이라고합니다. mapred.reduce.tasks 기호를 사용하여 수동으로 감속기 수를 설정할 수 있습니다.

Hive 작업 (Amazon EMR, AMI 2.3.3)을 실행하면 하나보다 많은 수의 감속기가 있습니다. 작업 설정을 살펴보면 무언가가 mapred.reduce.tasks를 설정 했으므로 하이브를 추정합니다. 그 번호를 어떻게 선택합니까?

참고 : 단서가되어야하는 하이브 작업을 실행하는 동안 다음 메시지가 있습니다.

...
Number of reduce tasks not specified. Estimated from input data size: 500
In order to change the average load for a reducer (in bytes):
  set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
  set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
  set mapred.reduce.tasks=<number>
...

해결법

  1. ==============================

    1.바닐라 Hadoop 설치의 경우 기본값은 1 일 수 있습니다. 하이브가 그것을 무시합니다.

    바닐라 Hadoop 설치의 경우 기본값은 1 일 수 있습니다. 하이브가 그것을 무시합니다.

    오픈 소스 하이브 (및 EMR 가능성이 있음)

    # reducers = (# bytes of input to mappers)
                 / (hive.exec.reducers.bytes.per.reducer)
    

    이 게시물은 기본 hive.exec.reducers.bytes.per.reducer가 1G라고 말합니다.

    hui.exec.reducers.max를 사용하여이 경험적 방법으로 생성 된 감속기의 수를 제한 할 수 있습니다.

    원하는 감속기의 수를 정확히 알고 있으면 mapred.reduce.tasks를 설정할 수 있습니다. 그러면 모든 추론이 무시됩니다. 기본적으로이 값은 -1로 설정되어 Hive가 경험적 방법을 사용해야 함을 나타냅니다.

    어떤 경우에는 - 'T에서 선택 횟수 (1)'라고 말하십시오 - 하이브는 입력 데이터의 크기와 관계없이 감속기의 수를 1로 설정합니다. 이를 '전체 집계'라고합니다. 쿼리가 수행하는 유일한 작업이 전체 집계 인 경우 컴파일러는 매퍼의 데이터가 사소한 양으로 줄어들고 여러 개의 축소판을 실행하는 지점이 없음을 알고 있습니다.

  2. from https://stackoverflow.com/questions/16203314/how-does-hive-choose-the-number-of-reducers-for-a-job by cc-by-sa and MIT license