Skip to main content
QUICK REVIEW

[論文レビュー] Don't cry over spilled records: Memory elasticity of data-parallel applications and its application to cluster scheduling

Călin Iorgulescu, Florin Dinu|arXiv (Cornell University)|Feb 14, 2017
Cloud Computing and Resource Management参考文献 22被引用数 6
ひとこと要約

この論文は、データ並列ワークロードにおけるメモリ弾性を特定し、定量的に評価している—つまり、最適なメモリ量よりも著しく少ないメモリで実行されるタスクが、僅かなパフォーマンスコストで許容可能であることを示している。著者らは、この弾性をモデル化し、Apache YARN に統合することで、タスクの待ち行列遅延を低減し、メモリ使用量と実行時間のトレードオフを活用することでクラスタースケジューリングの効率を向上させ、平均ジョブ完了時間に最大60%の改善を達成した。

ABSTRACT

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が作成し、人間の編集者が確認しました。