SW Engineering/Hadoop 98

YARN Node Labels (노드 레이블)

YARN Node Labels (노드 레이블) · Version : Hadoop 3.0.0-cdh6.3.2 YARN Labels는 서버를 특성에 맞게 구분하여 작업을 처리하게 하는 기능을 제공한다. 예를들어 클러스를 구축한 서버들의 하드웨어 사양이 다르다고 할때, IO 요청이 많은 작업은 SSD나 빠른 디스크를 가지고 있는 서버에서 작업하고, 연산이 많은 작업은 CPU 코어가 높거나, GPU 파워를 사용할 수 있는 서버에서 작업을 처리하면 더 효율적이다. 하지만 기존의 클러스터 방식은 이러한 특징에 따른 처리를 구분할 수 없이, 여유가 있는 서버에서 작업을 처리하기 때문에 YARN Node Labels를 사용하면 서버에 따라 작업을 구분할 수 있어 효율적이다. YARN Node Labels는 아래와 같은..

YARN 메모리 설정

YARN 메모리 설정 · Version : Hadoop 3.0.0-cdh6.3.2 YARN 메모리 설정은 yarn-site.xml 파일에서 변경할 수 있으며, 노드 매니저의 메모리, CPU 개수와 컨테이너에 할 수 있는 최대, 최소 메모리 등을 설정할 수 있다. 기본값은 yarn-default.xml을 참고하면 된다. yarn.nodemanager.resource.memory-mb · 클러스터의 각 노드에서 컨테이너 운영에 설정할 수 있는 메모리의 총량 · 메모리 최대값 설정시 노드의 OS를 운영할 메모리(최소4G)를 제외하고 설정 yarn.nodemanager.resource.cpu-vcores · 클러스터의 각 노드에서 컨테이너 운영에 설정할 수 있는 CPU의 개수 yarn.scheduler.maxi..

YARN 스케줄러 – Capacity 스케줄러

YARN 스케줄러 – Capacity 스케줄러 · Version : Hadoop 3.0.0-cdh6.3.2 리소스 매니저는 클러스터 자원을 관리하고 애플리케이션 마스터의 요청을 받아서 자원을 할당한다. 자원 할당 정책을 스케줄러라고 하며, Hadoop 2의 기본 스케줄러는 Capacity 스케줄러 이다. Capacity 스케줄러는 트리 형태로 큐를 선언하고, 각 큐 별로 이용할 수 있는 자원의 용량을 할당하여 사용할 수 있다. 예를들어 100GB의 클러스터 메모리 환경에서 A, B 두개의 큐에 각 40%, 60%의 용량(capacity)를 설정하면 A큐는 40G, B큐는 60G의 메모리를 사용할 수 있다. 그림 출처 : https://www.oreilly.com/library/view/hadoop-the..

임시 데이터 처리를 위한 매퍼 환경 설정 및 셔플 환경 설정

