복붙노트

[HADOOP] hadoop map 보조 정렬 줄이기

HADOOP

hadoop map 보조 정렬 줄이기

아무도 나에게 두 번째 분류가 어떻게 작동하는지 설명 할 수 있습니까? GroupingComparator를 사용해야하는 이유와 그것이 hadoop에서 어떻게 작동합니까?

나는 아래 링크를 통해 가고 그룹 코디네이터가 어떻게 작동하는지 의심스러워했다. 어느 누구도 그룹화 비교가 작동하는 방법을 설명 할 수 있습니까?

http://www.bigdataspeak.com/2013/02/hadoop-how-to-do-secondary-sort-on_25.html

해결법

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

    1.그룹화 비교기

    그룹화 비교기

    데이터가 감속기에 도달하면 모든 데이터가 키로 그룹화됩니다. 우리는 복합 키를 가지고 있기 때문에 레코드가 자연 키에 의해서만 그룹화되어 있는지 확인해야합니다. 이 작업은 사용자 지정 GroupPartitioner를 작성하여 수행 할 수 있습니다. Comparator 객체는 레코드를 그룹화하기 위해 TemperaturePair 클래스의 yearMonth 필드만을 고려합니다.

    public class YearMonthGroupingComparator extends WritableComparator {
    
        public YearMonthGroupingComparator() {
            super(TemperaturePair.class, true);
        }
    
        @Override
        public int compare(WritableComparable tp1, WritableComparable tp2) {
            TemperaturePair temperaturePair = (TemperaturePair) tp1;
            TemperaturePair temperaturePair2 = (TemperaturePair) tp2;
            return temperaturePair.getYearMonth().compareTo(temperaturePair2.getYearMonth());
        }
    }
    

    다음은 2 차 정렬 작업을 실행 한 결과입니다.

    new-host-2:sbin bbejeck$ hdfs dfs -cat secondary-sort/part-r-00000
    

    190101 -206

    190102 -333

    190103 -272

    190104 -61

    190105 -33

    190106 44

    190107 72

    190108 44

    190109 17

    190110 -33

    190111 -217

    190112 -300

    가치에 따라 데이터를 정렬하는 것이 일반적인 필요는 아닐 수도 있지만 필요할 때 뒷주머니에 넣는 것이 좋은 도구입니다. 또한 커스텀 파티셔너 및 그룹 파티셔를 사용하여 Hadoop의 내부 동작을 자세히 살펴볼 수있었습니다. 이 링크도 참조하십시오 .. hadoop 맵에서 그룹화 비교기를 사용하는 것은 무엇입니까 reduce

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

    2.다이어그램을 사용하여 특정 개념을 쉽게 이해할 수 있으며 이는 분명히 그 중 하나입니다.

    다이어그램을 사용하여 특정 개념을 쉽게 이해할 수 있으며 이는 분명히 그 중 하나입니다.

    우리의 2 차 정렬은 성 (姓)과 성 (姓)으로 구성된 복합 키에 있다고 가정합니다.

    복합 키를 사용하지 않으면 이제 보조 정렬 메커니즘을 살펴볼 수 있습니다.

    파티셔너와 그룹 비교자는 자연 키만 사용하며, 파티셔너는이 키를 사용하여 동일한 자연 키를 가진 모든 레코드를 단일 감속기로 보냅니다. 이 분할은 맵 단계에서 발생하며 여러 맵 태스크의 데이터는 그룹화 된 다음 축소 메소드로 전송됩니다. 이 그룹핑은 그룹 비교기가 그림으로 들어가는 곳입니다. 사용자 정의 그룹 비교기를 지정하지 않으면 Hadoop이 전체 합성 키를 고려한 기본 구현을 사용하여 잘못된 결과를 초래합니다.

    MR 단계 개요

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

    3.다음은 그룹화의 예입니다. 복합 키 (a, b)와 그 값 v를 생각해 봅시다. 정렬 후에는 다음과 같은 (키, 값) 쌍의 그룹으로 끝나는 것으로 가정합시다.

    다음은 그룹화의 예입니다. 복합 키 (a, b)와 그 값 v를 생각해 봅시다. 정렬 후에는 다음과 같은 (키, 값) 쌍의 그룹으로 끝나는 것으로 가정합시다.

    (a1, b11) -> v1
    (a1, b12) -> v2
    (a1, b13) -> v3
    

    기본 그룹 비교기를 사용하면 모든 키가 다르기 때문에 프레임 워크는 reduce 함수를 각각 (키, 값) 쌍으로 3 번 호출합니다. 그러나 사용자 지정 그룹 비교기를 제공하고 b를 무시하고 a에만 종속되도록 프레임 워크를 정의하면이 그룹의 모든 키가 동일하고 다음 키를 사용하여 reduce 함수를 한 번만 호출합니다. 값 목록 :

    (a1, b11) -> <v1, v2, v3> 
    

    제 1 복합 ​​키만이 사용되고, b12 및 b13은 "손실", 즉 감속기로 전달되지 않는다는 점에 유의해야한다.

    최대 온도를 계산하는 "Hadoop"의 유명한 예제에서 a는 연도이고 b는 온도가 내림차순으로 정렬되어 있으므로 b11이 원하는 최대 온도이고 다른 b는 상관하지 않습니다. reduce 함수는 수신 된 (a1, b11)을 해당 해의 해답으로 씁니다.

    "bigdataspeak.com"의 예제에서 모든 b는 감속기에 필요하지만 각각의 값 (객체)의 일부로 사용할 수 있습니다 v.

    이 방법으로 키에 값 또는 부분을 포함 시키면 Hadoop을 사용하여 키뿐만 아니라 값을 정렬 할 수 있습니다.

    희망이 도움이됩니다.

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

    4.파티셔너는 하나의 감속기가 키에 속한 모든 레코드를 수신하도록 보장하지만 감속기가 파티션 내의 키로 그룹화된다는 사실은 변경하지 않습니다.

    파티셔너는 하나의 감속기가 키에 속한 모든 레코드를 수신하도록 보장하지만 감속기가 파티션 내의 키로 그룹화된다는 사실은 변경하지 않습니다.

    2 차 정렬의 경우 우리는 합성 키를 형성하고, 기본 동작을 계속하도록하면 그룹화 논리가 키가 다른 것으로 간주합니다.

    그래서 우리는 그룹화를 통제해야합니다. 따라서 우리는 복합 키보다는 키의 자연적인 부분을 기반으로 그룹화하기 위해 프레임 워크에 표시해야합니다. 따라서 그룹핑 비교기는 동일하게 사용되어야합니다.

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

    5.위의 예제는 좋은 설명을 가지고, 그것을 단순화하자. 우리는 세 가지 주요 단계를 수행해야합니다.

    위의 예제는 좋은 설명을 가지고, 그것을 단순화하자. 우리는 세 가지 주요 단계를 수행해야합니다.

  6. from https://stackoverflow.com/questions/18395998/hadoop-map-reduce-secondary-sorting by cc-by-sa and MIT license