すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:Raft-RocksDB-Tablestore を使用してメタデータを保存する

最終更新日:Jan 11, 2025

E-MapReduce(EMR)V3.27.0 以降では、Raft-RocksDB-Tablestore を使用して、JindoFS の Namespace Service によって管理されるメタデータを保存できます。 EMR JindoFS クラスタを作成する場合は、3 つのマスターノードを作成し、マスターノードに Raft インスタンスをデプロイします。 Raft インスタンスの各ピアノードは、ローカルの Raft-RocksDB を使用してメタデータを保存します。 Raft インスタンスは、組み込みのディザスタリカバリ機能を提供します。 必要に応じて、ディザスタリカバリのために Tablestore インスタンスにメタデータをバックアップすることもできます。

背景情報

RocksDB は、Raft プロトコルに基づいて 3 つのノード間のデータレプリケーションをサポートしています。 EMR クラスタを Tablestore インスタンスにバインドし、Tablestore インスタンスを JindoFS の Namespace Service の追加ストレージメディアとして使用できます。 EMR は、ローカルの RocksDB から Tablestore インスタンスにメタデータをリアルタイムで非同期的にアップロードします。

次の図は、Namespace Service のための高可用性 Raft-RocksDB-Tablestore のアーキテクチャを示しています。Raft + RocksDB + Tablestore

前提条件

  • オプション:Tablestore インスタンスが作成されます。 高性能インスタンスを使用することをお勧めします。 詳細については、「インスタンスの作成」をご参照ください。
    説明 Tablestore インスタンスによって提供されるトランザクション機能が有効になっています。
  • 3 つのマスターノードを持つ EMR クラスタが作成されます。 詳細については、「クラスタの作成」をご参照ください。 3 Master

ローカルストレージバックエンドとして Raft インスタンスを構成する

  1. SmartData サービスページに移動します。
    1. Alibaba Cloud EMR コンソール にログインします。
    2. 上部のナビゲーションバーで、クラスタが存在するリージョンを選択し、ビジネス要件に基づいてリソースグループを選択します
    3. [クラスタ管理] タブをクリックします。
    4. [クラスタ管理] ページで、クラスタを見つけて、[アクション] 列の [詳細] をクリックします。
    5. 表示されるページの左側のナビゲーションペインで、[クラスタサービス] > [smartdata] を選択します。
  2. すべての SmartData コンポーネントを一時停止します。
    1. SmartData サービスページの右上隅で、[アクション] > [すべてのコンポーネントを停止] を選択します。
    2. [クラスタアクティビティ] ダイアログボックスで、[説明] を指定し、[OK] をクリックします。
    3. [確認] メッセージで、[OK] をクリックします。
  3. ビジネス要件に基づいて Namespace Service パラメータを構成します。
    詳細については、「ブロックストレージモードで JindoFS を使用する」をご参照ください。
  4. SmartData サービスの [namespace] タブに移動します。
    1. 左側のナビゲーションペインで、[クラスタサービス] > [smartdata] を選択します。
    2. [構成] タブをクリックします。
    3. [サービス構成] セクションで、[namespace] タブをクリックします。
  5. [namespace] タブで、次の表に記載されているパラメータを構成します。
    パラメータ説明
    namespace.backend.typeNamespace Service のバックエンドストレージタイプ。 有効な値:
    • rocksdb
    • ots
    • raft

    デフォルト値: rocksdb。 このパラメータを raft に設定します。

    raft
    namespace.backend.raft.initial-confRaft インスタンスがデプロイされている 3 つのマスターノードのアドレス。 値は固定です。emr-header-1:8103:0,emr-header-2:8103:0,emr-header-3:8103:0
    jfs.namespace.server.rpc-addressクライアントが Raft インスタンスにアクセスするために使用される 3 つのマスターノードのアドレス。 値は固定です。emr-header-1:8101,emr-header-2:8101,emr-header-3:8101
    説明 Tablestore をリモートストレージに使用しない場合は、手順 7手順 9 のみを実行します。 Tablestore をリモートストレージに使用する場合手順 6手順 9
  6. オプション:Tablestore インスタンスをリモート非同期ストレージバックエンドとして構成します。
    次の表に示すパラメーターを [namespace] タブで構成します。
    パラメーター説明
    namespace.ots.instanceTablestore インスタンスの名前。emr-jfs
    namespace.ots.accessKeyTablestore インスタンスへのアクセスに使用する AccessKey ID。kkkkkk
    namespace.ots.accessSecretTablestore インスタンスへのアクセスに使用する AccessKey シークレット。XXXXXX
    namespace.ots.endpointTablestore インスタンスのエンドポイント。VPC エンドポイントを使用することをお勧めします。http://emr-jfs.cn-hangzhou.vpc.tablestore.aliyuncs.com
    namespace.backend.raft.async.ots.enabledTablestore への非同期アップロードを有効にするかどうかを指定します。有効な値:
    • true
    • false
    このパラメーターを true に設定します。SmartData サービスの初期化が完了していないことを確認してください。
    説明 初期化が完了している場合、メタデータがローカルの RocksDB に生成されているため、設定は有効になりません。
    true
  7. 構成を保存します。
    1. [サービス構成] セクションの右上隅にある [保存] をクリックします。
    2. [変更の確認] ダイアログボックスで、[説明] を指定し、[構成の自動更新] を有効にします。
    3. [OK] をクリックします。
  8. すべてのSmartDataコンポーネントを起動します。
    1. SmartDataサービスページの右上隅で、[アクション] > [すべてのコンポーネントを起動] を選択します。
    2. [クラスターアクティビティ] ダイアログボックスで、[説明] を指定し、[OK] をクリックします。
    3. [確認] メッセージで、[OK] をクリックします。
  9. SSH モードでクラスターにログオンし、次のコマンドを実行してメタデータの状態を表示します。
    jindo jfs -metaStatus -detail

    返された情報に raft が含まれている場合、構成は有効になります。

