Skip to main content
QUICK REVIEW

[論文レビュー] A Fast, Minimal Memory, Consistent Hash Algorithm

John Lamping, Eric Veach|arXiv (Cornell University)|Jun 9, 2014
Caching and Content Delivery参考文献 3被引用数 32
ひとこと要約

この論文では、レジスタ以外に永続ストレージを必要としない最小メモリ使用量、O(log n)時間計算量の一貫性ハッシュアルゴリズム「Jump Consistent Hash」を紹介する。本アルゴリズムは、バケット番号の疑似ランダムウォークを用いることで、動的バケットリサイズ時の負荷分散と最小限のデータ移動を実現し、Kargerらのアルゴリズムよりも速度とメモリ効率に優れ、強いバランス特性を維持する。

ABSTRACT

This paper proposes round-hashing, which is suitable for data storage on distributed servers and for implementing external-memory tables in which each lookup retrieves at most one single block of external memory, using a stash. For data storage, round-hashing is like consistent hashing as it avoids a full rehashing of the keys when new servers are added. Experiments show that the speed to serve requests is tenfold or more than the state of the art. In distributed data storage, this guarantees better throughput for serving requests and, moreover, greatly reduces decision times for which data should move to new servers as rescanning data is much faster.

研究の動機と目的

  • 動的バケットリサイズ時の負荷分散と低データ移動を維持しながら、メモリ使用量を最小限に抑えた一貫性ハッシュアルゴリズムの設計。
  • Karger らの一致ハッシュが、公平な分散のための1シャードあたり数千バイトの高メモリオーバーヘッドを要する問題を解決すること。
  • シャーディングが逐次追加され、永続化が求められる効率的でスケーラブルなデータストレージシステムを可能にすること。
  • 頻繁な再構成が発生する大規模ストレージシステムにおける一貫性ハッシュの計算コストとメモリコストを低減すること。

提案手法

  • アルゴリズムは、0から開始し、ランダム閾値を満たした場合にのみバケットインデックスを進める疑似ランダムウォークを用いる。
  • 各バケットインデックス j に対して、ハッシュから導出されたランダム値を 1/(j+1) と比較して、j にジャンプする確率を保証する。
  • 主な洞察は、ジャンプ条件が64ビットキーと乗算定数(2862933555777941757ULL)に基づき、ビットシフトと浮動小数点除算を経て次のジャンプポイントを計算することにある。
  • 次回のバケットがターゲットのバケット数を超える場合にループを終了し、最後の有効なバケットインデックスを返す。
  • アルゴリズムはC++で5行以内で実装され、整数演算と浮動小数点演算のみを用いる。
  • データストレージシステムではバケットが逐次追加され、削除されないという事実を活用し、より単純で状態なしの設計を実現できる。

実験結果

リサーチクエスチョン

  • RQ1負荷分散とバケットリサイズ時の低データ移動を維持しながら、最小限のメモリ使用量で実現できる一貫性ハッシュアルゴリズムを設計できるか?
  • RQ2キーの再分散確率を数学的に上限付けすることで、バケット間での均等な分散を保証できるか?
  • RQ3事前計算されたデータ構造を避ける一貫性ハッシュアルゴリズムの理論的時間計算量は何か?
  • RQ4実際のメモリキャッシュアクセスパターン下で、状態なしで最小メモリ使用の一致ハッシュアルゴリズムは、既存の手法と比較してどのように性能を発揮するか?
  • RQ5大規模データストレージシステムの本番環境で使用可能なほど、単純かつ効率的な一貫性ハッシュアルゴリズムを設計できるか?

主な発見

  • Jump Consistent Hash は O(log n) 時間計算量を達成し、Karger らの O(n) または O(log n) の変種(高メモリコストを伴う)よりも顕著に高速である。
  • 1000バケットまでで1バケットあたり1000ポイントの場合、Karger らの実装より3〜4倍速く、10万バケットまでで5〜8倍速い。
  • キャッシュ競合が発生する環境でも、Jump Consistent Hash は安定したパフォーマンスを維持するが、Karger の実装はキャッシュミスの影響で急激な性能低下を示す。
  • Karger のアルゴリズムの初期化時間はバケット数の増加に伴い急激に増加し、1バケットあたり1000ポイントで65,536バケットの場合、110秒以上に達するが、Jump Consistent Hash は初期化が不要である。
  • アルゴリズムは数個のレジスタしか使用せず、永続ストレージを一切不要とし、Karger のアプローチがギガバイト規模のメモリ使用を要するのに対し、無視できるレベルにまで削減される。
  • 実験的結果では、1バケットあたり1000ポイントで、標準偏差を用いたキー分布の測定において、Jump Consistent Hash が Karger のアルゴリズムよりも優れた負荷分散を実現している。

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

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

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

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