4

見つけた関連ドキュメントを読みましたが、まだ疑問があります。

私が読んだもの

http://wiki.apache.org/cassandra/Operations#Moving_nodesから

クラスターにノードを追加すると、リングのバランスが崩れます。完璧なバランスを得る唯一の方法は、ノードごとに新しいトークンを計算し、nodetool move コマンドを使用して手動で各ノードに割り当てることです。

およびhttp://www.datastax.com/docs/1.1/operations/cluster_management#adding-capacity-to-an-existing-clusterから

不均一な数のノードによって容量を増やす必要がある場合は、クラスター全体のトークンを再計算してから、nodetool move を使用して新しいトークンを既存のノードに割り当てる必要があります。すべてのノードが新しいトークンの割り当てで再起動されたら、nodetool クリーンアップを実行して、すべてのノードで未使用のキーを削除します

しかし、これらの順序については明確ではありません。

次のシナリオでそれを行う方法を説明できますか?

  • Cassandra 1.1.9 を使用しているため、仮想ノードは使用されていません。
  • 5 つのノードを持つクラスター リングがあり、それぞれが 20% を所有しています
  • 彼らのトークンは
    • 0
    • 34028236692093846346337460743176821145
    • 68056473384187692692674921486353642291
    • 102084710076281539039012382229530463436
    • 136112946768375385385349842972707284582

ノードを 2 つ追加したいと考えています。

どのような手順に従う必要がありますか? cassandra をインストールして構成し、元の 5 をシードとして使用し、新しいトークンを計算する必要があることはわかっていますが、どの順序で を使用してデータを移動する必要がありますnodetool moveか? 一つ一つですか?
最初のデータを移動すると、データはどうなりますか? いつでも利用できますか?
元の 5 つのノードを新しいトークンに移動する前に、2 つの新しいノードを開始する必要がありますか?

ステップバイステップガイドが理想的です。

バージョン1.2より前に行う必要があることに注意してください

4

2 に答える 2

4

新しいトークンは

  • 0
  • 24305883351495604533098186245126300818
  • 48611766702991209066196372490252601636
  • 72917650054486813599294558735378902454
  • 97223533405982418132392744980505203272
  • 121529416757478022665490931225631504090
  • 145835300108973627198589117470757804908

2^127/7 * {0-7} を使用して計算されます。

どのような手順に従う必要がありますか? nodetool move を使用してデータを移動する順序を教えてください。

あなたがすべき

  1. 48611766702991209066196372490252601636 の 1 つのノードでのブートストラップ
  2. 121529416757478022665490931225631504090 で他のノードをブートストラップします。
  3. 34028236692093846346337460743176821145 を 24305883351495604533098186245126300818 に移動
  4. 68056473384187692692674921486353642291 を 72917650054486813599294558735378902454 に移動
  5. 102084710076281539039012382229530463436 を 97223533405982418132392744980505203272 に移動
  6. 136112946768375385385349842972707284582 を 145835300108973627198589117470757804908 に移動

(転送されるデータの量を最小限に抑えようとしました - 最適ではないかもしれませんが、おそらくすでに持っているデータの不均衡を考えると、ほとんど違いはありません。)

一つ一つですか?

1 つのノードを 1 回ブートストラップし、一度に 1 つのトークンを移動する必要があります。これにより、データのストリーミング中にクラスターに過剰な負荷がかかることを回避できます。

最初のデータを移動すると、データはどうなりますか? いつでも利用できますか?

移動中もデータは完全に利用可能です。ノードは古い範囲と新しい範囲の読み取りと書き込みに参加するため、移動中に読み取りと書き込みを行うことができます。

元の 5 つのノードを新しいトークンに移動する前に、2 つの新しいノードを開始する必要がありますか?

クラスタ内により多くのノードを配置することを常にお勧めします。最初に移動した場合、他のノードの 2 倍のデータを持つノードがいくつかあることになります。

于 2013-03-18T21:02:16.010 に答える
0

Cassandra 1.2 以降では、新しい vnode (ノードごとに複数のシード) 機能により、ノードを追加するときにクラスターのバランスを保つことが非常に簡単になりました。Cassandra がクラスターのバランスを自動的に調整するようになりました。以前のバージョンからアップグレードする場合は、自分で vnode 機能を有効にする必要があります

于 2013-07-11T20:43:03.597 に答える