Tablestore インスタンスからメタデータを復旧する

重要 Tablestore インスタンスがクラスターのリモート非同期ストレージバックエンドとして構成されていることを確認します。

EMR クラスターのリモート非同期ストレージバックエンドとして Tablestore インスタンスを構成した場合、JindoFS メタデータの完全なレプリカが Tablestore インスタンスに保存されます。 EMR クラスターを停止またはリリースした後、Tablestore インスタンスから新しい EMR クラスターに JindoFS メタデータを復旧できます。 この方法で、新しい EMR クラスターから元のファイルにアクセスできます。

  1. オプション:復旧の準備をします。
    1. 元の EMR クラスターのメタデータ情報を表示します。 メタデータ情報には、ファイルとフォルダーの数が含まれます。
      hadoop fs -count jfs://test/
      次の情報が返されます:
      1596      1482809                 25 jfs://test/
      説明 1596 はフォルダーの数です。 1482809 はファイルの数です。
    2. 元の EMR クラスターで実行されているジョブを停止します。 EMR がクラスターのすべてのメタデータを Tablestore インスタンスに同期するまで、30 ~ 120 秒待つ必要がある場合があります。 次のコマンドを実行して、メタデータの状態を表示します。 コマンド出力に LEADER ノードの _synced=1 が含まれている場合、最新のメタデータは Tablestore インスタンスに同期されます。
      jindo jfs -metaStatus -detail
      View the metadata status
    3. 元の EMR クラスターを停止またはリリースし、Tablestore インスタンスにアクセスしているクラスターがないことを確認します。
  2. EMR クラスターを作成します。
    Tablestore インスタンスと同じリージョンにある EMR クラスターを作成します。 すべての SmartData コンポーネントを一時停止します。 詳細については、「Raft インスタンスをローカルストレージバックエンドとして構成する」をご参照ください。
  3. メタデータ復旧のパラメーターを構成します。
    次の表に示すパラメーターを [namespace] タブで構成します。
    パラメーター説明必須値
    namespace.backend.raft.async.ots.enabledTablestore への非同期アップロードを有効にするかどうかを指定します。 有効な値:
    • true
    • false
    false
    namespace.backend.raft.recovery.modeTablestore からのメタデータ復旧を有効にするかどうかを指定します。 有効な値:
    • true
    • false
    true
  4. 構成を保存します。
    1. サービス構成セクションの右上隅にある [保存] をクリックします。
    2. [変更の確認] ダイアログボックスで、説明を指定し、[構成の自動更新] をオンにします。
    3. [OK] をクリックします。
  5. すべての SmartData コンポーネントを起動します。
    1. SmartData サービスページの右上隅で、[アクション] > [すべてのコンポーネントを起動] を選択します。
    2. [クラスターアクティビティ] ダイアログボックスで、[説明] を指定し、[OK] をクリックします。
    3. [確認] メッセージで、[OK] をクリックします。
  6. 新しい EMR クラスターの SmartData サービスがアクティブ化されると、EMR は Tablestore インスタンスからローカルの Raft-RocksDB にメタデータを自動的に復旧します。 次のコマンドを実行して、復旧の進行状況を表示できます。
    jindo jfs -metaStatus -detail
    LEADER ノードの状態が FINISH の場合、復旧は完了です。次の図を参照してください。View recovery progress
  7. オプション:新しい EMR クラスターのファイルとフォルダーの数が元の EMR クラスターの数と一致するかどうかを確認します。
    • 次のコマンドを実行して、新しい EMR クラスターのファイルとフォルダーの数が元の EMR クラスターの数と一致するかどうかを確認します:
      hadoop fs -count jfs://test/
      次の情報が返されます:
      1596      1482809                 25 jfs://test/
    • 次のコマンドを実行して、ファイルからデータを読み取ることができるかどうかを確認します:
      hadoop fs -cat jfs://test/testfile
    • 次のコマンドを実行して、ファイルディレクトリを表示します:
      hadoop fs -ls jfs://test/
      次の情報が返されます:
      Found 3 items
      drwxrwxr-x   - root   root            0 2020-03-25 14:54 jfs://test/emr-header-1.cluster-50087
      -rw-r-----   1 hadoop hadoop          5 2020-03-25 14:50 jfs://test/haha-12096RANDOM.txt
      -rw-r-----   1 hadoop hadoop         20 2020-03-25 15:07 jfs://test/testfile
    • 次のコマンドを実行して、ファイルを削除できるかどうかを確認します:
      hadoop fs -rm jfs://test/testfile
      次の情報が返されます:
      java.io.IOException: ErrorCode : 25021 , ErrorMsg: Namespace is under recovery mode, and is read-only.
      説明 新しい EMR クラスターは復旧モードであり、読み取り専用です。 ファイルは削除できません。
  8. Tablestore への非同期アップロードを有効にし、Tablestore からの復旧を無効にします。
    次の表に示すパラメーターを [namespace] タブで構成します。
    パラメーター説明必須値
    namespace.backend.raft.async.ots.enabledTablestore への非同期アップロードを有効にするかどうかを指定します。 有効な値:
    • true
    • false
    true
    namespace.backend.raft.recovery.modeTablestore からのメタデータ復旧を有効にするかどうかを指定します。 有効な値:
    • true
    • false
    false
  9. 新しい EMR クラスターを再起動します。
    1. [クラスター管理] タブをクリックします。
    2. [クラスター管理] ページで、クラスターを見つけ、[アクション] 列の [詳細] > [再起動] を選択します。
    3. [クラスターの再起動] ダイアログボックスで、[OK] をクリックします。