ZooKeeper サービスの安定性、接続数制限、およびデータディレクトリの移行に関する一般的な質問です。
サービスの不安定または予期しない再起動
不安定になる最も一般的な原因は、znode 数が多いことやスナップショットのサイズが大きいことです。ZooKeeper はすべての znode をメモリ上に保持し、ノード間でデータを同期するため、znode やスナップショットが過剰になると安定性が低下します。ベストプラクティスとして、znode 数を 100,000 未満、スナップショットのサイズを 800 MB 未満に保ってください。
- E-MapReduce コンソールの Monitoring タブで、ご利用の ZooKeeper クラスターの znode 数を確認できます。
- スナップショットのサイズを確認します。
- ZooKeeper サービスの Configure タブで、dataDir パラメーターの値を確認し、ZooKeeper のデータディレクトリを取得します。
- ZooKeeper データディレクトリ内のスナップショットのサイズを確認するには、次のコマンドを実行します。
ls -lrt /mnt/disk1/zookeeper/data/version-2/snapshot*znode 数またはスナップショットのサイズが大きすぎる場合は、関連アプリケーションが ZooKeeper を過剰に使用していないか、znode のディストリビューションを調査してください。
データディレクトリの移行
ディスク領域が不足している場合やディスクのパフォーマンスが不十分な場合などに ZooKeeper のデータディレクトリを変更する必要がある場合は、各ノードごとに個別にディレクトリを移行してください。これにより、ZooKeeper サービス全体を停止せずに済みます。
説明 たとえば、このプロシージャではデータディレクトリを /mnt/disk1/zookeeper/data から /mnt/disk2/zookeeper/data に変更します。この例のクラスターでは、master-1-2 ノードがリーダーであり、master-1-1 および master-1-3 ノードがフォロワーです。まずフォロワーノードを移行し、その後リーダーノードを移行します。
- データディレクトリを変更して設定を保存します。
- ZooKeeper サービスの Configure タブで、dataDir パラメーターを検索し、その値を新しいディレクトリ /mnt/disk2/zookeeper/data に変更します。
- Save をクリックします。
- 表示されるダイアログボックスで、実行理由を入力し、Save をクリックします。
- 設定をデプロイします。
- ZooKeeper サービスの Configure タブで、[クライアント構成のデプロイ] をクリックします。
- 表示されるダイアログボックスに実行理由を入力し、OK をクリックします。
- Confirm ダイアログボックスで、OK をクリックします。
- オプション: データディレクトリを確認します。
- SSH でクラスターに接続します。詳細については、「クラスターへの接続」をご参照ください。
- zoo.cfg 設定ファイル内の dataDir パラメーターの値を確認するには、次のコマンドを実行します。
cat /etc/emr/zookeeper-conf/zoo.cfg出力結果から、データディレクトリが更新されていることを確認できます。
- master-1-1 ノードを停止します。
- [ステータス] タブで、master-1-1 ノードの **[操作]** 列にある STOP をクリックします。
- [クラスターアクションの実行] ダイアログボックスで、実行理由を入力し、OK をクリックします。
- Confirm ダイアログボックスで、OK をクリックします。
- ディレクトリを移行します。
- SSH でクラスターに接続します。詳細については、「クラスターへの接続」をご参照ください。
- master-1-1 ノードで次のコマンドを実行し、ディレクトリを移行して必要な権限を設定します。
sudo rm -rf /mnt/disk2/zookeeper && sudo cp -rf /mnt/disk1/zookeeper /mnt/disk2/zookeeper && sudo chown hadoop:hadoop -R /mnt/disk2/zookeeper
- master-1-1 ノードを起動します。
- Status タブで、ZookeeperServer の **[操作]** 列にある START をクリックします。
- 表示されるダイアログボックスに実行理由を入力し、OK をクリックします。
- Confirm ダイアログボックスで、OK をクリックします。
master-1-1 ノードのヘルスステータスが Good に変わるまで、ページを更新してください。
- master-1-3 ノードにログインし、手順 4 ~ 手順 6 を繰り返します。
- master-1-2 ノードにログインし、手順 4 ~ 手順 6 を繰り返します。すべてのノードのヘルスステータスが正常になれば、移行は完了です。説明 master-1-2 ノードは元々リーダーでしたが、停止するとフォロワーになり、他の 2 つのノードのいずれかが新しいリーダーとして選出されます。