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

E-MapReduce:EMR クラスター (X86) の JindoSDK のアップグレードおよびロールバックプロセス

最終更新日:Nov 09, 2025

このトピックでは、X86 アーキテクチャの EMR クラスターで、さまざまなシナリオで JindoSDK をアップグレードするための詳細な手順について説明します。

前提条件

X86 アーキテクチャの EMR クラスターを作成済みであること。詳細については、「クラスターの作成」をご参照ください。

シナリオ 1: 既存のクラスターで JindoSDK をアップグレードする

EMR V3.40.0 以降のマイナーバージョン、または EMR V5.6.0 以降のマイナーバージョンのクラスターを作成済みで、使用中に「JindoData バージョンの既知の問題」で問題が発生した場合、または JindoSDK の新機能を使用する必要がある場合は、次の操作を実行して JindoSDK をアップグレードできます。

重要

JindoSDK を 4.6.8 以前から 4.6.9 以降、または 6.X シリーズのバージョンにアップグレードする場合、JindoCommitter が使用するデフォルトの一時ジョブパスが変更されます。アップグレード中のデータ損失を避けるため、アップグレードの前に、クラスターの [クラスターサービス] ページにログインし、次のいずれかの設定を変更します。

  • [Hadoop-Common] > [設定] > [core-site.xml] に設定項目 fs.jdo.committer.allow.concurrent=false を追加します。

  • Spark > [設定] > [spark-defaults.conf] に設定項目 spark.hadoop.fs.jdo.committer.allow.concurrent=false を追加します。

ゲートウェイノードを含むクラスター内のすべてのノードで JindoSDK がアップグレードされた後、前述のパラメーターを true に設定します。

ステップ 1: ソフトウェアパッケージとアップグレードスクリプトの準備

説明

アップグレード先の JindoSDK バージョンを決定します。

  • OSS/OSS-HDFS への直接アクセス:

    JindoSDK を OSS または OSS-HDFS への直接アクセスにのみ使用する場合、ローカルの Hadoop 依存関係のバージョンが特殊 (2.7 未満など) かどうかを確認します。バージョンが低い場合、追加の互換性処理が必要になることがあります。

  • セミマネージドサービスの使用:

    JindoCache、JindoAuth、JindoFSx などのセミマネージドサービスを使用している場合は、Alibaba Cloud EMR テクニカルサポートチームに連絡して JindoSDK バージョンの互換性を確認し、スムーズなアップグレードプロセスを確保することをお勧めします。

  1. EMR クラスターのマスターノードにログインします。詳細については、「クラスターへのログイン」をご参照ください。

  2. パッチパッケージを emr-user ユーザーのホームディレクトリにダウンロードし、パッケージを解凍します。

    su - emr-user
    cd /home/emr-user/
    wget https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/resources/emr-taihao/jindosdk-patches.tar.gz
    tar zxf jindosdk-patches.tar.gz
  3. JindoSDK のソフトウェアパッケージ jindosdk-{VERSION}.tar.gz を、前のステップで取得した jindosdk-patches ディレクトリにダウンロードします。

    この例では、JindoSDK はバージョン 6.8.2 にアップグレードされます。

    cd jindosdk-patches
    
    wget https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/release/6.8.2/jindosdk-6.8.2-linux.tar.gz
    
    ls -l

    jindosdk-patches ディレクトリのサンプルコンテンツ:

    -rwxrwxr-x 1 emr-user emr-user      2439 May 01 00:00 apply_all.sh
    -rwxrwxr-x 1 emr-user emr-user      7315 May 01 00:00 apply.sh
    -rw-rw-r-- 1 emr-user emr-user        40 May 01 00:00 hosts
    -rw-r----- 1 emr-user emr-user xxxxxxxxx May 01 00:00 jindosdk-6.8.2-linux.tar.gz
    -rwxrwxr-x 1 emr-user emr-user      1112 May 01 00:00 revert_all.sh
    -rwxrwxr-x 1 emr-user emr-user      2042 May 01 00:00 revert.sh

