hadoop
-
Apache Tez란?Data 2021. 9. 2. 23:18
주요개념 빠르게 확장성있고 효율적인 데이터 플로우 중심 엔진 개발을 목적으로 함. 조금 학술적인 개념을 많이 사용하였고 그것이 코드에 반영되어 있음 DAG: Directed Acyclic Graph로 데이터 프로세싱 워크플로우를 나타냄. 데이터는 edge의 방향으로 흐름. Vertex: 프로세싱의 논리적인 흐름을 나타냄. 프로세싱 스텝은 애플리케이션에서 제공된 코드를 통해 데이터를 변경함. Logical DAG: 논리적 DAG은 vertices 세트로 구성되며 각 vertex는 특정 컴퓨팅 스텝을 나타냄. Task: vertex 내에서 한 단위의 프로세싱을 나타냄. 분산 프로세싱에서 하나의 vertex로 나타내어지는 논리적 work는 물리적으로 여러 기기에서 실행되는 tasks들로 구성됨 Physical..
-
맵리듀스의 제약과 Apache TezData 2021. 9. 2. 23:04
하둡의 분산처리엔진인 맵리듀스는 이후 많은 분산처리엔진에 영향을 주었습니다. 맵리듀스 개선에 대한 많은 논의와 연구와 동시에 한계점을 파악하고 새로운 프레임워크를 만드는데 그러한 맵리듀스의 한계점이 많이 고려되었는데요. 이 글에서는 맵리듀스의 한계점과 하둡 환경에서 대체제로 개선된 성능을 보여주는 테즈(Apache Tez)를 비교하는 내용을 다뤄보도록 하겠습니다. 맵리듀스의 제약들 [1] 하이 레벨 언어의 부재: 맵리듀스 자체로는 어떠한 하이 레벨 언어와 쿼리 레벨의 최적화를 제공하지 않음. 유저는 맵, 리듀스 함수로 구현해야 함. 스키마와 인덱스가 없음: 스키마와 인덱스가 없음. MR 잡은 인풋에 대해 작업을 하고 스토리지에 바로 저장할 수 있으나 이러한 부분은 데이터 모델링의 장점을 제외해 버림. 맵..
-
맵리듀스 처리 흐름 알아보기 (MapReduce Phases)Data 2021. 9. 1. 22:27
맵리듀스는 맵과 리듀스로 구성되어 있습니다. 한 단계 더 나아가 실제 데이터를 읽고 쓰는 처리 흐름을 살펴보면, 좀 더 작은 단위로 나뉠 수 있는 것들로 구성되어 있는 것을 알 수 있습니다. 이번 글에서는 아래와 같은 사항들을 중점으로 맵리듀스 처리 흐름을 자세하게 살펴보겠습니다: 맵리듀스 처리 흐름 개요 Record Reader Map Combiner Partitioner Shuffle and Sort Reduce Output Format 맵리듀스 처리 흐름 개요 파일시스템에서 데이터를 읽어서, 가공하고, 다시 파일시스템에 쓰는 맵리듀스 작업은 아래와 같은 처리 흐름을 가집니다: 맵리듀스의 job은 분산되어 실행되는 몇 가지 map tasks와 reduce tasks로 나뉩니다. 각 task는 할당된 ..
-
맵리듀스 작업 개선을 위한 추가적인 사항들Data 2021. 8. 28. 08:56
맵리듀스는 간단하게 map과 reduce 함수 작성을 통해 구현됩니다. 대부분의 경우에 기본적인 map과 reduce만으로 충분하지만, 특정 상황에서는 몇몇의 추가적인 설정이 매우 유용한데요. 이번 글에서는 [1]에 기반해 그러한 사항들을 알아보겠습니다. 파티셔닝 함수 맵리듀스 사용자들은 원하는 reduce tasks 수(결과물 파일 수)를 설정하게 됩니다. 중간결과물의 키에 대한 파티셔닝 함수를 사용하여 데이터는 이러한 task들에 파티션되게 됩니다. 디폴트 파티셔닝 함수는 hashing을 사용합니다. 이 경우 대부분 적절히 균형잡힌 파티션이라는 결과는 낳는데요. 하지만 어떠한 상황에서는 데이터를 다른 파티셔닝 함수를 사용해 파티션하는 것이 유용하기도 합니다. 예로, 결과물의 키가 URL이고 단일한 호..
-
맵리듀스란? (Hadoop MapReduce)Data 2021. 8. 22. 21:44
맵리듀스는 프로그래밍 모델임과 동시에 구현체를 부르는 말로, 그 구현체는 '분산처리엔진' 역할을 하는 하둡의 중심 모듈 중 하나입니다. 사용자는 키/값 쌍을 처리하는 map 함수를 설정하여 중간 결과물 형태의 키/값 쌍 데이터를 만들고, reduce 함수를 설정하여 앞선 중간 결과물의 키를 통해 같은 키를 가진 값들을 합쳐서 최종 결과물을 만듭니다 [1]. 이렇게 함수형 스타일로 작성된 프로그램은 자동적으로 병렬화되어 처리되며, 일반적인 상용 기기에서(특별한 고성능 기기가 아닌) 대용량으로 처리를 가능하게 합니다. 그렇기에 이러한 프로그램을 사용하여 분산병렬 애플리케이션을 손쉽게 개발하고 사용할 수 있게 합니다. 이 글에서는 '맵리듀스'와 관련해 아래와 같은 내용을 다루겠습니다: 맵리듀스 프로그래밍 모델..
-
아파치 하이브란? (Apache Hive)Data 2021. 2. 24. 22:21
아파치 하이브는 하둡 환경에서 1) 복잡한 맵리듀스(또는 다른 엔진) 코드를 SQL과 유사한 간단한 HiveQL로 처리가 가능하도록 하고, 2) 파일시스템에 저장된 데이터에 catalog와 metastore를 제공하여 논리적 데이터 베이스, 테이블, 파티션을 제공하여 데이터를 구조화할 수 있게 합니다. 이번글에서는 아파치 하이브의 구조를 중심으로 아래와 같은 내용을 살펴보도록 하겠습니다: 하이브의 탄생배경 아파치 하이브 아키텍쳐 하이브의 데이터모델과 쿼리 (Hive QL) 하이브의 탄생배경 하이브는 페이스북에서 개발이 시작되어, 넷플릭스와 같은 다른 기업도 기여하였습니다. 2000년대 초, 하둡이 탄생하여 데이터 분석은 데이터베이스 기반에서 하둡 환경을 기반으로 진행되기 시작하였습니다. 하둡은 기존의 데..
-
[Hands On] 도커 기반 하둡 살펴보기 (HDFS, YARN, MapReduce, Hive)Data 2021. 1. 27. 21:58
처음 하둡을 공부하려고 했을 때, 하둡이 무엇이고 정확히는 무엇인지 실체를 알기 어려웠습니다. 더욱 어려웠던 부분은, 책과 이론적인 내용들은 많은 자료가 있었으나 직접 튜토리얼을 진행하고자 하면 HDFS, YARN, MapReduce, Hive 등 다양한 서비스를 설치하고 설정을 연동해야한다는 부분이었습니다. 시간이 지나 되돌아보니, 간단한 docker-compose up을 통해 하둡 환경이 로컬에 실행되고 HDFS 네임노드 및 데이터노드의 Web UI를 통해 직접 글로 봤던 사항을 확인해보고 Hive 쿼리를 바로 로컬에서 실행해볼 수 있었으면 더 빨리 배울 수 있었을 것 같다는 생각을 많이 했었습니다. 이 글에서는 Big Data Europe에서 제공한 docker-hadoop [1]을 바탕으로 바로 ..
-
YARN 노드매니저(Node Manager)Data 2021. 1. 27. 21:28
노드매니저는 하둡(Hadoop) 프로젝트의 YARN 모듈 중 하나의 컴포넌트로 Worker 역할을 하며 클러스터에 속한 노드들에서 컨테이너를 실행하고, 각 컨테이너의 리소스 사용량을 모니터링하고 그것의 상태를 리소스매니저에 report하는 역할을 담당합니다. 이 글에서는 노드매니저의 상세한 기능과 그 구현을 알아보겠습니다: 노드매니저의 주요 기능과 컴포넌트 오버뷰 노드매니저의 주요 컴포넌트들 관련글: 목적과 탄생배경 YARN(하둡분산자원관리) 주요개념 및 아키텍쳐 YARN(하둡분산자원관리) 실행 구조 및 흐름 YARN 리소스매니저(Resource Manager) YARN 노드매니저(Node Manager) (이번글) 노드매니저의 주요 기능과 컴포넌트 오버뷰 노드매니저는 하둡 YARN 클러스터의 개별 컴퓨..