HBaseのZookeeper構成を説明するときにこれに遭遇しましたが、この用語に慣れていません。「N」は、HBaseクラスター内のノードの数と関係がありますか?または、Zookeeperクラスターで使用する必要があるノードの数は?
2 に答える
2f + 1は、必要な信頼性/可用性のレベルを指します。一般に、パフォーマンスとは関係ありません。
ZooKeeperアンサンブル(サービングクラスター)は、変更ごとに「投票」する1つ以上のサーバーで構成されます。元のサーバーの大部分は、変更が受け入れられる前に変更を「承認」する必要があります。クライアント(この場合はhbase)はアンサンブルに接続し、それを使用して調整します。アンサンブルがアップしている場合、クライアントはこれを実行できます。アンサンブルがダウンしている場合、hbaseはサービスを使用できません。
アンサンブルに3台のサーバー(f = 1)があるとします。一方が失敗しても、サービスはまだ稼働しています(2台が過半数です)。ただし、2番目のサーバーに障害が発生すると、サービスがダウンします。
アンサンブルに5台のサーバー(f = 2)があるとします。この場合、2台のサーバーに障害が発生する可能性があり(3台が過半数)、サービスは引き続き稼働しています。
通常、3台のサーバーで十分です。ただし、オンラインの本番サービス環境では、5をお勧めします。なぜですか。定期メンテナンスのために1台のサーバーを停止するとします。サーバーが5つある場合は、残りのアクティブなサーバーの1つに予期しない障害が発生した場合でも、稼働状態を維持できます。
では、101台のサーバーを用意してみませんか?--TANSTAAFL。こちらのグラフをご覧ください。ZKはクォーラムベースのサービスです。サーバーの数が増えると、書き込みパフォーマンスは実際に低下します。quroumプロセス(投票)に参加するには、より多くのサーバーが必要です。その結果、書き込み操作/秒が減少します。(ただし、読み取りは影響を受けません)。
n
システムで発生する可能性があるが、少なくとも大多数のノードで機能できる障害の数を指します。2つの例:
n = 1
-合計2n+1 = 3
ノードのうち1つのノードで障害が発生する可能性があります
n = 2
-合計2n+1 = 5
ノードのうち2つのノードで障害が発生する可能性があります
等々!