# HDFSへのDgraphデータベースの移動

Dgraphデータベースが現在、NFSに格納されている場合は、これらをHDFSに移動できます。

注意: この手順はMapRでサポートされており、MapRはHDFSのかわりにMapR-FSを使用します。わかりやすくするために、このドキュメントではHDFSだけに言及していますが、特に指定していないかぎり、すべての情報はMapR-FSにも適用されます。
HDFSは分散ファイル・システムのため、ここにデータベースを格納するとDgraphの可用性が高くなります。また、データベースが格納できるデータ量も増えます。

データベースがHDFSに格納されている場合、DgraphはHDFS DataNodeで実行される必要があります。現在、DataNodeにインストールされていない場合は、データベースを移動するときにバイナリも移動する必要があります。

重要: DataNodeサービスはDgraphノードで実行される唯一のHadoopサービスである必要があります。特に、DgraphとSparkはどちらも多くのリソースを必要とするため、同じ場所に配置しないでください。Sparkや他のHadoopサービスを実行するDgraphをホストする必要がある場合は、十分なリソースへのアクセスを確保できるようにcgroupを使用します。詳細は、「Dgraphのcgroupの設定」を参照してください。

HDFSへDgraphデータベースを移動するには、次の手順を実行します。

1. 管理サーバー上で、$BDD_HOME/BDD_manager/binに移動し、BDDを停止します。

       ./bdd-admin.sh stop [-t <minutes>]

2. Dgraphデータベースを現在の場所からHDFSの新しい場所にコピーします。
   `bdd`ユーザーは新しい場所への読取り権限と書込み権限を持つ必要があります。
   MapRを保有している場合は、ボリュームとともに新しい場所にマウントし、`bdd`ユーザーがスナップショットを作成、削除できる権限を持つ必要があります。
   HDFS Data at Rest暗号化を有効にした場合は、新しい場所は暗号化ゾーンである必要があります。
3. Dgraphが現在、HDFS DataNodeにインストールされていない場合、移動先にするHadoopクラスタ内の1つ以上のノードを選択します。
   選択したノードに他のBDDコンポーネントが現在、インストールされている場合は、それぞれのノードに次のディレクトリがあることを確認し、ないディレクトリがあれば、それをコピーします。
   - $BDD_HOME/common/edp
   - $BDD_HOME/dataprocessing
   - $BDD_HOME/dgraph
   - $BDD_HOME/logs/edp
   選択したノードにどのBDDコンポーネントもインストールされていない場合は、次の手順を実行します。
   1. 各ノードに新しい`$BDD_HOME`ディレクトリを作成します。権限は755とし、所有者は`bdd`ユーザーとする必要があります。
   2. 次のディレクトリを既存のDgraphノードから新しい各ノードにコピーします。
      - $BDD_HOME/BDD_manager
      - $BDD_HOME/common
      - $BDD_HOME/dataprocessing
      - $BDD_HOME/dgraph
      - $BDD_HOME/logs
      - $BDD_HOME/uninstall
      - $BDD_HOME/version.txt
   3. $BDD_HOMEを指すシンボリック・リンク$ORACLE_HOME/BDDを作成します。
   4. 任意で、不要になった/dgraphディレクトリを古いDgraphノードから削除します。
      他のBDDディレクトリはまだ使用する可能性があるので、残しておいてください。
4. HDFSにあるデータベースにDgraphがアクセスできるようにするには、すべてのDgraphノードにHDFS NFS Gatewayサービス(MapRではMapR NFSと呼びます)をインストールします。
   手順については、Hadoopディストリビューションのドキュメントを参照してください。
5. MapRを保有している場合は、MapR-FSをローカル・マウント・ポイント$BDD_HOME/dgraph/hdfs_rootにマウントします。
   これは、NFSマウント・ポイントを各Dgraphノード上の/etc/fstabに追加することで実行できます。これにより、システムが起動したときにMapR-FSが自動的にマウントされるようになります。これは、BDDをアンインストールする場合は手動で削除する必要がありますので、注意してください。
6. Sparkまたはその他のHadoopプロセス(HDFS DataNodeプロセスに加えて)と同じノードでDgraphをホストする必要がある場合は、HadoopとDgraphが必要するリソースを切り分けるためにcgroupを作成します。
   手順については、「Dgraphのcgroupの設定」を参照してください。
