ZooKeeperのクォータのガイド
デプロイメントと管理に関するガイド
クォータ
ZooKeeperには名前空間クォータとバイトクォータがあります。 ZooKeeperMainクラスを使用してクォータを設定できます。ZooKeeperは、ユーザーが割り当てられたクォータを超えると「WARN」メッセージを出力します。メッセージはZooKeeperのログに出力されます。
注意: 名前空間クォータは、パス以下の子の数を制限する数クォータです(それ自体を含む)。
$ bin/zkCli.sh -server host:port**
上のコマンドでは、クォータを使用するコマンドラインオプションが表示されます。
クォータの設定
- 
setquotaを使用して、ZooKeeperノードにクォータを設定できます。-n(名前空間/数) と-b(バイト数/データ長) でクォータを設定するオプションがあります。
- 
ZooKeeperのクォータは、/zookeeper/quotaのZooKeeper自体に格納されます。他の人がクォータを変更できないようにするには、ユーザーは/zookeeper/quotaのACLを設定して、管理者だけが読み書きできるようにします。 
- 
指定したパスにクォータが存在しない場合は、クォータを作成します。存在する場合は、クォータを更新します。 
- 
ユーザーが設定するクォータのスコープは、指定したパス以下のすべてのノードです(それ自体を含む)。 
- 
現在のディレクトリ/階層構造のクォータの計算を簡略化するため、完全なツリーパス(ルートノードからリーフノードまで)には1つのクォータのみ設定できます。親ノードまたは子のノードにすでにクォータが設定されているパスにクォータを設定する場合、 setquotaは拒否し、特定の親パスまたは子パスを通知します。ユーザーは状況に応じてクォータの割り当てを調整できます(クォータの削除/移動アップ/移動ダウン)。
- 
Chrootと組み合わせると、クォータはさまざまなアプリケーション間でより効果的に隔離されます。例えば # Chroot is: 192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181/apps/app1 setquota -n 100000 /apps/app1
- 
ユーザーは、/zookeeper/quota以下のパスのクォータを設定できません 
- 
クォータは、ソフトクォータとハードクォータをサポートしています。ソフトクォータは、クォータを超えると警告情報を記録しますが、ハードクォータは QuotaExceededExceptionも発生します。同じパスにソフトクォータとハードクォータを設定する場合は、ハードクォータが優先されます。
クォータのリスト
listquotaを使用して、ZooKeeperノードのクォータをリストできます。
クォータの削除
delquotaを使用して、ZooKeeperノードのクォータを削除できます。