ステップ 2: アップグレードのためのノード情報の設定

  • 手動設定

    1. パッケージ内の hosts ファイルを編集します。

      vim hosts
    2. master-1-1 や core-1-1 など、クラスター内のすべてのノードのホスト名を hosts ファイルに追加します。各行に 1 つのホスト名を入力します。

      サンプルファイルの内容:

      master-1-1
      core-1-1
      core-1-2
  • 自動設定

    次のコマンドを実行して、すべてのノードに関する情報を取得することもできます。hosts ファイルの取得に失敗した場合は、手動で入力する必要があります。

    cat  /usr/local/taihao-executor-all/data/cache/.cluster_context | jq --raw-output '.nodes[].hostname.alias[]' > hosts

ステップ 3: アップグレードの実行

apply_all.sh スクリプトを実行して、JindoSDK を特定のバージョンにアップグレードします。

./apply_all.sh $NEW_JINDOSDK_VERSION  # 指定した $NEW_JINDOSDK_VERSION で apply_all.sh スクリプトを実行し、そのバージョンの JindoSDK にアップグレードします。

たとえば、クラスター内の JindoSDK をバージョン 6.8.2 にアップグレードするには、次のようにします。

./apply_all.sh 6.8.2

返された情報に ### DONE が表示されたら、スクリプトの実行は完了です。

>> updating ...  master-1-1
>>> updating ...  core-1-1
>>> updating ...  core-1-2
### DONE

ステップ 4: クラスター設定の変更 (古いバージョンの EMR OSS Ranger 認証との互換性のため)

EMR OSS Ranger 認証が有効で、JindoSDK を EMR-3.51.2/EMR-5.17.2 以前のバージョンから [6.5.0, 6.7.2] の範囲のバージョンにアップグレードする場合、互換性の問題が発生する可能性があります。JindoSDK をバージョン 6.7.3 以降にアップグレードし、次の操作を実行してクラスター設定を変更することをお勧めします。

  1. HADOOP-COMMON サービスの [設定] ページで、[core-sites.xml] タブをクリックします。

  2. [core-sites.xml] ページで、次の設定項目を検索して変更します。

    パラメーター

    説明

    fs.jdo.plugin.dir

    プラグインの読み込みディレクトリを新しいバージョンの JindoSDK のプラグインパスに変更します。つまり、/opt/apps/RANGER/jindoauth-current/plugins/opt/apps/JINDOSDK/jindosdk-current/plugins に変更します。

ステップ 5: 特別なノードの処理

  1. EMR CLI で作成されたゲートウェイノードのアップグレード。

    • ゲートウェイノードが EMR コンソールで作成された場合、前述の手順で関連する内容がすでにカバーされています。

    • ゲートウェイノードが EMR CLI で作成された場合、これらのノードは独立して作成されるため、手動でアップグレードスクリプトを実行してアップグレードを完了する必要があります。さらに、エラスティックノードが初期化されるときに、スクリプトを使用して事前にアップグレードを完了する必要があります。

  2. Trino、Presto、Impala などのサービスの JindoSDK の置き換え。

    EMR-3.53.0 より前のバージョンおよび EMR-5.19.0 より前のバージョン (含まない) では、Trino、Presto、Impala などのサービスで使用される JindoSDK は、前述の手順では自動的にアップグレードされません。これらのサービスの plugins パスにある JindoSDK JAR パッケージをターゲットバージョンに手動で置き換え、変更を有効にするためにサービスを再起動する必要があります。

ステップ 6: アップグレードの確認

ls -l /opt/apps/JINDOSDK/jindosdk-current/lib

JindoSDK をデフォルトバージョンの 6.2.0 からバージョン 6.8.2 に正常にアップグレードすると、次の情報が返されます。

