[논문 리뷰] Don't cry over spilled records: Memory elasticity of data-parallel applications and its application to cluster scheduling
이 논문은 데이터 병렬 워크로드에서 메모리 탄력성(memory elasticity)을 식별하고 정량화한다. 이는 최적의 메모리보다 훨씬 적은 메모리로 작업이 실행되지만 성능 저하가 중간 정도에 그치는 현상이다. 저자들은 이러한 탄력성을 모델링하고 Apache YARN에 통합함으로써, 메모리 사용과 런타임 간의 트레이드오���을 활용하여 작업 대기 지연을 줄이고 클러스터 스케줄링 효율을 향상시켜 평균 작업 완료 시간에 최대 60% 향상을 이룬다.
Understanding the performance of data-parallel workloads when resource-constrained has significant practical importance but unfortunately has received only limited attention. This paper identifies, quantifies and demonstrates memory elasticity, an intrinsic property of data-parallel tasks. Memory elasticity allows tasks to run with significantly less memory that they would ideally want while only paying a moderate performance penalty. For example, we find that given as little as 10% of ideal memory, PageRank and NutchIndexing Hadoop reducers become only 1.2x/1.75x and 1.08x slower. We show that memory elasticity is prevalent in the Hadoop, Spark, Tez and Flink frameworks. We also show that memory elasticity is predictable in nature by building simple models for Hadoop and extending them to Tez and Spark. To demonstrate the potential benefits of leveraging memory elasticity, this paper further explores its application to cluster scheduling. In this setting, we observe that the resource vs. time trade-off enabled by memory elasticity becomes a task queuing time vs task runtime trade-off. Tasks may complete faster when scheduled with less memory because their waiting time is reduced. We show that a scheduler can turn this task-level trade-off into improved job completion time and cluster-wide memory utilization. We have integrated memory elasticity into Apache YARN. We show gains of up to 60% in average job completion time on a 50-node Hadoop cluster. Extensive simulations show similar improvements over a large number of scenarios.
연구 동기 및 목표
- Hadoop, Spark, Tez, Flink와 같은 주요 프레임워크에서 데이터 병렬 작업의 본질적 특성으로서 메모리 탄력성을 식별하고 정량화하는 것.
- 메모리 탄력성이 예측 가능하며 단순한 분석 함수로 정확하게 모델링할 수 있음을 보여주는 것.
- 메모리 탄력성을 클러스터 스케줄링에 활용하여 작업 대기 시간을 줄이고 작업 완료 시간을 향상시킬 수 있는지 탐색하는 것.
- Apache YARN에 메모리 탄력성을 통합하고, 클러스터 전체의 메모리 활용도와 작업 성능에 미치는 영향을 평가하는 것.
제안 방법
- 저자들은 샤프블 메모리가 부족할 경우의 성능 저하를 측정하기 위해 다양한 메모리 할당량에서 작업 런타임을 측정한다.
- Hadoop에 대한 단순 예측 모델을 개발하여 런타임 대비 메모리 사용 간의 트레이드오프를 기술하고, 이를 Spark와 Tez로 최소한의 조정으로 확장한다.
- 실제 클러스터 트레이스를 사용하여 PageRank, NutchIndexing 등 다양한 워크로드에서 모델을 검증한다.
- 메모리 탄력성을 Apache YARN에 통합하여, 작업의 탄력성 프로파일에 기반해 동적으로 더 적은 메모리를 할당하는 YARN-ME라는 수정된 스케줄러를 개발한다.
- 스케줄러는 메모리 할당 감소(대기 시간 감소)와 외부 정렬로 인한 런타임 증가 간의 트레이드오프를 활용하여 작업 완료 시간을 최적화한다.
- 50개 노드로 구성된 Hadoop 클러스터에서 실시간 실험과 광범위한 시뮬레이션을 통해 메모리 탄력성이 작업 완료 시간과 자원 활용도에 미치는 영향을 평가한다.
실험 결과
연구 질문
- RQ1데이터 병렬 작업은 최적 메모리보다 얼마나 적은 메모리 할당을 받아도 금지된 성능 저하 없이 견딜 수 있는가?
- RQ2메모리 할당이 부족할 경우 성능 저하가 얼마나 예측 가능하며, 이를 정확하게 모델링할 수 있는가?
- RQ3클러스터 스케줄링에서 메모리 탄력성을 활용하여 작업 대기 시간을 줄이고 작업 완료 시간을 향상시킬 수 있는가?
- RQ4작업 메모리나 실행 페널티를 잘못 추정했을 경우 메모리 탄력성을 활용하는 스케줄러의 견고성은 어떠한가?
주요 결과
- PageRank와 NutchIndexing Hadoop 리듀서는 각각 최적 메모리의 10%만 할당받아도 1.22배와 1.75배의 속도 저하만 겪는다.
- Hadoop 마퍼는 최적 메모리의 10%에서도 최대 1.5배의 성능 저하를 보이며, 강한 메모리 탄력성을 보임을 시사한다.
- 동일한 성능 저하는 Spark, Tez, Flink에서도 관찰되어 메모리 탄력성이 주요 데이터 병렬 프레임워크 전반에 널리 퍼져 있음을 입증한다.
- 향상된 스케줄러인 YARN-ME는 50노드 Hadoop 클러스터에서 메모리 탄력성을 활용하여 평균 작업 완료 시간에 최대 60% 향상을 이룬다.
- 스케줄러는 작업 실행 시간을 과소평가하는 데에도 강건하며, 최대 50% 과소평가 상황에서도 유사한 성과를 유지한다.
- 모델의 잘못된 추정에 영향을 거의 받지 않으며, 메모리 과대추정 시 YARN-ME에서 최대 45%의 성과 향상을 얻을 수 있고, 페널티 추정 오류는 성과 향상의 최대 4%만 감소시킨다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.