7. パフォーマンスを最適化するためには、HDFSでShort-Circuit Readを構成します。
   これにより、DgraphはHDFS DataNodeのネットワーク・ソケットを使用してデータを転送する必要がなくなり、ローカル・ファイルに直接、アクセスできるようになります。手順については、Hadoopディストリビューションのドキュメントを参照してください。
8. ZooKeeperの索引をクリーン・アップします。
9. 管理サーバーで、$BDD_HOME/BDD_manager/conf/bdd.confを新しい場所にコピーします。テキスト・エディタでコピーを開き、次のプロパティを更新します。

   プロパティ | 説明
   --- | ---
   `DGRAPH_INDEX_DIR` | HDFSのDgraphデータベース・ディレクトリの新しい場所の絶対パス。 MapRを保有している場合は、ボリュームとしてこの場所にマウントし、`bdd`ユーザーがスナップショットを作成、削除できる権限を持つ必要があります。 HDFS Data at Rest暗号化を有効にした場合は、この場所は暗号化ゾーンである必要があります。
   `DGRAPH_ SERVERS` | 新しいDgraphノードのFQDNのカンマ区切りのリスト。すべてがHDFS DataNodeである必要があります。
   `DGRAPH_ THREADS` | Dgraphの起動に使用されるスレッドの数。この値は、Dgraphノード上のCPUコアの数から、新しいDgraphノード上で実行されているHDFSおよび他のHadoopサービスの実行に必要な数を引いたものになります。
   `DGRAPH_CACHE` | Dgraphキャッシュのサイズ。これはマシンのRAMの50%か、または空き容量合計のいずれか大きな方になります。
   `DGRAPH_USE_ MOUNT_HDFS` | 起動時にDgraphがHDFSをマウントするかどうかを決定します。これを`TRUE`に設定します。
   `DGRAPH_HDFS_ MOUNT_DIR` | DgraphがHDFSのrootディレクトリをマウントするローカル・ディレクトリの絶対パス。この場所が存在しており、空である必要があります。また、`bdd`ユーザーには読取り、書込み、実行権限が必要です。 デフォルトの場所である$BDD_HOME/dgraph/hdfs_rootの使用をお薦めします。これはインストーラによって作成されたディレクトリで、これらの要件を満たしています。
   `KERBEROS_ TICKET_ REFRESH_ INTERVAL` | Kerberosを有効にしている場合にのみ、必要です。DgraphのKerberosチケットがリフレッシュされる間隔(分数)。たとえば、60に設定すると、Dgraphのチケットは60分ごと、つまり1時間ごとにリフレッシュされます。
   `KERBEROS_ TICKET_ LIFETIME` | Kerberosを有効にしている場合にのみ、必要です。DgraphのKerberosチケットが有効な期間の長さ。これは、数字に続き、サポートされている時間単位を付けて指定する必要があります。サポートされている時間単位は、`s`、`m`、`h`または`d`です。たとえば、`10h` (10時間)または`10m` (10分)などです。
   `DGRAPH_ENABLE_CGROUP` | Dgraphにcgroupを設定する場合にのみ必要です。Dgraphのcgroupを作成した場合は、これを`TRUE`に設定する必要があります。
   `DGRAPH_CGROUP_NAME` | Dgraphにcgroupを設定する場合にのみ必要です。Dgraphを制御するcgroupの名前。
   `NFS_GATEWAY_ SERVERS` | NFS Gatewayを使用している場合にのみ必要です。NFS Gatewayサービスを実行しているノードのFQDNのカンマ区切りのリスト。これにはすべてのDgraphノードが含まれます。
   `DGRAPH_USE_ NFS_MOUNT` | NFS Gatewayを使用している場合は、このプロパティを`TRUE`に設定します。

10. 構成変更を残りのクラスタにも伝播するには、$BDD_HOME/BDD_manager/binに移動し、次を実行します。

        ./bdd-admin.sh publish-config <path>

    ここで、`<path>`はbdd.confの更新したコピーの絶対パスです。
11. クラスタを起動します。

        ./bdd-admin.sh start