Skip to main content
QUICK REVIEW

[論文レビュー] MPIgnite: An MPI-Like Language and Prototype Implementation for Apache Spark

Brandon Morris, Anthony Skjellum|arXiv (Cornell University)|Jul 15, 2017
Cloud Computing and Resource Management参考文献 15被引用数 4
ひとこと要約

この論文では、MPIに似た点対点および集合的通信プリミティブをデータ並列フレームワークに統合する、Apache Sparkの新規拡張であるMPIgniteを提案する。Scalaクロージャーを介してメッセージ送信の意味論をSparkに拡張することで、タスク並列とデータ並列プログラミングがシームレスに共存可能となり、Sparkの生産性、障害耐性、スケーラビリティに加え、HPCスケールの通信パターンを実現する。プロトタイプ実装と使用事例を通じてその有効性が実証された。

ABSTRACT

Scale-out parallel processing based on MPI is a 25-year-old standard with at least another decade of preceding history of enabling technologies in the High Performance Computing community. Newer frameworks such as MapReduce, Hadoop, and Spark represent industrial scalable computing solutions that have received broad adoption because of their comparative simplicity of use, applicability to relevant problems, and ability to harness scalable, distributed resources. While MPI provides performance and portability, it lacks in productivity and fault tolerance. Likewise, Spark is a specific example of a current-generation MapReduce and data-parallel computing infrastructure that addresses those goals but in turn lacks peer communication support to allow featherweight, highly scalable peer-to-peer data-parallel code sections. The key contribution of this paper is to demonstrate how to introduce the collective and point-to-point peer communication concepts of MPI into a Spark environment. This is done in order to produce performance-portable, peer-oriented and group-oriented communication services while retaining the essential, desirable properties of Spark. Additional concepts of fault tolerance and productivity are considered. This approach is offered in contrast to adding MapReduce framework as upper-middleware based on a traditional MPI implementation as baseline infrastructure.

研究の動機と目的

  • 従来のHPC(MPI)と現代のデータ並列フレームワーク(Spark)の間のギャップを埋めるために、Sparkにおけるピアツーピア通信および集合的通信を可能にする。
  • MPIの意味論をSparkのタスク並列モデルに統合することで、生産性が高く、障害に強く、スケーラブルな並列プログラミングを実現する。
  • MPI開発者とSparkユーザーの間の相互運用性を支援するため、分散環境におけるメッセージ送信のための馴染みやすく高水準なAPIを提供する。
  • Sparkの既存の障害耐性およびクラウドネイティブインfraストラクチャを活用しながら、HPCワークロードに不可欠な低レベルの通信パターンを追加する。
  • タスク並列とデータ並列の抽象化を組み合わせたハイブリッドプログラミングモデルが、単一のフレームワーク内で効率的に共存できることを実証する。

提案手法

  • MPIを模倣した新しいメッセージ送信APIをApache Sparkフレームワークに追加し、点対点および集合的演算をサポートする。
  • Scalaの高水準クロージャーモデルを用いて通信プリミティブを実装し、表現力があり、合成可能な並列コードを可能にする。
  • メッセージ送信の意味論をSparkのタスク実行モデルに統合し、MPI風の操作を介して独立した並列セクションが通信できるようにする。
  • Sparkの既存スケジューラーおよび障害耐性メカニズムを活用して、信頼性を維持したまま機能を拡張する。
  • 同じアプリケーション内でデータ並列およびタスク並列ワークロードを両立できるようにシステムを設計し、柔軟なアルゴリズム設計を可能にする。
  • Sparkのメモリ内計算およびクラスターリソース管理機能を活用して、パフォーマンスとスケーラビリティを維持する。

実験結果

リサーチクエスチョン

  • RQ1Apache Sparkのようなデータ並列フレームワークにMPIに似た通信パターンを、生産性や障害耐性を損なわずに効果的に統合できるか?
  • RQ2タスク並列通信(例:点対点、集合的演算)を、Sparkのデータ並列モデルと効率的に組み合わせることは可能か?
  • RQ3MPIの意味論をSparkに統合することで、パフォーマンスの移植性および既存のHPCアルゴリズムとの相互運用性がどの程度維持されるか?
  • RQ4高水準言語機能(例:Scalaクロージャー)を用いてクラウド規模の環境でメッセージ送信を実装する際の影響は何か?
  • RQ5Sparkの障害耐性メカニズムをどのように拡張または活用すれば、効率的かつ耐障害性の高いメッセージ送信を実現できるか?

主な発見

  • MPIgniteは、Apache SparkにMPIに似た通信プリミティブを効果的に統合し、単一のフレームワーク内でタスク並列とデータ並列プログラミングを両立可能にした。
  • プロトタイプ実装により、Sparkの実行モデル内においてScalaクロージャーを用いたメッセージ送信操作が効率的に実装可能であることが示された。
  • ハイブリッドモデルにより、独立した狭い並列セクションとデータ並列変換が共存可能となり、複雑な混合ワークロードアプリケーションをサポートできる。
  • 統合によりSparkの障害耐性とスケーラビリティが維持され、大規模クラスタ上での信頼性の高い実行が可能になった。
  • HPC開発者が、最小限のパフォーマンスコストで、最新のクラウド対応プラットフォーム上でMPIベースのアルゴリズムをプロトタイピングするための実用的な道筋が示された。
  • 今後の課題として、効率的なメッセージ送信バックエンドの最適化、サードパーティのMPIライブラリとの統合、メッセージ送信システムの強化された障害耐性の実装が示唆された。

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

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

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

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