좋은 분산 시스템을 구축하기 위해서는 효율적인 입출력도 중요하지만 이것만으로는 충분하지 않다.
YARN은 클러스터에 계산을 분산하고 HDFS에 보관된 데이터를 확장 가능하도록 처리하는 방법을 추상화해서 제공하는 것 뿐이다.
따라서 계산을 표현하는 방법이 중요한데, 하둡이 가장 처음 지원한 데이터 처리 모델은 맵리듀스이다.
맵리듀스는 구글이 발표했고 많은 문제를 해결할 수 있으며 단순한 모델에 기반을 둔다.
덕분에 분산 시스템을 잘 몰라도 인프라 구축을 고민하지 않고 맵리듀스를 통해 문제를 해결할 수 있다.
맵리듀스는 병렬 처리 모델이고 문제를 맵 단계, 셔플 단계, 리듀스 단계로 나눠서 수행한다.
HDFS의 데이터 지역성과 YARN의 작업 및 리소스 관리 기능이 이 세 단계 계산이 효율적이도록 돕는다.
맵 단계에서는 입력한 데이터가 클러스터에서 병렬로 처리되며 매퍼 함수는 데이터를 <키, 값>의 쌍으로 변환한다.
변환된 데이터는 키를 기준으로 정렬되고 버킷으로 셔플링된다. 즉, 키가 같은 값들은 동일한 리듀서로 전달된다.
마지막으로 리듀서는 모든 키의 값을 처리하고 결과를 HDFS나 다른 영구 저장소에 저장한다.
맵리듀스의 맵, 셔플, 리듀스 세 단계는 각각 무상태이거나(stateless) 극히 제한적인 상태만 유지한다.
매퍼나 리듀서는 현재 입력받은 데이터를 이전의 데이터와 무관하게 처리하는데 이것은 각 단계의 매퍼나 리듀서가 어느 노드에서 실행될지 알 수 없기 때문이다. 단순하지만 이 단계를 거쳐 많은 문제를 해결할 수 있다.
이러한 맵리듀스의 기본적인 개념은 많은 문제를 해결할 수 있는데, 그 중에서도 대수적 해법(문제를 부분 결과로 나누고 합계, 평균, 계수 등의 방법을 사용해 최종 결과를 도출하는 방식)을 요하는 문제들을 쉽게 맵과 리듀스 작업으로 구성해 해결할 수 있다.
다만 모든 문제를 해결할 수 있는 것은 아니고 해결할 수 있더라도 복잡하거나 효율이 떨어질 수 있다.
특히 맵리듀스는 반복이 많은 작업에 적합하지 않아서 반복적인 수렴(converge) 과정이 필요한 과학 실험이나 머신러닝 알고리즘을 구현하기에 어려움이 있다.
YARN이 컴퓨팅 모델의 리소스 할당 작업을 일반화하게 되면서 하둡은 단순한 맵리듀스를 넘어 다양한 계산 모델과 데이터 처리 엔진들의 가능성을 열었다. 또한 YARN에 기반한 아파치 테즈, 아파치 스파크, 아파치 플링크 등 새롭게 등장한 처리 엔진들이 하둡의 기능을 확장하는 데에 기여했다.
참고 : 「하둡과 스파크를 활용한 실용 데이터 과학」, 오퍼 멘델리비치 외 2명
'스터디 > Data Analytics' 카테고리의 다른 글
데이터 분석 프레임워크 - AARRR (해적지표) (0) | 2022.03.16 |
---|---|
[PySpark] Jupyter Notebook에서 PySpark 사용하기 (0) | 2022.02.25 |
[Hadoop] YARN - 리소스 관리자와 스케줄러 (0) | 2022.02.24 |
[Hadoop] 하둡 설치하고 확인해보기 (0) | 2022.02.23 |
[Spark] 스파크 설치하고 csv 파일 불러오기 (0) | 2022.02.15 |