Apache Spark를 사용한 맵리듀스
이 기사에서는 Scala 프로그래밍 언어의 도움으로 Apache Spark를 사용하여 MapReduce
작업을 수행하는 방법을 배웁니다.
맵리듀스
개요
‘맵리듀스’는 ‘하둡’의 프로그래밍 패러다임으로 막대한 양의 데이터를 병렬로 처리하도록 설계됐다. 이 처리 또는 전체 작업은 작업이라고도 하는 더 작은 청크로 나누어 수행됩니다.
이것은 마스터-슬레이브
아키텍처를 따르기 때문에 마스터
노드는 작업을 할당하고 슬레이브
노드는 더 작은 작업(작업)을 수행합니다. 이러한 슬레이브
(서버 클러스터)는 개별 출력을 처리하고 제공합니다.
MapReduce
에는 두 가지 구성 요소가 있습니다. 하나는 매퍼
이고 다른 하나는 리듀서
입니다. 첫 번째 단계에서 데이터는 들어오는 데이터를 키와 값 쌍으로 변환하는 매퍼에 공급됩니다.
매퍼에 의해 생성된 출력은 종종 중간 출력이라고 합니다. 매퍼의 이 출력은 키를 기반으로 집계 정렬 유형의 계산을 수행하고 최종 출력인 키-값의 최종 쌍을 제공하는 리듀서에 대한 입력으로 제공됩니다.
Apache Spark
로 MapReduce
실행
MapReduce
는 Hadoop
시스템의 중요한 부분이지만 Spark
를 사용하여 실행할 수도 있습니다. 단어 수 코드를 더 잘 이해하기 위해 예제로 사용하는 매우 잘 알려진 MapReduce
프로그램을 보게 될 것입니다.
따라서 문제는 주어진 텍스트 파일에서 각 단어의 빈도를 세어야 한다는 것입니다.
전제 조건:
아래 프로그램을 실행하기 위해서는 시스템에 이러한 것들이 설치되어 있어야 합니다.
- JDK8
- 스칼라
- 하둡
- 스파크
파일을 HDFS 파일 시스템에 넣고 spark
셸을 시작해야 합니다.
예제 코드: 아래 코드는 Spark
셸에서 실행되었습니다.
val ourData = sc.textFile("myFile.txt");
ourData.collect;
val splitLines = ourData.flatMap(line => line.split(" "));
splitLines.collect;
val mapperData = splitLines.map(word => (word,1));
mapperData.collect;
val reducerData = mapperData.reduceByKey(_+_)
reducerData.collect
위의 코드가 실행되면 myfile.txt
에 있는 각 단어의 빈도를 제공합니다.