임시 데이터 처리를 위한 매퍼 환경 설정 및 셔플 환경 설정 · Version : Hadoop 3.0.0-cdh6.3.2 매퍼(Mapper) 처리중에 발생하는 임시 데이터의 처리를 위한 환경 설정 변수에 대해서 알아본다. · mapreduce.task.io.sort.mb : 맵의 출력 데이터를 저장할 링버퍼의 메모리 크기. 맵의 처리 결과를 설정한 메모리 크기만큼 저장하고 있다가, io.sort.spill.percent 이상에 도달하면 임시 파일로 출력 ü split/sort 작업을 위한 예약 메모리 ü 매퍼가 소팅에 사용하는 버퍼 사이즈를 설정 ü 디스크에 쓰는 횟수가 줄어듬 · mapreduce.map.sort.spill.percent : 맵의 출력데이터를 저장하는 버퍼(mapreduce.task.i..

MapReduce 메모리 설정

MapReduce 메모리 설정 · Version : Hadoop 3.0.0-cdh6.3.2 맵리듀스의 각 메모리 항목에 대한 정의를 알아본다. 맵리듀스의 메모리 설정은 mapred-site.xml, yarn-site.xml 값을 변경하여 사용할 수 있다. [yarn-site.xml] · yarn.nodemanager.resource.memory-mb : 노드 매니저가 컨테이너 할당에 사용할 수 있는 메모리 사이즈 · yarn.scheduler.minimum-allocation-vcores : 컨테이너에 할당 할 수 있는 최소 Vcore 개수 · yarn-scheduler.maximum-allocation-vcore : 컨테이너에 할당 할 수 있는 최대 Vcore 개수 · yarn.scheduler.min..

Hive에서 콤마(,)로 컬럼 구분 및 쿼테이션 내부의 콤마(“, , ”) 파싱 스킵하기

Hive에서 콤마(,)로 컬럼 구분 및 쿼테이션 내부의 콤마(“, , ”) 파싱 스킵하기 · Version : Hadoop 3.0.0-cdh6.3.2 Hive 테이블에서 데이터를 로드할때, 특정 구분자를 이용해서 파싱하는 경우 파싱의 규칙을 미리 테이블을 생성할때 정의해야 한다. 아래 스크립트는 콤마(,)로 컬럼을 구분하는 데이터에서 파싱을 하지 않아야 하는 콤마(,)의 데이터는 더블 쿼테이션(“”)으로 감싸서 해당 문장이 파싱되지 않도록 하는 규칙이다. 예를 들어 아래와 같은 콤마로 구분된 텍스트 데이터가 있다고 할 때, 컬럼 Col_1, Col_2, Col_3로 파싱한다. col_1,col_2,"col_3(a=3&b=40&c=NOTES&cid=1,10,33)" create table tbl_a ( c..

MapReduce JobTracker

MapReduce JobTracker · Version : Hadoop 3.0.0-cdh6.3.2 하둡 V1의 작업 단위는 잡(Job)이며, 하둡 V2의 작업 단위는 애플리케이션(Application)이다. 잡은 맵(Mapper) 태스크와 리듀스(Reduce) 태크스로 나누어지며, 태스크는 어템프트(Attempt) 단위로 실행된다. 맵리듀스 Job들은 JobTracker라는 소프트웨어 데몬의 의해 제어된다. JobTracker들은 마스터 노드에 존재하면서 아래와 같은 역할을 수행한다. · 클라이언트는 맵리듀스 잡을 JobTracker에게 보낸다. · JobTracker는 클러스터의 다른 노드들에게 맵과 리듀스 태스크를 할당한다. · 이 노드들은 TaskTracker라는 소프트웨어 데몬에 의해 각각 실행된..

MapReduce (맵리듀스)

MapReduce (맵리듀스) · Version : Hadoop 3.0.0-cdh6.3.2, 맵리듀스는 간단한 단위 작업을 반복하여 처리할때 사용하는 프로그래밍 모델이다. 간단한 작업을 처리하는 맵(Map) 작업과 맵 작업의 결과물을 모아서 집계하는 리듀스(Reduce) 단계로 구성된다. 하둡에서 분산처리를 담당하는 맵 리듀스 작업은 맵과 리듀스로 나누어져 처리된다. 맵리듀스 작업은 병렬로 처리가 가능하며 여러 컴퓨터에서 동시에 작업을 처리하여 속도를 높일 수 있다. 맵리듀스가 분산, 병렬처리하기 좋은 이유는 입력 데이터에 대한 맵 함수는 동시에 독립적으로 병영 처리할 수 있는 구조이기 때문이다. 아래는 맵리듀스 처리 순서이다. 1. 분할(Splitting) : 입력한 파일 값을 라인 단위로 분할한다. ..

Hive Buckets (버켓)

Hive Buckets (버켓) · Version : Hadoop 3.0.0-cdh6.3.2, Hive 하이브는 쿼리 성능을 높이기 위해 버켓(Buckets)이라는 데이터 모델을 제공하며, 버켓은 지정된 칼럼의 값을 해쉬 처리하고 지정한 수의 파일로 나누어 저장한다. 조인에 사용되는 키로 버켓 컬럼을 생성하면 필요한 버켓만 조회하면 되기 때문에 전제 디렉터리를 풀스캔하는 것보다 훨씬 빠르게 처리할 수 있다. 파티션은 데이터를 디렉터리로 나누어 저장하는 방식이며 버켓은 데이터를 파일별로 나누어 저장한다. 아래 그림은 파티션과 버켓의 차이점을 쉽게 정의하고 있다. 아래 스크립트는 버켓 테이블을 생성한다. -- col2를 버켓팅하여 20개의 파일에 저장 CREATE TABLE tbl1( col1 STRING,..

Hive Skewed (스큐)

Hive Skewed (스큐) · Version : Hadoop 3.0.0-cdh6.3.2, Hive 스큐(skewed)의 사전적 의미는 “비스듬하다”라는 뜻으로, 특정 데이터가 많이 입력되는 경우, 데이터 파일 한쪽에만 너무 많은 데이터가 쌓이는 것을 의미한다. 하이브에서 스큐 테이블로 생성하면 따로 파일을 만들어서 사용하므로 성능상 이점이 있다. 스큐는 파티션과 유사하지만 용도가 조금 다르다. 파티션은 크게 데이터를 분류하는 용도로 사용되며, 스큐는 컬럼의 데이터를 구분할 때 사용된다. 하이브 매뉴얼에는 아래와 같은 내용이 있다. 스큐 테이블은 스큐의 정보를 저장하고, 리스트 버켓팅까지 추가하면 스큐된 서브 디렉터리를 생성한다. Skewed Table vs. List Bucketing Table · ..