[HADOOP] 결합기 구현 및 내부 작업
HADOOP결합기 구현 및 내부 작업
내 MR 코드에서 Combiner를 사용하여 WordCount라고 말하고 싶습니다.
어떻게 구현해야합니까?
어떤 종류의 데이터가 결합기에서 감속기로 전달됩니까?
누구나 Combiner와 Reducer의 코드를 제공 할 수 있다면 좋을 것입니다.
결합 자 작동 방식을 설명 할 수 있다면 더 좋을 것입니다.
나는 mapreduce에 처음이고 나는 배우는 단계에있다.
미리 감사드립니다 :)
해결법
-
==============================
1.컴 바이 너 (semi-reducer라고도 함).
컴 바이 너 (semi-reducer라고도 함).
Combiner의 주요 기능은 맵 출력 레코드를 동일한 키로 요약하는 것입니다.
Map 클래스와 Reduce 클래스 사이에서 Combiner 클래스를 사용하여 Map과 Reduce 간의 데이터 전송량을 줄입니다.
샘플 코드 설명.
MAP 입력 :
What do you mean by Object What do you know about Java What is Java Virtual Machine How Java enabled High Performance
MAP 출력
<What,1> <do,1> <you,1> <mean,1> <by,1> <Object,1> <What,1> <do,1> <you,1> <know,1> <about,1> <Java,1> <What,1> <is,1> <Java,1> <Virtual,1> <Machine,1> <How,1> <Java,1> <enabled,1> <High,1> <Performance,1>
이 MAP 출력은 Combiner에 입력으로 전달됩니다.
결합기 출력
<What,1,1,1> <do,1,1> <you,1,1> <mean,1> <by,1> <Object,1> <know,1> <about,1> <Java,1,1,1> <is,1> <Virtual,1> <Machine,1> <How,1> <enabled,1> <High,1> <Performance,1>
이 결합기 출력은 Reducer에 입력으로 전달됩니다.
감속기 출력
<What,3> <do,2> <you,2> <mean,1> <by,1> <Object,1> <know,1> <about,1> <Java,3> <is,1> <Virtual,1> <Machine,1> How,1> <enabled,1> <High,1> <Performance,1>
자바를 사용하고 있다면, 아래의 코드는 Combiner와 Reducer를 동일한 클래스로 설정합니다. 이상적입니다.
job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class);
자바 @tutorialspoint의 작업 예제를 살펴보십시오.
-
==============================
2.결합기는 감속기와 동일한 작업을 수행하고 감속기 인터페이스를 구현할 수 있으며 탈 방식을 통해 결합기를 사용하면 네트워크 대역폭의 양이 적어 중간체 (o / p는 매퍼)를 감속기로 전송할 수 있습니다.
결합기는 감속기와 동일한 작업을 수행하고 감속기 인터페이스를 구현할 수 있으며 탈 방식을 통해 결합기를 사용하면 네트워크 대역폭의 양이 적어 중간체 (o / p는 매퍼)를 감속기로 전송할 수 있습니다.
감속기에서 사용되는 응용 프로그램이 Commutative와 Associative를 모두 준수하는 경우 결합 메소드에서 메소드를 축소하는 것과 동일한 reduce 메소드 (자신의 감속기에 속함)를 사용할 수 있습니다.
MR (맵 축소) 애플리케이션 용 결합기를 작성하더라도 조합기를 실행하는 규칙은 없습니다. 결합기를 실행하여 유출 횟수가 적어도 3 회 이상이어야합니다.
내 매퍼 출력은 ,,,,, <34>입니다. 결합기를 사용하면 감속기에 대한 의견을 입력 할 수 있습니다. 결합기와 함께, 나는 감속기에 입력을 전달할 수 있습니다.
-
==============================
3.결합자는지도와 축소 단계 사이의 데이터 전송량을 줄이기 위해 매퍼와 감속기 사이에서 사용됩니다.
결합자는지도와 축소 단계 사이의 데이터 전송량을 줄이기 위해 매퍼와 감속기 사이에서 사용됩니다.
결합 자 구현은 감속기 구현과 유사합니다. reduce 인터페이스의 reduce 메소드를 구현해야합니다. 입력 및 출력 키 값 쌍은 감속기와 비슷해야합니다.
우리 드라이버에서 우리는 감속기 클래스를 결합 자로 언급 할 수 있습니다.
job.setCombinerClass(MyReducer.class)
Combiners는 교환 가능하고 연관성이있는 함수에서만 사용할 수 있습니다.
For example maximum of numbers Map 1 output - (23,27, 31) -> Combiner -> 31 Map 2 output - (22,36,33,45) -> Combiner -> 45 Map 3 output - (41,33,15,16) -> Combiner -> 41 Combiner acts on each of the mapper's output. Combiner output - (31,45,41) ->Reducer -> 45
데이터 전송 양은 이제 예제에서 분명합니다.
from https://stackoverflow.com/questions/33406566/combiner-implementation-and-internal-working by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 하이브에서 측면보기를 사용하는 동안 예외 (0) | 2019.06.12 |
---|---|
[HADOOP] 창 기능이 Pyspark sqlcontext에서 작동하지 않습니다. (0) | 2019.06.12 |
[HADOOP] 이클립스 Hadoop 플러그인 문제 (localhost / 127.0.0.1 : 50070으로 전화 걸기) 어떤 시체라도 나에게이 솔루션을 줄 수 있습니까? (0) | 2019.06.12 |
[HADOOP] Java API를 사용하여 Hive에서 테이블 속성 가져 오기 (0) | 2019.06.12 |
[HADOOP] STRUCT를 사용한 간단한 Hive 쿼리의 구문 오류는 어디에 있습니까? (0) | 2019.06.12 |