lrwxrwxrwx 1 emr-user emr-user 64 Apr 12 11:08 jindo-core-6.2.0.jar -> /opt/apps/JINDOSDK/jindosdk-6.8.2-linux/lib/jindo-core-6.8.2.jar
lrwxrwxrwx 1 emr-user emr-user 82 Apr 12 11:08 jindo-core-linux-el7-aarch64-6.2.0.jar -> /opt/apps/JINDOSDK/jindosdk-6.8.2-linux/lib/jindo-core-linux-el7-aarch64-6.8.2.jar
lrwxrwxrwx 1 emr-user emr-user 63 Apr 12 11:08 jindo-sdk-6.2.0.jar -> /opt/apps/JINDOSDK/jindosdk-6.8.2-linux/lib/jindo-sdk-6.8.2.jar
lrwxrwxrwx 1 emr-user emr-user 50 Apr 12 11:08 native -> /opt/apps/JINDOSDK/jindosdk-6.8.2-linux/lib/native
lrwxrwxrwx 1 emr-user emr-user 57 Apr 12 11:08 site-packages -> /opt/apps/JINDOSDK/jindosdk-6.8.2-linux/lib/site-packages

ステップ 7: アップグレード後のサービスの再起動

説明

Spark Streaming や Flink ジョブなど、YARN 上で実行されるジョブについては、ジョブが停止した後に YARN NodeManager でローリングリスタートを実行します。

アップグレードを有効にするには、Hive、Presto、Impala、Flink、Ranger、Spark、Zeppelin などの関連サービスを再起動します。

たとえば、EMR クラスターの Hive サービスページで、右上の [その他>] > [再起動] を選択します。

シナリオ 2: 既存のクラスターのスケールアウトまたは新しいクラスターの作成

クラスターを作成するとき、または既存のクラスターをスケールアウトするときに JindoSDK をアップグレードする場合は、EMR コンソールでブートストラップアクションを追加できます。これにより、JindoSDK を最新バージョンにアップグレードできます。JindoSDK を効率的かつ正確にアップグレードするには、次の操作を実行します。

ステップ 1: ブートストラップアップグレードパッケージの準備

  1. 次のコマンドを実行して、jindosdk-patches.tar.gz および jindosdk-{VERSION}-{PLATFORM}.tar.gz パッケージと bootstrap_jindosdk.sh スクリプトをダウンロードします。

    この例では、JindoSDK はバージョン 6.8.2 にアップグレードされます。

    mkdir jindo-patch
    
    cd jindo-patch
    
    wget https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/resources/emr-taihao/jindosdk-patches.tar.gz
    
    wget https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/release/6.8.2/jindosdk-6.8.2-linux.tar.gz
    
    wget https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/resources/emr-taihao/bootstrap_jindosdk.sh
    
    ls -l

    次の情報が返されます。

    -rw-r----- 1 hadoop hadoop      xxxx May 01 00:00 bootstrap_jindosdk.sh
    -rw-r----- 1 hadoop hadoop xxxxxxxxx May 01 00:00 jindosdk-6.8.2-linux.tar.gz
    -rw-r----- 1 hadoop hadoop      xxxx May 01 00:00 jindosdk-patches.tar.gz
  2. 次のコマンドを実行して、アップグレードパッケージを準備します。

    bash bootstrap_jindosdk.sh -gen $NEW_JINDOSDK_VERSION  # 指定した $NEW_JINDOSDK_VERSION で bootstrap_jindosdk.sh スクリプトを実行し、そのバージョンの JindoSDK にアップグレードします。
    説明
    • 既存のクラスターをスケールアウトするには、-gen オプションを使用して軽量のアップグレードパッケージを生成します。

    • 新しいクラスターを作成するには、-gen-full オプションを使用して完全なコンテンツを含むアップグレードパッケージを生成します。

    たとえば、JindoSDK をバージョン 6.8.2 にアップグレードするには、次のようにします。

    bash bootstrap_jindosdk.sh -gen 6.8.2

    アップグレードパッケージを準備すると、次の情報が返されます。

    Generated patch at /home/emr-user/jindo-patch/jindosdk-bootstrap-patches.tar.gz

    準備が完了し、パッチパッケージ jindosdk-bootstrap-patches.tar.gz が生成されます。

ステップ 2: ブートストラップアップグレードパッケージのアップロード

パッチパッケージとブートストラップスクリプトを Object Storage Service (OSS) にアップロードします。Hadoop コマンドを実行するか、OSSUtils または OSS Browser を使用するか、OSS コンソールで、EMR クラスターのパッチパッケージとスクリプトをアップロードできます。

