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

E-MapReduce:EMR クラスター (x86) での JindoSDK のアップグレードとロールバック

最終更新日:Aug 21, 2026

このトピックでは、x86 ベースの EMR クラスターで JindoSDK をアップグレードする方法を、さまざまなシナリオに沿って説明します。

前提条件

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

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

EMR v5.6.0 以降、または EMR v3.40.0 以降を実行している EMR クラスターで、JindoData の既知の問題を解決したり、新しい JindoSDK 機能を使用したりする必要がある場合は、次の手順に従って JindoSDK をアップグレードしてください。

重要

JindoSDK 4.6.8 以前から 4.6.9 以降、または 6.x バージョンにアップグレードすると、JindoCommitter がジョブで使用するデフォルトの一時パスが変更されます。アップグレード中のデータ損失を防ぐため、アップグレード前にクラスターの Services ページにログインし、次のいずれかの設定項目を追加してください。

  • Hadoop-Common サービスの Configure タブで、fs.jdo.committer.allow.concurrent=false 設定項目を core-site.xml に追加します。

  • [Configure] サービスの Configure タブで、spark.hadoop.fs.jdo.committer.allow.concurrent=false 設定項目を spark-defaults.conf に追加します。

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

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

説明

アップグレードに必要な JindoSDK のバージョンを判断します。

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

    JindoSDK を Object Storage Service (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 をバージョン 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 など、クラスター内のすべてのノードのホスト名を 1 行に 1 つずつ追加します。

      たとえば、hosts ファイルには次の内容が含まれています。

      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) に 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 v3.51.2/v5.17.2 以前から 6.5.0~6.7.2 のバージョンにアップグレードする場合、互換性の問題が発生する可能性があります。JindoSDK をバージョン 6.7.3 以降にアップグレードし、次のようにクラスター設定を変更することを推奨します。

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

  2. [core-site.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 v3.53.0 または v5.19.0 より前のバージョンを実行している EMR クラスターでは、Trino、Presto、Impala などのサービス用の JindoSDK は自動的にアップグレードされません。これらのサービスの plugins パスにある JindoSDK JAR ファイルをターゲットバージョンに手動で置き換え、サービスを再起動して変更を適用する必要があります。

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

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

次の例は、デフォルトバージョンの 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 などのサービスを再起動してください。

たとえば、Hive サービスを再起動するには、EMR クラスターの Hive サービスページに移動し、右上隅にある More > 再起動 を選択します。

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

既存クラスターをスケールアウトし、新しい JindoSDK バージョンをデプロイする必要がある場合は、EMR コンソールのブートストラップアクションを使用してプロセスを自動化できます。これにより、新規クラスターの作成時や既存クラスターへのノード追加時に、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) のアップグレードパッケージを生成します。
    説明
    • 既存クラスターをスケールアウトするには、-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:ブートストラップパッケージのアップロード

パッチパッケージとブートストラップスクリプトを OSS にアップロードします。EMR クラスター内から Hadoop コマンドを使用するか、Alibaba Cloud OSS コンソール、ossutil、OSS Browser などのツールを使用できます。

たとえば、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 コンソールでブートストラップアクションを追加します。詳細については、「ブートストラップアクションの管理」をご参照ください。

次の表の設定でブートストラップアクションを設定します。

パラメーター

説明

例

名前

ブートストラップアクションの名前。例:JindoSDK のアップグレード。

update_jindosdk

スクリプトの場所

スクリプトが保存されている OSS パス。スクリプトパスは oss://**/*.sh 形式である必要があります。

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

引数

ブートストラップアクションスクリプトの引数。これらの引数は、スクリプトが参照する変数の値を指定します。

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

実行範囲

Cluster を選択します。

クラスター

実行タイミング

After Component Startup を選択します。

コンポーネント起動後

失敗ポリシー

Proceed を選択します。

続行

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

  1. EMR CLI を使用して作成されたゲートウェイノードのアップグレード

    • ゲートウェイノードが EMR コンソールで作成された場合は、上記の手順で対応済みです。

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

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

    EMR v3.53.0 または v5.19.0 より前のバージョンを実行している EMR クラスターでは、Trino、Presto、Impala などのサービス用の JindoSDK は自動的にアップグレードされません。これらのサービスの plugins パスにある JindoSDK JAR ファイルをターゲットバージョンに手動で置き換え、サービスを再起動して変更を適用する必要があります。

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

関連サービスを再起動して、最新の修正を適用してください。

  • 新規クラスターを作成している場合は、Hive、Presto、Impala、Flink、Ranger、Spark、Zeppelin などのサービスを再起動します。

  • 新規ノードを追加してスケールアウトしている場合は、それらのノード上のサービスを再起動します。

シナリオ3:JindoSDK のロールバック

クラスターが EMR v5.6.0 以降、または EMR v3.40.0 以降を実行していて、アップグレード中に問題が発生し、デフォルトの JindoSDK バージョンにロールバックする必要がある場合は、次の手順に従ってください。

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

  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
    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 など、クラスター内のすべてのノードのホスト名を 1 行に 1 つずつ追加します。

      たとえば、hosts ファイルには次の内容が含まれています。

      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

次の例は、バージョン 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 v3.53.0 または v5.19.0 より前のバージョンを実行している EMR クラスターでは、Trino、Presto、Impala などのサービス用の JindoSDK は自動的にロールバックされません。これらのサービスの plugins パスにある JindoSDK JAR ファイルをデフォルトバージョンに手動で置き換え、サービスを再起動して変更を適用する必要があります。

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

説明

Spark Streaming や Flink ジョブなど、実行中の YARN ジョブ (アプリケーション) を停止してから、YARN NodeManager サービスをローリング再起動します。

ロールバックを適用するには、Hive、Presto、Impala、Flink、Ranger、Spark、Zeppelin などのサービスを再起動してください。

たとえば、Hive サービスを再起動するには、EMR クラスターの Hive サービスページに移動し、右上隅にある More > 再起動 を選択します。