Big Data Discoveryクラスタが起動すると、DgraphインスタンスをホストしているノードのサブセットでDgraphプロセスをアクティブ化します。このトピックでは、起動時におけるDgraphノードの動作について説明します。
Dgraphの起動動作は次のとおりです。
- DgraphはDgraphデータベースをマウントせずに起動します。
- マウントしていないデータベースが関与するWebサービス・リクエストをDgraphが受け取ると、Dgraphはデータベースをマウントしようとします。Dgraphはデータベースをデフォルトではフォロワ・ノードとしてマウントし、そのデータベースがDgraph Gatewayによりすでにリーダーに指名されていた場合は、リーダー・ノードとしてマウントします。
- フォロワDgraphではDgraphデータベースをいかなる方法でも変更しません。リーダーDgraphノードがデータベースの更新、マージまたは削除を処理中でも、起動時にアクセス権のあるデータベースのバージョンに基づいて引き続き問合せに回答します。フォロワDgraphノードは更新リクエストを受信しません。更新が完了すると、新しいデータベースへのアクセス権を取得します。
- DgraphはZooKeeperを起動せずに起動できます。この場合、Dgraphは起動してもまだリクエストに対応できない状態です。つまり、Dgraphはデータへのアクセスが関与するすべてのリクエストに対して応答できません。Dgraphは待機を続け、BDDクラスタのいずれかのHadoopノードでZooKeeperが起動するとZooKeeperに接続します。
- DgraphデータベースがHDFSにある場合は、HDFSがダウンしていてもDgraphは起動できます。このシナリオでは、Dgraphは起動していてもまだリクエストに応答できない状態になります。バックグラウンド・スレッドは、HDFSへの接続が成功するまで1秒間に1回、HDFSへの接続を無限に試行します。
Dgraphとは異なり、Dgraph HDFSエージェントはZooKeeperへの接続が成功するまで完全に起動しません。そのため、ZooKeeperが停止するとDgraph HDFSエージェントはハングすると予測されます。このシナリオでDgraph HDFSエージェントが起動済みまたは再起動済の場合、bdd-adminスクリプトのタイムアウト・メカニズムによりハングは正常に終了し、失敗が報告されます。