たとえば、OSS パス oss://<bucket-name>/path/to/bootstrap_jindosdk.sh および oss://<bucket-name>/path/to/jindosdk-bootstrap-patches.tar.gz にアップロードします。

hadoop dfs -mkdir -p oss://<bucket-name>/path/to/patch/

cd /home/hadoop/patch/
hadoop dfs -put jindosdk-bootstrap-patches.tar.gz oss://<bucket-name>/path/to/patch/
hadoop dfs -put bootstrap_jindosdk.sh oss://<bucket-name>/path/to/patch/

hadoop dfs -ls oss://<bucket-name>/path/to/patch/

次の情報が返されます。

Found 2 items
-rw-rw-rw-   1       2634 2022-05-13 14:07 oss://<bucket-name>/.../bootstrap_jindosdk.sh
-rw-rw-rw-   1  597342992 2022-05-13 13:41 oss://<bucket-name>/.../jindosdk-bootstrap-patches.tar.gz

ステップ 3: ブートストラップアクションの追加

EMR コンソールでブートストラップアクションを追加します。詳細については、「ブートストラップアクションの管理」をご参照ください。

次の表に、ブートストラップアクションを追加するために設定できるパラメーターを示します。

パラメーター

説明

名前

追加するブートストラップアクションの名前。

update_jindosdk

スクリプトの場所

スクリプトファイルが配置されている OSS パス。スクリプトパスは oss://**/*.sh 形式である必要があります。

oss:///path/to/patch/bootstrap_jindosdk.sh

パラメーター

ブートストラップアクションスクリプトのパラメーター。このパラメーターは、スクリプトで参照される変数の値を指定するために使用されます。

-bootstrap oss:///path/to/patch/jindosdk-bootstrap-patches.tar.gz

実行範囲

[クラスター] を選択します。

クラスター

実行時間

[コンポーネントの起動後] を選択します。

コンポーネントの起動後

失敗ポリシー

[実行を続行] を選択します。

実行を続行

ステップ 4: 特別なノードの処理

  1. EMR CLI で作成されたゲートウェイノードのアップグレード。

    • ゲートウェイノードが EMR コンソールで作成された場合、前述の手順で関連する内容がすでにカバーされています。

    • ゲートウェイノードが EMR CLI で作成された場合、これらのノードは独立して作成されるため、手動でアップグレードスクリプトを実行してアップグレードを完了する必要があります。さらに、エラスティックノードが初期化されるときに、スクリプトを使用して事前にアップグレードを完了する必要があります。

  2. Trino、Presto、Impala などのサービスの JindoSDK の置き換え。

    EMR-3.53.0 より前のバージョンおよび EMR-5.19.0 より前のバージョン (含まない) では、Trino、Presto、Impala などのサービスで使用される JindoSDK は、前述の手順では自動的にアップグレードされません。これらのサービスの plugins パスにある JindoSDK JAR パッケージを最新バージョンに手動で置き換え、変更を有効にするためにサービスを再起動する必要があります。

ステップ 5: サービスの再起動

アップグレードを有効にするには、関連サービスを再起動します。

  • クラスターを作成した後、Hive、Presto、Impala、Flink、Ranger、Spark、Zeppelin などの関連サービスを再起動します。

  • 既存のクラスターをスケールアウトした後、Hive、Presto、Impala、Flink、Ranger、Spark、Zeppelin などの新しいノードの関連サービスを再起動します。

シナリオ 3: JindoSDK をデフォルトバージョンにロールバックする

EMR V3.40.0 以降のマイナーバージョン、または EMR V5.6.0 以降のマイナーバージョンのクラスターで、JindoSDK のアップグレード中に問題が発生した場合は、次の操作を実行して JindoSDK をデフォルトバージョンにロールバックできます。

