Skip to main content
QUICK REVIEW

[論文レビュー] Sparkle: Optimizing Spark for Large Memory Machines and Analytics

Mijung Kim, Jun Li|arXiv (Cornell University)|Aug 18, 2017
Cloud Computing and Resource Management参考文献 9被引用数 6
ひとこと要約

Sparkleは、Apache Sparkを大容量メモリのスケールアップシステム向けに最適化するために、TCPベースのシャッフルを共有メモリシャッフルエンジンに置き換え、効率的なインプレース更新を可能にするオフヘーブメモリストアを導入する。これにより、反復的グラフワークロードで最大20倍の性能向上が達成され、同等のハードウェアを備えたスケールアウトクラスターより1.6倍〜5倍の高速化が実現される。

ABSTRACT

Spark is an in-memory analytics platform that targets commodity server environments today. It relies on the Hadoop Distributed File System (HDFS) to persist intermediate checkpoint states and final processing results. In Spark, immutable data are used for storing data updates in each iteration, making it inefficient for long running, iterative workloads. A non-deterministic garbage collector further worsens this problem. Sparkle is a library that optimizes memory usage in Spark. It exploits large shared memory to achieve better data shuffling and intermediate storage. Sparkle replaces the current TCP/IP-based shuffle with a shared memory approach and proposes an off-heap memory store for efficient updates. We performed a series of experiments on scale-out clusters and scale-up machines. The optimized shuffle engine leveraging shared memory provides 1.3x to 6x faster performance relative to Vanilla Spark. The off-heap memory store along with the shared-memory shuffle engine provides more than 20x performance increase on a probabilistic graph processing workload that uses a large-scale real-world hyperlink graph. While Sparkle benefits at most from running on large memory machines, it also achieves 1.6x to 5x performance improvements over scale out cluster with equivalent hardware setting.

研究の動機と目的

  • 大容量メモリのスケールアップシステムで実行されるSparkにおけるパフォーマンスボトルネックを解消すること。特に、従来のTCPベースのシャッフルとJVMヒープ管理の非効率性に起因するものである。
  • 機械学習やグラフ解析などの反復的ワークロードにおける、不変RDDと頻繁なデータシャッフルによって引き起こされるガーベジコレクションの負荷を軽減すること。
  • スケールアップシステムに備わるグローバル共有メモリを活用し、ネットワークスタックのオーバーヘッドを排除し、タスク間での低遅延・高スループットなデータ通信を実現すること。
  • オフヘーブメモリストアを導入することで、メモリ集約的かつ反復的なデータ分析のメモリ効率とスケーラビリティを向上させ、直接的・インプレースでの更新を可能とすること。
  • Sparkが適切に最適化された場合、スケールアップアーキテクチャが通信集約的・メモリ集約的なワークロードにおいてスケールアウトクラスターより優れた性能を発揮できることを実証すること。

提案手法

  • JVMオブジェクトのオーバーヘッドなしに、ワーカープロセスがネイティブなグローバル共有メモリを直接アクセス・管理できる共有メモリ管理方式とアロケータを設計する。
  • TCP/IPベースのデータ転送を置き換える共有メモリシャッフルエンジンを実装し、シリアル化・デシリアライズ・コピーコストを排除する。
  • オフヘーブメモリストアを導入し、信念ベクトルやメッセージなどのデータ構造をネイティブメモリに直接キャッシュ・更新可能とすることで、インプレース更新を可能とし、GCの負荷を低減する。
  • グローバルメモリ可視性を活用して複数のシャッフルステージを1つに統合することで、グラフ処理の反復オーバーヘッドを削減する。
  • メッセージ集約などのパフォーマンスが重要なカーネルをScalaからC++に移行し、計算を高速化する。
  • オフヘーブストアに定期的なチェックポイントを実装することでフェイルセーフを実現し、パフォーマンスへの影響は最小限(最悪ケースで約8%のオーバーヘッド)に抑える。

実験結果

リサーチクエスチョン

  • RQ1大容量メモリのスケールアップシステムにおいて、Sparkのシャッフル遅延をTCP/IPと比較して共有メモリ通信が著しく低減できるか?
  • RQ2オフヘーブメモリストアは、反復的Sparkワークロードにおけるガーベジコレクタの負荷をどの程度低減し、パフォーマンスを向上させられるか?
  • RQ3Sparkleのアーキテクチャは、スケールアップとスケールアウトの両構成において、オリジナルSparkと比較してパフォーマンスとメモリ効率でどのように差がつくか?
  • RQ4共有メモリシャッフルとオフヘーブストレージは、信念伝搬のような大規模グラフアナリティクスワークロードにどのような影響を与えるか?
  • RQ5オフヘーブストアにフェイルセーフメカニズムを効率的に統合できるか?また、顕著なパフォーマンスペナルティを伴わないか?

主な発見

  • 共有メモリシャッフルエンジン単体でも、オリジナルSparkに比べてスケールアップマシン上で1.3倍〜6倍のパフォーマンス向上が達成された。
  • 共有メモリシャッフルとオフヘーブメモリストアの併用により、実世界のハイパーリンクグラフを用いた大規模信念伝搬ワークロードで20倍以上の高速化が達成された。
  • Sparkleは、同等のハードウェアを備えたスケールアウトクラスターより1.6倍〜5倍のパフォーマンス向上を達成し、最適化された場合にスケールアップアーキテクチャの優位性を示した。
  • メモリ使用量が著しく削減された:同じワークロードにおいて、Sparkleはヒープキャッシュなしで144 GBのオフヘーブメモリを使用したが、オリジナルSparkでは700 GB以上を要した。
  • グローバルメモリアクセスにより2つのシャッフルステージを1つに統合したことで、信念伝搬ワークロードの1反復あたりの実行時間が13秒から9秒に短縮された。
  • チェックポイントによるフェイルセーフ実装は、最悪ケースで約8%の実行時間オーバーヘッドにとどまり、Sparkleのフェイルセーフ設計の効率性が裏付けられた。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。