복붙노트

[HADOOP] Hadoop에서 작업을 줄이는시기는 언제 시작합니까?

HADOOP

Hadoop에서 작업을 줄이는시기는 언제 시작합니까?

하둡에서는 언제 작업을 줄이면됩니까? 매퍼의 일정 비율 (임계 값)이 완료된 후에 시작합니까? 그렇다면이 임계 값이 고정되어 있습니까? 어떤 종류의 임계 값이 일반적으로 사용됩니까?

해결법

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

    1.감축 단계에는 셔플, 정렬, 감소의 3 단계가 있습니다. 셔플은 각 매퍼에서 감속기가 데이터를 수집하는 곳입니다. 이것은 데이터 전송 일 뿐이므로 매퍼가 데이터를 생성하는 동안 발생할 수 있습니다. 반면 정렬 및 축소는 모든 매퍼가 완료된 후에 만 ​​시작할 수 있습니다. 감속기 완료 비율을 보면 MapReduce가 수행중인 작업을 파악할 수 있습니다. 0-33 %는 셔플, 34-66 %는 정렬, 67 % -100 %는 감소를 의미합니다. 이것이 귀하의 감속기가 때때로 33 %로 "멈추는"것처럼 보일 때입니다 - 매퍼가 끝나기를 기다리고 있습니다.

    감축 단계에는 셔플, 정렬, 감소의 3 단계가 있습니다. 셔플은 각 매퍼에서 감속기가 데이터를 수집하는 곳입니다. 이것은 데이터 전송 일 뿐이므로 매퍼가 데이터를 생성하는 동안 발생할 수 있습니다. 반면 정렬 및 축소는 모든 매퍼가 완료된 후에 만 ​​시작할 수 있습니다. 감속기 완료 비율을 보면 MapReduce가 수행중인 작업을 파악할 수 있습니다. 0-33 %는 셔플, 34-66 %는 정렬, 67 % -100 %는 감소를 의미합니다. 이것이 귀하의 감속기가 때때로 33 %로 "멈추는"것처럼 보일 때입니다 - 매퍼가 끝나기를 기다리고 있습니다.

    리 듀서는 완료 한 매퍼의 비율 임계 값을 기준으로 셔플을 시작합니다. 매개 변수를 변경하여 감속기가 조만간 시작되도록 할 수 있습니다.

    왜 감속기를 일찍 시작하는 것이 좋은가요? 시간이 지남에 따라 맵퍼에서 감속기로의 데이터 전송이 확산되기 때문에 네트워크가 병목 현상 인 경우 좋은 방법입니다.

    왜 감속기를 일찍 시작하는 것이 나쁜 것입니까? 왜냐하면 그들은 데이터를 복사하고 매퍼가 끝날 때까지 기다리는 동안 슬롯을 줄이기 때문입니다. 나중에 축소 슬롯을 실제로 사용하는 다른 작업은 이제 사용할 수 없습니다.

    mapred-site.xml에서 mapred.reduce.slowstart.completed.maps의 기본값을 변경하여 축소 기 시작시 사용자 정의 할 수 있습니다. 1.00의 값은 모든 매퍼가 감속기를 시작하기 전에 완료 될 때까지 대기합니다. 값 0.0은 즉시 리듀서를 시작합니다. 0.5의 값은 매퍼의 절반이 완료되면 감속기를 시작합니다. 또한 job-by-job을 기준으로 mapred.reduce.slowstart.completed.maps를 변경할 수 있습니다. 새로운 버전의 Hadoop (2.4.1 이상)에서이 매개 변수는 mapreduce.job.reduce.slowstart.completedmaps (감사 사용자 yegor256)라고합니다.

    일반적으로 시스템에 여러 작업이 동시에 실행되는 경우 mapred.reduce.slowstart.completed.maps를 0.9 이상으로 유지하려고합니다. 이런 식으로 일은 데이터를 복사하는 것 이외에는 아무것도하지 않을 때 감속기를 달구 지 않습니다. 한 번에 하나의 작업 만 실행한다면 0.1을하는 것이 적절할 것입니다.

  2. ==============================

    2.감속기는 감속기가 호출되기 훨씬 전에 시작할 수 있습니다. "a"매퍼가 작업을 마자 마자 생성 된 데이터는 정렬 및 셔플 링 (결합기 및 분할기 호출 포함)을 거칩니다. 감속기 "단계"는 매퍼 (mapper) 데이터 처리가 시작되는 순간에 시작됩니다. 이러한 처리가 완료되면 감속기 비율의 진도가 표시됩니다. 그러나, 감속기의 아무도는 아직 안으로 불리지 않았다. 사용 가능 / 사용중인 프로세서 수, 데이터 특성 및 예상 감속기 수에 따라 위의 @ Donald-miner에서 설명한대로 매개 변수를 변경해야 할 수 있습니다.

    감속기는 감속기가 호출되기 훨씬 전에 시작할 수 있습니다. "a"매퍼가 작업을 마자 마자 생성 된 데이터는 정렬 및 셔플 링 (결합기 및 분할기 호출 포함)을 거칩니다. 감속기 "단계"는 매퍼 (mapper) 데이터 처리가 시작되는 순간에 시작됩니다. 이러한 처리가 완료되면 감속기 비율의 진도가 표시됩니다. 그러나, 감속기의 아무도는 아직 안으로 불리지 않았다. 사용 가능 / 사용중인 프로세서 수, 데이터 특성 및 예상 감속기 수에 따라 위의 @ Donald-miner에서 설명한대로 매개 변수를 변경해야 할 수 있습니다.

  3. ==============================

    3.내가 알기로는지도 단계에서 단계를 줄이고 맵에서 레코드를 계속 사용하십시오. 그러나 맵 단계 다음에 정렬 및 셔플 단계가 있기 때문에 모든 출력을 정렬하여 감속기로 보내야합니다. 따라서 논리적으로 맵핑 단계가 맵 단계 이후에만 시작되지만 성능상의 이유 때문에 축소 기가 맵퍼로 초기화된다는 것을 상상할 수 있습니다.

    내가 알기로는지도 단계에서 단계를 줄이고 맵에서 레코드를 계속 사용하십시오. 그러나 맵 단계 다음에 정렬 및 셔플 단계가 있기 때문에 모든 출력을 정렬하여 감속기로 보내야합니다. 따라서 논리적으로 맵핑 단계가 맵 단계 이후에만 시작되지만 성능상의 이유 때문에 축소 기가 맵퍼로 초기화된다는 것을 상상할 수 있습니다.

  4. ==============================

    4.감소 단계에 표시된 백분율은 실제로지도 출력에서 ​​축소 자 입력 디렉토리로 복사 된 데이터의 양에 대한 것입니다. 이 복사가 언제 시작되는지 알고 싶습니까? Donald가 위에 표시된대로 설정할 수있는 구성입니다. 모든 데이터가 감속기 (예 : 100 % 감속)로 복사되면 감속기가 작동하기 시작하므로 감속기 코드가 I / O 또는 CPU를 많이 사용하는 경우 "100 % 감속"상태로 고정 될 수 있습니다.

    감소 단계에 표시된 백분율은 실제로지도 출력에서 ​​축소 자 입력 디렉토리로 복사 된 데이터의 양에 대한 것입니다. 이 복사가 언제 시작되는지 알고 싶습니까? Donald가 위에 표시된대로 설정할 수있는 구성입니다. 모든 데이터가 감속기 (예 : 100 % 감속)로 복사되면 감속기가 작동하기 시작하므로 감속기 코드가 I / O 또는 CPU를 많이 사용하는 경우 "100 % 감속"상태로 고정 될 수 있습니다.

  5. ==============================

    5.Reducer는 모든 매퍼가 작업을 완료 한 후에 만 ​​Reducer가 모든 매퍼와 통신해야하므로 마지막 매퍼가 작업을 마칠 때까지 기다려야합니다. 매퍼가 작업을 완료 한 순간에 데이터를 전송하기 시작합니다.

    Reducer는 모든 매퍼가 작업을 완료 한 후에 만 ​​Reducer가 모든 매퍼와 통신해야하므로 마지막 매퍼가 작업을 마칠 때까지 기다려야합니다. 매퍼가 작업을 완료 한 순간에 데이터를 전송하기 시작합니다.

  6. ==============================

    6.지도가 작업량을 줄이는 방법을 더 잘 이해하기 위해 WordCount 예제를 고려해보십시오. 우리는 큰 파일을 가지고 있습니다. 예를 들어 소설을 들려주세요. 우리의 임무는 파일에서 각 단어가 나오는 횟수를 찾는 것입니다. 파일은 크기가 커서 다른 블록으로 분할되어 다른 작업자 노드에서 복제 될 수 있습니다. 단어 카운트 작업은지도 및 축소 작업으로 구성됩니다. 지도 작업은 입력으로 각 블록을 가져 와서 중간 키 - 값 쌍을 생성합니다. 이 예에서는 단어의 수를 계산하므로 블록을 처리하는 동안 매퍼는 (word1, count1), (word2, count2) 등의 중간 결과를 얻습니다. 모든 매퍼의 중간 결과는 다음과 같습니다. 중간 결과를 재정렬하는 셔플 단계를 거쳤습니다.

    지도가 작업량을 줄이는 방법을 더 잘 이해하기 위해 WordCount 예제를 고려해보십시오. 우리는 큰 파일을 가지고 있습니다. 예를 들어 소설을 들려주세요. 우리의 임무는 파일에서 각 단어가 나오는 횟수를 찾는 것입니다. 파일은 크기가 커서 다른 블록으로 분할되어 다른 작업자 노드에서 복제 될 수 있습니다. 단어 카운트 작업은지도 및 축소 작업으로 구성됩니다. 지도 작업은 입력으로 각 블록을 가져 와서 중간 키 - 값 쌍을 생성합니다. 이 예에서는 단어의 수를 계산하므로 블록을 처리하는 동안 매퍼는 (word1, count1), (word2, count2) 등의 중간 결과를 얻습니다. 모든 매퍼의 중간 결과는 다음과 같습니다. 중간 결과를 재정렬하는 셔플 단계를 거쳤습니다.

    다른 맵퍼의지도 출력이 다음과 같은 형식이라고 가정합니다.

    지도 1 : - (is, 24) (was, 32) (및 12)

    지도 2 : - (내, 12) (is, 23) (was, 30)

    맵 출력은 동일한 키 값이 동일한 감속기에 제공되는 방식으로 정렬됩니다. 여기에 대응하는 키가 같은 감속기로 간다는 것을 의미합니다.이 경우 최종 출력을 생성하는 감속기는 다음과 같습니다. - (와, 12) (이, 47) (나의, 12) (있었는지, 62)

  7. ==============================

    7.Reducer 작업은 모든 매퍼 완료 후에 만 ​​시작됩니다.

    Reducer 작업은 모든 매퍼 완료 후에 만 ​​시작됩니다.

    그러나 데이터 전송은 각 맵 이후에 발생합니다. 실제로 그것은 잡아 당기기 작업입니다.

    즉, 매 시간 감속기가 Map에서 검색 할 데이터가 있으면 각 maptask에 요청할 것입니다. 매퍼가 작업을 완료하면 Reducer가 중간 데이터를 가져옵니다.

    Mapper의 중간 데이터는 디스크에 저장됩니다. Mapper에서 Reduce 로의 데이터 전송은 네트워크를 통해 이루어집니다 (데이터 지역은 Reduce 단계에서 보존되지 않음)

  8. ==============================

    8.매퍼가 작업을 완료하면 감속기가 데이터를 줄이기 위해 작업을 시작합니다.이 작업은 Mapreduce 작업입니다.

    매퍼가 작업을 완료하면 감속기가 데이터를 줄이기 위해 작업을 시작합니다.이 작업은 Mapreduce 작업입니다.

  9. from https://stackoverflow.com/questions/11672676/when-do-reduce-tasks-start-in-hadoop by cc-by-sa and MIT license