ステップ 1: ロールバックスクリプトの準備

  1. EMR クラスターのマスターノードにログインします。詳細については、「クラスターへのログイン」をご参照ください。

  2. ダウンロードしたパッチパッケージを emr-user ユーザーの HOME ディレクトリに保存し、パッケージを解凍します。

    su - emr-user
    cd /home/emr-user/
    wget https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/resources/emr-taihao/jindosdk-patches.tar.gz
    tar zxf jindosdk-patches.tar.gz
    cd jindosdk-patches
    ls -l

    次の情報が返されます。

    -rwxrwxr-x 1 emr-user emr-user      2439 May 01 00:00 apply_all.sh
    -rwxrwxr-x 1 emr-user emr-user      7315 May 01 00:00 apply.sh
    -rw-rw-r-- 1 emr-user emr-user        40 May 01 00:00 hosts
    -rwxrwxr-x 1 emr-user emr-user      1112 May 01 00:00 revert_all.sh
    -rwxrwxr-x 1 emr-user emr-user      2042 May 01 00:00 revert.sh

ステップ 2: ロールバックのためのノード情報の設定

  • 手動設定

    1. パッケージ内の hosts ファイルを編集します。

      vim hosts
    2. master-1-1 や core-1-1 など、クラスター内のすべてのノードのホスト名を hosts ファイルに追加します。各行に 1 つのホスト名を入力します。

      サンプルファイルの内容:

      master-1-1
      core-1-1
      core-1-2
  • 自動設定

    次のコマンドを実行して、すべてのノードに関する情報を取得することもできます。hosts ファイルの取得に失敗した場合は、手動で入力する必要があります。

    cat  /usr/local/taihao-executor-all/data/cache/.cluster_context | jq --raw-output '.nodes[].hostname.alias[]' > hosts

ステップ 3: ロールバックの実行

次のスクリプトを実行して、すべての変更をロールバックします。

./revert_all.sh

返された情報に ### DONE が表示されたら、スクリプトの実行は完了です。

>> updating ...  master-1-1
>>> updating ...  core-1-1
>>> updating ...  core-1-2
### DONE

ステップ 4: ロールバックの確認

ls -l /opt/apps/JINDOSDK/jindosdk-current/lib

JindoSDK を 6.2.0 に正常にロールバックすると、次の情報が返されます。

-rw-r--r-- 1 emr-user emr-user  1253740 Apr 24 17:40 jindo-core-6.2.0.jar
-rw-r--r-- 1 emr-user emr-user 13110547 Apr 24 17:40 jindo-core-linux-el7-aarch64-6.2.0.jar
-rw-r--r-- 1 emr-user emr-user  4432227 Apr 24 17:40 jindo-sdk-6.2.0.jar
drwxr-xr-x 2 emr-user emr-user     4096 Apr 24 17:40 native

ステップ 5: 特別なノードの処理

  1. EMR CLI で作成されたゲートウェイノードのアップグレード。

    • ゲートウェイノードが EMR コンソールで作成された場合、前述の手順で関連する内容がすでにカバーされています。

    • ゲートウェイノードが EMR CLI で作成された場合、これらのノードは独立して作成されるため、手動でアップグレードスクリプトを実行してアップグレードを完了する必要があります。さらに、エラスティックノードが初期化されるときに、スクリプトを使用して事前にアップグレードを完了する必要があります。

  2. Trino、Presto、Impala などのサービスの JindoSDK の置き換え。

    EMR-3.53.0 より前のバージョンおよび EMR-5.19.0 より前のバージョン (含まない) では、Trino、Presto、Impala などのサービスで使用される JindoSDK は、前述の手順では自動的にアップグレードされません。これらのサービスの plugins パスにある JindoSDK JAR パッケージをデフォルトバージョンに手動で置き換え、変更を有効にするためにサービスを再起動する必要があります。

ステップ 6: サービスの再起動

説明

Spark Streaming や Flink ジョブなど、YARN 上で実行されるジョブについては、ジョブが停止した後に YARN NodeManager でローリングリスタートを実行します。

ロールバックを有効にするには、Hive、Presto、Impala、Flink、Ranger、Spark、Zeppelin などの関連サービスを再起動します。

たとえば、EMR クラスターの Hive サービスページで、右上の [その他>] > [再起動] を選択します。