このトピックでは、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 バージョンの互換性を確認し、スムーズなアップグレードプロセスを確保することをお勧めします。
EMR クラスターのマスターノードにログインします。詳細については、「クラスターへのログイン」をご参照ください。
パッチパッケージを 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.gzJindoSDK のソフトウェアパッケージ 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 -ljindosdk-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: アップグレードのためのノード情報の設定
手動設定
パッケージ内の hosts ファイルを編集します。
vim hostsmaster-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 以降にアップグレードし、次の操作を実行してクラスター設定を変更することをお勧めします。
HADOOP-COMMON サービスの [設定] ページで、[core-sites.xml] タブをクリックします。
[core-sites.xml] ページで、次の設定項目を検索して変更します。
パラメーター
説明
fs.jdo.plugin.dir
プラグインの読み込みディレクトリを新しいバージョンの JindoSDK のプラグインパスに変更します。つまり、
/opt/apps/RANGER/jindoauth-current/pluginsを/opt/apps/JINDOSDK/jindosdk-current/pluginsに変更します。
ステップ 5: 特別なノードの処理
EMR CLI で作成されたゲートウェイノードのアップグレード。
ゲートウェイノードが EMR コンソールで作成された場合、前述の手順で関連する内容がすでにカバーされています。
ゲートウェイノードが EMR CLI で作成された場合、これらのノードは独立して作成されるため、手動でアップグレードスクリプトを実行してアップグレードを完了する必要があります。さらに、エラスティックノードが初期化されるときに、スクリプトを使用して事前にアップグレードを完了する必要があります。
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/libJindoSDK をデフォルトバージョンの 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: ブートストラップアップグレードパッケージの準備
次のコマンドを実行して、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次のコマンドを実行して、アップグレードパッケージを準備します。
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 パス。スクリプトパスは |
|
パラメーター | ブートストラップアクションスクリプトのパラメーター。このパラメーターは、スクリプトで参照される変数の値を指定するために使用されます。 |
|
実行範囲 | [クラスター] を選択します。 | クラスター |
実行時間 | [コンポーネントの起動後] を選択します。 | コンポーネントの起動後 |
失敗ポリシー | [実行を続行] を選択します。 | 実行を続行 |
ステップ 4: 特別なノードの処理
EMR CLI で作成されたゲートウェイノードのアップグレード。
ゲートウェイノードが EMR コンソールで作成された場合、前述の手順で関連する内容がすでにカバーされています。
ゲートウェイノードが EMR CLI で作成された場合、これらのノードは独立して作成されるため、手動でアップグレードスクリプトを実行してアップグレードを完了する必要があります。さらに、エラスティックノードが初期化されるときに、スクリプトを使用して事前にアップグレードを完了する必要があります。
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: ロールバックスクリプトの準備
EMR クラスターのマスターノードにログインします。詳細については、「クラスターへのログイン」をご参照ください。
ダウンロードしたパッチパッケージを 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: ロールバックのためのノード情報の設定
手動設定
パッケージ内の hosts ファイルを編集します。
vim hostsmaster-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/libJindoSDK を 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: 特別なノードの処理
EMR CLI で作成されたゲートウェイノードのアップグレード。
ゲートウェイノードが EMR コンソールで作成された場合、前述の手順で関連する内容がすでにカバーされています。
ゲートウェイノードが EMR CLI で作成された場合、これらのノードは独立して作成されるため、手動でアップグレードスクリプトを実行してアップグレードを完了する必要があります。さらに、エラスティックノードが初期化されるときに、スクリプトを使用して事前にアップグレードを完了する必要があります。
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 サービスページで、右上の を選択します。