Map태스크 3

Hive 투기적 실행(Speculative execution)

Hive 투기적 실행(Speculative execution) · Version : Hive Hive에서 투기적 실행(Speculative execution)이라 불리는 기능은 하나의 잡을 중복된 태스크로 구성하여 동시에 수행 시키는 하둡의 기능이다. 같은 데이터를 중복하여 복사하기 때문에 더 많은 리소스를 사용하며, 대부분의 데이터는 버려진다. 이 기능의 목적은 느리게 동직하는 태스크 트래커를 제거함으로써 개별 태스크의 결과가 더 빨리 도출되고 결과적으로 전체 잡 수행을 향상시키는데 있다. 즉, 동일한 태스크를 여러노드에서 실행함으로써, 특정 노드가 느리더라도 (장비 노후 또는 기타 문제로) 다른 노드에서 먼저 끝나면 해당 결과를 사용하고 나머지 노드는 중지 시킨다. 그래서 전체적으로는 수행시간이 단축..

Hive 자바 가상 머신 재사용

Hive 자바 가상 머신 재사용 · Version : Hive 하둡에서 맵리듀스 태스크를 실행하면 기본적으로 자바 가상 머신이 실행되고 그 위에서 맵 또는 리듀서 태스크를 실행한다. 하둡의 기본 설정은 일반적으로 포크(forked)된 자바 가상 머신을 사용한다. 자바 가상 머신은 가동할 때 오버헤드가 있기 때문에, 가상 머신의 재사용은 하이브 성능과 매우 밀접한 관계가 있다. 특히 작은 파일을 처리해야하는 경우나 태스크 수행시간이 짧은 작업의 경우 자바 가상 머신을 재사용하면 매우 효율이 좋다. 만약 수십, 수백번의 태스크를 가진 잡을 수행할때 자바 가상 머신 인스턴스를 재사용한다면 동일한 잡에 N번 재사용된다. 가상 머신의 재사용 설정은 하둡의 mapred-site.xml에서 설정할 수 있다. mapr..

Hive Mapper, Reduce 개수 최적화

Hive Mapper, Reduce 개수 최적화 · Version : Hive 하이브는 쿼리를 한 개 이상의 맵리듀스 잡으로 나누어 병렬로 처리한다. 맵리듀스는 다수의 맵퍼와 리듀서 태스크로 실행되는데 맵퍼와 리듀서의 수는 입력하는 데이터 크기, 데이터 수행 연산 종류 등 다양한 변수에 의존적이다. 너무 많은 맵퍼와 리듀서 태스크는 잡을 초기화 하고, 스케줄링하고 실행하기 위해 많은 오버헤드를 유발한다. 반대로 너무 적은 태스크는 클러스터가 가진 병렬처리의 장점을 잘 활용하지 못하게 된다. 리듀스 단계가 있는 하이브 쿼리를 실행하면 리듀서 수를 출력한다. GROUP BY는 항상 리듀서 단계가 필요하기 때문에 해당 구문이 포함한스크립트를 실행하면 사용된 맵퍼와 리듀서의 개수를 확인할 수 있다. INFO :..