Hadoop은 MapReduce 기반의 대용량 데이터 처리를 위한 프레임워크이며 아파치 오픈소스 결과물로서 널리 사용되고 있다. MapReduce는 거대한 작업 혹은 데이터를 작은 태스크로 나누어 수많은 노드가 동시에 작업을 진행함으로써 대용량 데이터를 고속으로 처리한다. 기존의 Hadoop 버전에서 가지는 확장성 문제를 해결하기 위해서 제안된 YARN(Yet Another Resource Negotiator)은 프로그래밍 모델과 자원관리를 분리함으로써 문제점을 해결하였다.
Hadoop YARN은 대용량 데이터 처리에 대해서 프로그래밍의 단순화, 관리의 간편화, 성능의 효율성에 상당한 이점이 있다. 하지만, 실행 환경을 동종 환경으로 가정하고 설계하여, 노드 간 성능이 서로 다른 이종 환경에서 성능이 저하되는 문제점이 발생한다. 이러한 이종 환경에서는 성능이 낮은 노드(Straggler)가 전체 처리 성능을 결정할 수 있으며, 이로 인해 성능이 저하되고 자원의 Utilization이 하락한다. 또한, 다중 사용자를 위한 스케줄러가 정상적으로 동작하지 않아, 다중 사용자 간 Fairness를 보장할 수 없다. 기존의 연구들은 태스크 스케줄링, 클러스터 스케줄링, 튜닝 기법 등을 통하여, 이를 해결하려 하였지만, 부하 분산, 최적의 작업 할당 방식 탐색 및 Fairness 보장을 위해서는 복잡한 연산을 거쳐야 한다.
본 논문에서는 YARN의 작업 처리단위인 컨테이너 간의 성능을 같거나 유사하게 만들어 배치함으로써 해당 문제를 해결하려하였다. 컨테이너 간 성능이 동일하다면, 성능이 다른 하드웨어들에 태스크를 할당할 때, 작업 할당 및 Fairness 보장을 위한 연산을 단순화할 수 있다. 또한, 컨테이너 간 성능이 크게 차이가 없으므로 Straggler 발생 가능성을 낮출 수 있으며, 자원의 Utilization을 향상시킴으로써 전체 작업 처리 성능을 높일 수 있다. 이를 위해, 컨테이너의 CPU 사용량을 결정하는 vCore의 개수 설정을 통하여, 컨테이너 간 성능이 같거나 유사하게 배치할 수 있는 알고리즘을 제안한다.
제안 알고리즘을 적용하기 위해 노드 간 성능의 편차를 분석해야한다. 기존 연구들은 실제 작업을 수행하여 이를 판단하였지만, 작업을 수행하기 위한 비용이 상당히 높으며, 작업 처리량을 변화 시켰을 경우에 종료시간에 대한 예측이 상당히 어렵다. 이에 본 논문에서는 가상화 자원에 대한 벤치마크 기법을 통하여 성능을 측정하고, 균일화 알고리즘을 통하여 vCore 개수를 선정함으로써 이를 해결하였다. 제안 알고리즘을 통하여, 다중 사용자 환경에서 작업 종료시간을 평균 18% 향상시켰으며, 사용자간 Fairness를 평균 50% 향상시켰다.