[論文レビュー] Partial Key Grouping: Load-Balanced Partitioning of Distributed Streams
本論文は、キー分割とローカル負荷推定を組み合わせることで、分散ストリーム処理に「2つの選択肢の力」の原則を適用する、新しいストリームパーティショニング方式であるPartial Key Grouping (pkg)を提案する。pkgはデータスケューに起因する負荷の偏りに対し、ほぼ完璧な負荷分散を達成し、実際のStormクラスタ上での評価で、不均衡を数個のオーダー単位で低減し、スループットを最大175%向上、遅延を最大45%削減する。Apache Storm v0.10への統合が完了している。
We study the problem of load balancing in distributed stream processing engines, which is exacerbated in the presence of skew. We introduce Partial Key Grouping (PKG), a new stream partitioning scheme that adapts the classical "power of two choices" to a distributed streaming setting by leveraging two novel techniques: key splitting and local load estimation. In so doing, it achieves better load balancing than key grouping while being more scalable than shuffle grouping. We test PKG on several large datasets, both real-world and synthetic. Compared to standard hashing, PKG reduces the load imbalance by up to several orders of magnitude, and often achieves nearly-perfect load balance. This result translates into an improvement of up to 175% in throughput and up to 45% in latency when deployed on a real Storm cluster. PKG has been integrated in Apache Storm v0.10.
研究の動機と目的
- 実世界のワークロードにおけるキー分布の偏りによって引き起こされる分散ストリーム処理エンジン(DSPEs)の負荷の不均衡を解消すること。
- キーグルーピング(単一選択ハッシュ方式に起因する問題を抱える)とシャッフルグルーピング(キーの意味論を欠き、ステートフル処理におけるメモリ使用量を増加させる)を改善する、スケーラブルで分散型のパーティショニング方式を設計すること。
- グローバルな調整や個々のキーの状態追跡なしに、実用的な負荷分散を実現し、低オーバーヘッドと高スループットを確保すること。
- ローカル負荷推定とキー分割が、ストリーミングで分散環境においてほぼ最適な負荷分散を達成できるかを評価すること。
提案手法
- 従来のキーグルーピングが1キー1処理要素インスタンス(PEI)に厳密に制限するのに対し、各キーが2つの候補PEIで処理可能であることを許容する、新しいストリームパーティショニング戦略「Partial Key Grouping (pkg)」を導入する。
- 同じキーのメッセージを2つのランダムに選択されたPEIに分散することで、キー分割を実装し、協調制御やルーティングテーブルの維持を必要とせずに「2つの選択肢の力」を活用できるようにする。
- 各ソースが下流のPEIの負荷を独立して監視するローカル負荷推定を採用し、グローバルな負荷知識を必要とせず、協調コストを低減する。
- 「2つの選択肢の力」のパラダイムを適用:各キーに対して、2つのランダムに選ばれたPEIのうち、負荷が低い方を選択し、ローカル推定値を根拠にルーティングを決定する。
- Apache Stormにデプロイした際、コードオーバーヘッドを最小限に抑え、20行未満のコードと1つの関数で実装可能である。
- レプリカ割り当てにランダム選択メカニズムを採用し、安定性を向上させるために一貫性ハッシュを組み合わせられるが、メモリ使用量と協調コストを低く保ったまま運用可能である。
実験結果
リサーチクエスチョン
- RQ1グローバルな調整なしに、分散型ストリーミング環境に「2つの選択肢の力」の原則を効果的に適用できるか?
- RQ2キー分割とローカル負荷推定が、キーのスケューが顕著な状況下でも、ほぼ最適な負荷分散を達成できるか?
- RQ3ステートフルストリーム処理におけるキーグルーピングの意味論を保ちながら、良好な負荷分散を維持できるか?
- RQ4ローカル負荷推定は、グローバルな負荷知識に比べて、負荷分散性能にどの程度差が出るか?
- RQ5ストリームパーティショニング方式において、メモリ使用量、協調コスト、負荷分散の間にはどのようなトレードオフがあるか?
主な発見
- Partial Key Groupingは、標準的なハッシュベースのキーグルーピングと比較して、負荷の不均衡を最大数個のオーダー単位で低減する。
- pkgは、スケューの強いワークロード下で実際のStormクラスタにデプロイした際、スループットを最大175%向上させ、遅延を最大45%削減する。
- ローカル負荷推定は、グローバルな負荷オラクルとほぼ同等の性能を示し、分散システムにおいて実用的でスケーラブルな代替手段である。
- キー分割により、協調制御や個々のキーの状態追跡を必要とせず、「2つの選択肢の力」を活用できるようになり、スケーラビリティが著しく向上する。
- pkgは、最小限の協調コストでPEI間の負荷を効果的にバランスさせ、実際の運用においてもほぼ完璧な負荷分散を達成する。
- 本方式はApache Storm v0.10に正常に統合され、実用性とプロダクション環境での運用可能性が裏付けられた。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。