Topik ini menjelaskan cara melakukan upgrade JindoSDK pada kluster EMR berbasis x86 untuk berbagai skenario.
Prasyarat
Anda telah membuat kluster EMR berbasis x86. Untuk informasi selengkapnya, lihat Create a cluster.
Skenario 1: Upgrade kluster yang sudah ada
Jika Anda memiliki kluster EMR yang menjalankan EMR v5.6.0 atau versi lebih baru, atau EMR v3.40.0 atau versi lebih baru, dan perlu menyelesaikan masalah JindoData yang diketahui atau menggunakan fitur JindoSDK terbaru, ikuti langkah-langkah berikut untuk melakukan upgrade JindoSDK.
Saat Anda melakukan upgrade dari JindoSDK 4.6.8 atau versi sebelumnya ke 4.6.9 atau versi lebih baru, atau ke versi 6.x, path temporary default yang digunakan JindoCommitter untuk pekerjaan akan berubah. Untuk mencegah kehilangan data selama upgrade, login ke halaman Services kluster dan tambahkan salah satu item konfigurasi berikut sebelum upgrade:
-
Pada tab Configure layanan Hadoop-Common, tambahkan item konfigurasi
fs.jdo.committer.allow.concurrent=falseke file core-site.xml. -
Pada tab Configure layanan Configure, tambahkan item konfigurasi
spark.hadoop.fs.jdo.committer.allow.concurrent=falseke file spark-defaults.conf.
Setelah Anda melakukan upgrade JindoSDK di semua node dalam kluster, termasuk node Gateway, atur parameter tersebut menjadi true.
Langkah 1: Siapkan paket dan skrip upgrade
Tentukan versi JindoSDK yang diperlukan untuk upgrade:
-
Akses langsung ke OSS/OSS-HDFS:
Jika Anda hanya menggunakan JindoSDK untuk mengakses langsung Object Storage Service (OSS) atau OSS-HDFS, periksa apakah dependensi Hadoop lokal Anda merupakan versi lama, misalnya versi sebelum 2.7. Jika demikian, penyesuaian kompatibilitas tambahan mungkin diperlukan.
-
Penggunaan layanan semi-managed:
Jika Anda menggunakan layanan semi-managed seperti JindoCache, JindoAuth, atau JindoFSx, hubungi tim dukungan teknis Alibaba Cloud EMR untuk memastikan kompatibilitas versi JindoSDK dan memastikan proses upgrade berjalan lancar.
-
Login ke node master kluster EMR. Untuk informasi selengkapnya, lihat Log on to a cluster.
-
Unduh paket patch ke direktori home
emr-userdan ekstrak paket tersebut.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 -
Unduh paket JindoSDK
jindosdk-{VERSION}.tar.gzdan letakkan di direktori hasil ekstraksi.Contoh ini melakukan upgrade JindoSDK di kluster ke versi 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 -lDirektori
jindosdk-patchesberisi file-file berikut:-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
Langkah 2: Konfigurasikan informasi node
-
Konfigurasi informasi node secara manual
-
Edit file
hostsdalam paket patch.vim hosts -
Tambahkan hostname semua node dalam kluster, seperti
master-1-1ataucore-1-1, dengan satu hostname per baris.Sebagai contoh, file
hostsberisi konten berikut:master-1-1 core-1-1 core-1-2
-
-
Isi informasi node secara otomatis
Anda juga dapat menjalankan perintah berikut untuk mengambil semua informasi node. Jika perintah gagal mengisi file
hosts, Anda harus menambahkan informasi node secara manual.cat /usr/local/taihao-executor-all/data/cache/.cluster_context | jq --raw-output '.nodes[].hostname.alias[]' > hosts
Langkah 3: Jalankan upgrade
Jalankan skrip apply_all.sh untuk meng-upgrade JindoSDK ke versi yang ditentukan.
./apply_all.sh $NEW_JINDOSDK_VERSION # Jalankan skrip apply_all.sh dengan $NEW_JINDOSDK_VERSION yang ditentukan untuk meng-upgrade JindoSDK ke versi tersebut.
Sebagai contoh, untuk meng-upgrade JindoSDK di kluster ke versi 6.8.2:
./apply_all.sh 6.8.2
Skrip selesai ketika output berisi ### DONE.
>>> updating ... master-1-1
>>> updating ... core-1-1
>>> updating ... core-1-2
### DONE
Langkah 4: Modifikasi konfigurasi kluster (untuk kompatibilitas dengan autentikasi EMR OSS Ranger versi lama)
Jika autentikasi EMR OSS Ranger diaktifkan dan Anda melakukan upgrade JindoSDK dari EMR v3.51.2/v5.17.2 atau versi sebelumnya ke versi antara 6.5.0 dan 6.7.2, Anda mungkin mengalami masalah kompatibilitas. Kami menyarankan untuk meng-upgrade JindoSDK ke versi 6.7.3 atau lebih baru dan memodifikasi konfigurasi kluster sebagai berikut.
-
Pada halaman Configure layanan HADOOP-COMMON, klik tab core-site.xml.
-
Pada tab core-site.xml, temukan dan modifikasi item konfigurasi berikut.
Parameter
Deskripsi
fs.jdo.plugin.dir
Atur direktori pemuatan plugin ke path plugin versi JindoSDK baru. Ubah nilai dari
/opt/apps/RANGER/jindoauth-current/pluginsmenjadi/opt/apps/JINDOSDK/jindosdk-current/plugins.
Langkah 5: Atasi node khusus
-
Upgrade node Gateway yang dibuat menggunakan CLI EMR.
-
Jika node Gateway dibuat di konsol EMR, langkah-langkah sebelumnya sudah mencakupnya.
-
Jika Anda membuat node Gateway menggunakan CLI EMR, node tersebut berdiri sendiri dan Anda harus menjalankan skrip upgrade secara manual. Selain itu, Anda harus melakukan upgrade node elastis terlebih dahulu saat menginisialisasinya.
-
-
Ganti JindoSDK untuk layanan seperti Trino, Presto, dan Impala.
Untuk kluster EMR yang menjalankan versi sebelum EMR v3.53.0 atau v5.19.0, JindoSDK untuk layanan seperti Trino, Presto, dan Impala tidak di-upgrade secara otomatis. Anda harus mengganti file JAR JindoSDK secara manual di path
pluginslayanan tersebut dengan versi target dan restart layanan agar perubahan diterapkan.
Langkah 6: Verifikasi upgrade
ls -l /opt/apps/JINDOSDK/jindosdk-current/lib
Contoh berikut menunjukkan output setelah melakukan upgrade dari versi default 6.2.0 ke 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
Langkah 7: Mulai ulang layanan
Hentikan semua pekerjaan YARN (aplikasi) yang sedang berjalan, seperti Spark Streaming atau pekerjaan Flink, lalu lakukan restart bergulir batch untuk layanan YARN NodeManager.
Untuk menerapkan upgrade, restart layanan seperti Hive, Presto, Impala, Flink, Ranger, Spark, dan Zeppelin.
Sebagai contoh, untuk merestart layanan Hive, buka halaman layanan Hive di kluster EMR Anda dan pilih di pojok kanan atas.
Skenario 2: Scale out atau buat kluster
Saat Anda melakukan scale out kluster yang sudah ada dan perlu menyebarkan versi JindoSDK baru, Anda dapat menggunakan tindakan bootstrap di konsol EMR untuk mengotomatiskan proses ini. Hal ini memastikan bahwa JindoSDK berhasil di-upgrade saat Anda membuat kluster baru atau menambahkan node ke kluster yang sudah ada. Ikuti langkah-langkah berikut untuk melakukan upgrade.
Langkah 1: Buat paket upgrade bootstrap
-
Jalankan perintah berikut untuk mengunduh
jindosdk-patches.tar.gz,jindosdk-{VERSION}-{PLATFORM}.tar.gz, danbootstrap_jindosdk.sh.Contoh ini melakukan upgrade JindoSDK di kluster ke versi 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 -lOutput berikut dikembalikan:
-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 -
Jalankan perintah berikut untuk membuat paket upgrade.
bash bootstrap_jindosdk.sh -gen $NEW_JINDOSDK_VERSION # Jalankan skrip bootstrap_jindosdk.sh dengan $NEW_JINDOSDK_VERSION yang ditentukan untuk meng-upgrade JindoSDK ke versi tersebut.Catatan-
Untuk melakukan scale out kluster yang sudah ada, gunakan opsi
-genuntuk menghasilkan paket upgrade ringan. -
Untuk membuat kluster baru, gunakan opsi
-gen-fulluntuk menghasilkan paket upgrade yang berisi semua konten yang diperlukan.
Sebagai contoh, untuk meng-upgrade JindoSDK ke versi 6.8.2:
bash bootstrap_jindosdk.sh -gen 6.8.2Setelah paket upgrade dibuat, pesan berikut ditampilkan.
Generated patch at /home/emr-user/jindo-patch/jindosdk-bootstrap-patches.tar.gzSaat pembuatan selesai, paket patch
jindosdk-bootstrap-patches.tar.gzdihasilkan. -
Langkah 2: Unggah paket bootstrap
Unggah paket patch dan skrip bootstrap ke OSS. Anda dapat menggunakan perintah Hadoop dari dalam kluster EMR, atau menggunakan alat seperti konsol OSS Alibaba Cloud, ossutil, atau OSS Browser.
Sebagai contoh, path OSS adalah oss://<bucket-name>/path/to/bootstrap_jindosdk.sh dan 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/
Output berikut dikembalikan:
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
Langkah 3: Tambahkan tindakan bootstrap
Tambahkan tindakan bootstrap di konsol EMR. Untuk informasi selengkapnya, lihat Manage bootstrap actions.
Konfigurasikan tindakan bootstrap dengan pengaturan pada tabel berikut.
|
Parameter |
Deskripsi |
Contoh |
|
Name |
Nama tindakan bootstrap. Misalnya, Upgrade JindoSDK. |
update_jindosdk |
|
Script location |
Path OSS tempat skrip disimpan. Path skrip harus dalam format |
|
|
Arguments |
Argumen untuk skrip tindakan bootstrap. Argumen ini menentukan nilai variabel yang dirujuk oleh skrip. |
|
|
Execution scope |
Pilih Cluster. |
Cluster |
|
Execution time |
Pilih After Component Startup. |
After Component Startup |
|
Failure policy |
Pilih Proceed. |
Proceed With Execution |
Langkah 4: Atasi node khusus
-
Upgrade node Gateway yang dibuat menggunakan CLI EMR.
-
Jika node Gateway dibuat di konsol EMR, langkah-langkah sebelumnya sudah mencakupnya.
-
Jika Anda membuat node Gateway menggunakan CLI EMR, node tersebut berdiri sendiri dan Anda harus menjalankan skrip upgrade secara manual. Selain itu, Anda harus melakukan upgrade node elastis terlebih dahulu saat menginisialisasinya.
-
-
Ganti JindoSDK untuk layanan seperti Trino, Presto, dan Impala.
Untuk kluster EMR yang menjalankan versi sebelum EMR v3.53.0 atau v5.19.0, JindoSDK untuk layanan seperti Trino, Presto, dan Impala tidak di-upgrade secara otomatis. Anda harus mengganti file JAR JindoSDK secara manual di path
pluginslayanan tersebut dengan versi target dan restart layanan agar perubahan diterapkan.
Langkah 5: Restart layanan
Restart layanan yang relevan untuk memastikan mereka memuat perbaikan terbaru.
-
Jika Anda membuat kluster baru, restart layanan seperti Hive, Presto, Impala, Flink, Ranger, Spark, dan Zeppelin.
-
Jika Anda melakukan scale out dengan menambahkan node baru, restart layanan pada node tersebut.
Skenario 3: Rollback JindoSDK
Jika kluster Anda menjalankan EMR v5.6.0 atau versi lebih baru, atau EMR v3.40.0 atau versi lebih baru, dan Anda mengalami masalah selama upgrade serta perlu melakukan rollback ke versi JindoSDK default, ikuti langkah-langkah berikut.
Langkah 1: Siapkan skrip rollback
-
Login ke node master kluster EMR. Untuk informasi selengkapnya, lihat Log on to a cluster.
-
Unduh paket patch ke direktori home
emr-userdan ekstrak paket tersebut.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 -lOutput berikut dikembalikan:
-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
Langkah 2: Konfigurasikan informasi node
-
Konfigurasi informasi node secara manual
-
Edit file
hostsdalam paket patch.vim hosts -
Tambahkan hostname semua node dalam kluster, seperti
master-1-1ataucore-1-1, dengan satu hostname per baris.Sebagai contoh, file
hostsberisi konten berikut:master-1-1 core-1-1 core-1-2
-
-
Isi informasi node secara otomatis
Anda juga dapat menjalankan perintah berikut untuk mengambil semua informasi node. Jika perintah gagal mengisi file
hosts, Anda harus menambahkan informasi node secara manual.cat /usr/local/taihao-executor-all/data/cache/.cluster_context | jq --raw-output '.nodes[].hostname.alias[]' > hosts
Langkah 3: Jalankan rollback
Jalankan perintah berikut untuk membatalkan semua perubahan.
./revert_all.sh
Skrip selesai ketika output berisi ### DONE.
>>> updating ... master-1-1
>>> updating ... core-1-1
>>> updating ... core-1-2
### DONE
Langkah 4: Verifikasi rollback
ls -l /opt/apps/JINDOSDK/jindosdk-current/lib
Contoh berikut menunjukkan output setelah melakukan rollback ke versi 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
Langkah 5: Atasi node khusus
-
Upgrade node Gateway yang dibuat menggunakan CLI EMR.
-
Jika node Gateway dibuat di konsol EMR, langkah-langkah sebelumnya sudah mencakupnya.
-
Jika Anda membuat node Gateway menggunakan CLI EMR, node tersebut berdiri sendiri dan Anda harus menjalankan skrip upgrade secara manual. Selain itu, Anda harus melakukan upgrade node elastis terlebih dahulu saat menginisialisasinya.
-
-
Ganti JindoSDK untuk layanan seperti Trino, Presto, dan Impala.
Untuk kluster EMR yang menjalankan versi sebelum EMR v3.53.0 atau v5.19.0, JindoSDK untuk layanan seperti Trino, Presto, dan Impala tidak di-rollback secara otomatis. Ganti secara manual file JAR JindoSDK di path
pluginslayanan tersebut dengan versi default, lalu restart layanan agar perubahan diterapkan.
Langkah 6: Restart layanan
Hentikan semua pekerjaan YARN (aplikasi) yang sedang berjalan, seperti Spark Streaming atau pekerjaan Flink, lalu lakukan restart bergulir batch untuk layanan YARN NodeManager.
Untuk menerapkan rollback, restart layanan seperti Hive, Presto, Impala, Flink, Ranger, Spark, dan Zeppelin.
Sebagai contoh, untuk merestart layanan Hive, buka halaman layanan Hive di kluster EMR Anda dan pilih di pojok kanan atas.