복붙노트

[HADOOP] Hadoop / map-reduce : 점유 된 슬롯에있는 모든 맵에서 소비 한 총 시간 대 모든 맵 작업에서 보낸 총 시간

HADOOP

Hadoop / map-reduce : 점유 된 슬롯에있는 모든 맵에서 소비 한 총 시간 대 모든 맵 작업에서 보낸 총 시간

배경 : 다양한 클러스터 구성에서 AWS Hadoop 작업의 성능을 분석하고 일부 Hadoop 카운터가 혼동됩니다.

질문 : "사용중인 슬롯에있는 모든 맵이 소비 한 총 시간"과 "모든 맵 작업이 소비 한 총 시간"의 차이는 무엇입니까? (감소에 대한 동일한 질문). 간결하게하기 위해이 카운터를 mapO, mapT, redO 및 redT라고합니다. 다음은 세 가지 구성 (각각 여러 코어 / 슬레이브 노드가 있음)에서 본 것입니다.

1) AWS / EMR 작업 (Hadoop 2.4.0-amzn-3)의 경우 mapO / mapT의 비율은 항상 6.0이고 redO / redT의 비율은 항상 12.0입니다.

2) 인스턴스 스토리지를 사용하여 수동으로 설치된 Hadoop (Hadoop 2.4.0.2.1.5.0-695)의 경우 mapO / mapT의 비율은 항상 1.0이지만 redO / redT의 비율은 때때로 1.0이고 때로는 2.0입니다.

3) EBS 스토리지를 사용하여 수동으로 설치된 Hadoop의 경우 mapO / mapT의 비율은 항상 1.0이고 redO / redT의 비율은 항상 2.0입니다.

다른 구성의 비율이 다를 것이라고 가정하지만이 카운터 / 타이머는 실제로 무엇을 측정합니까?

Tom White의 뛰어난 "Hadoop"책 (3 판)을 구입했지만 mapO 또는 redO 카운터 또는 일반적으로 "사용중인 슬롯"에 대한 언급은 없습니다.

또한 많은 Google 검색을 실행하고 hadoop.apache.com에서 수십 페이지를 보았습니다. 또한 MacBook에 hadoop이 있고이 카운터의 코드를 검색하여 찾을 수 없었습니다 (확실히 있지만 확실합니다 ??).

관련 (답이없는) 질문에서 언급했듯이 이러한 기본 카운터에 대한 기본 설명조차도 쉽게 사용할 수 없다는 것은 놀라운 일입니다.

해결법

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

    1.코드에서 "사용 된 슬롯 (ms)의 모든 맵에서 소비 한 총 시간"은 JobCounter.java의 열거 형 SLOTS_MILLIS_MAPS (또는 SLOTS_MILLIS_REDUCES)로 표시됩니다. 이러한 상수는 더 이상 사용되지 않습니다. 그들은 작업 기간에 맵 작업에 사용 된 MB와 하나의 원사 슬롯에 필요한 최소 MB의 비율을 곱하여 숫자를 얻습니다.

    코드에서 "사용 된 슬롯 (ms)의 모든 맵에서 소비 한 총 시간"은 JobCounter.java의 열거 형 SLOTS_MILLIS_MAPS (또는 SLOTS_MILLIS_REDUCES)로 표시됩니다. 이러한 상수는 더 이상 사용되지 않습니다. 그들은 작업 기간에 맵 작업에 사용 된 MB와 하나의 원사 슬롯에 필요한 최소 MB의 비율을 곱하여 숫자를 얻습니다.

    따라서 맵 태스크가 4MB를 사용하고 최소 슬롯 크기가 1MB 인 경우, 태스크는 다른 태스크에 사용될 수있는 4 * 시간의 시간이 걸렸습니다. 설정마다 비율이 다른 이유를 설명합니다. 그 지표가 특히 유용하다는 것을 알지 못합니다 (특히 코드에 들어 가지 않고 의미가 무엇인지 명확하지 않기 때문에).

  2. from https://stackoverflow.com/questions/28861620/hadoop-map-reduce-total-time-spent-by-all-maps-in-occupied-slots-vs-total-time by cc-by-sa and MIT license