このトピックでは、ZooKeeper に関するよくある質問への回答を提供します。
- ZooKeeper サービスが不安定で予期せず再起動する場合はどうすればよいですか?
- ZooKeeper のデータディレクトリから新しいデータディレクトリにデータをスムーズに移行するにはどうすればよいですか?
ZooKeeper サービスが不安定で予期せず再起動する場合はどうすればよいですか?
ZooKeeper サービスは、さまざまな原因で不安定になる可能性があります。最も一般的な原因は、ZooKeeper ノード(znode)の数またはスナップショットのサイズが過度に大きいことです。 ZooKeeper はメモリを使用してすべての znode を維持し、znode 間でデータを同期します。 znode の数またはスナップショットのサイズが過度に大きい場合、サービスは不安定になります。 ZooKeeper は分散調整サービスであり、ファイルシステムとして使用することはできません。 znode の数を 100,000 未満、各スナップショットのサイズを 800 MB 未満に保つことをお勧めします。
- クラスター内の znode の数を表示するには、E-MapReduce(EMR)コンソールのクラスター詳細ページの [監視] タブに移動します。
- スナップショットのサイズを表示するには、次の手順を実行します。
- ZooKeeper サービスページの [構成] タブで、[datadir] パラメーターを検索し、その値を取得します。この値は、ZooKeeper のデータディレクトリを示します。
- 次のコマンドを実行して、データディレクトリ内のスナップショットのサイズを表示します。
ls -lrt /mnt/disk1/zookeeper/data/version-2/snapshot*znode の数またはスナップショットのサイズが過度に大きい場合は、znode の分布を確認します。次に、znode の分布に基づいて、ZooKeeper を過度に使用する上位層アプリケーションを停止します。
ZooKeeper のデータディレクトリから新しいデータディレクトリにデータをスムーズに移行するにはどうすればよいですか?
ディスク容量の不足やディスクパフォーマンスの低下などの問題により、ZooKeeper のデータディレクトリを新しいディレクトリに変更する場合は、ZooKeeper サービスを中断することなくスムーズなデータ移行を実現するために、クラスター内の各ノードで次の手順を実行します。
説明 次の例では、ZooKeeper のデータディレクトリを /mnt/disk1/zookeeper から /mnt/disk2/zookeeper に変更する必要があります。クラスターでは、master-1-2 ノードがリーダーであり、master-1-1 ノードと master-1-3 ノードがフォロワーです。データ移行中は、フォロワーで操作を実行してから、リーダーで操作を実行することをお勧めします。
- データディレクトリを変更し、構成を保存します。
- ZooKeeper サービスページの [構成] タブで、[datadir] パラメーターを検索し、このパラメーターの値を /mnt/disk2/zookeeper に変更します。
- [構成] タブの下部にある [保存] をクリックします。
- [保存] ダイアログボックスで、[実行理由] パラメーターを構成し、[保存] をクリックします。
- クライアント構成をデプロイします。
- ZooKeeper サービスページの [構成] タブの右上隅にある [クライアント構成のデプロイ] をクリックします。
- 表示されるダイアログボックスで、[実行理由] パラメーターを構成し、[OK] をクリックします。
- [確認] メッセージで、[OK] をクリックします。
- オプション:新しいデータディレクトリが指定されていることを確認します。
- SSH モードで EMR クラスターにログオンします。詳細については、「クラスターへのログオン」をご参照ください。
- 次のコマンドを実行して、データディレクトリzoo.cfg 構成ファイルの
cat /etc/emr/zookeeper-conf/zoo.cfg返された結果は、ZooKeeper のデータディレクトリが新しいディレクトリに変更されたことを示しています。
パラメーターの値を表示します。
- master-1-1 ノードを停止します。
- ZooKeeper サービスページの [ステータス] タブで、master-1-1 ノードを見つけて、[アクション] 列の [停止] をクリックします。
- 表示されるダイアログボックスで、[実行理由] パラメーターを構成し、[OK] をクリックします。
- [確認] メッセージで、[OK] をクリックします。
- データディレクトリを変更します。
- SSH モードで EMR クラスターのマスターノードにログオンします。詳細については、「クラスターへのログオン」をご参照ください。
- 次のコマンドを実行して、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 ノードを再起動します。
- ZooKeeper サービスページの [ステータス] タブで、master-1-1 ノードを見つけて、[アクション] 列の [開始] をクリックします。
- 表示されるダイアログボックスで、[実行理由] パラメーターを構成し、[OK] をクリックします。
- [確認] メッセージで、[OK] をクリックします。
master-1-1 ノードの [ヘルスステータス] パラメーターの値が [正常] になるまで、ページを更新します。
- master-1-3 ノードにログオンし、手順 4 から 手順 6 を繰り返します。
- master-1-2 ノードにログオンし、手順 4 から 手順 6 を繰り返します。 すべてのノードの [ヘルスステータス] パラメーターの値が [正常] になると、データは新しいデータディレクトリに移行されます。説明 master-1-2 ノードは元のリーダーでした。 [アクション] 列でノードの [停止] をクリックすると、ノードはフォロワーになります。 master-1-1 ノードまたは master-1-3 ノードがリーダーになります。