全部產品
Search
文件中心

E-MapReduce:EMR叢集JindoSDK升級流程

更新時間:Jul 01, 2024

本文為您介紹在EMR叢集環境中,針對不同應用情境升級JindoSDK的詳細步驟。

前提條件

已建立EMR叢集,詳情請參見建立叢集

情境一:升級已有叢集

如果您建立的EMR-5.6.0及以上版本或EMR-3.40.0及以上版本叢集,在使用過程中遇到JindoData版本已知問題,或者需要使用JindoSDK的新功能,可以按照以下步驟升級JindoSDK。

重要

如果從JindoSDK 4.6.8或更低版本升級到4.6.9或以上版本、或者升級到6.x系列時,由於JindoCommitter預設使用的作業臨時路徑已更改。為了避免升級過程中資料遺失,請在升級前確保通過在Hadoop-Commoncore-site.xml中設定fs.jdo.committer.allow.concurrent=false,或在Spark配置中加入spark.hadoop.fs.jdo.committer.allow.concurrent=false。一旦您的叢集中的所有節點,包括Gateway節點,都完成了JindoSDK的升級,您便可以選擇移除該設定。

步驟一:準備軟體包和升級指令碼

  1. 登入EMR叢集的Master節點,詳情請參見登入叢集

  2. 將下載的patch包放在emr-user使用者的HOME目錄下,然後解壓縮patch包。

    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.3.4版本。

    cd jindosdk-patches
    
    wget https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/release/6.3.4/jindosdk-6.3.4-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.3.4-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

步驟二:配置升級節點資訊

  • 手動設定節點資訊

    1. 編輯patch包中的hosts檔案。

      vim hosts
    2. 添加叢集所有節點的hostname,例如master-1-1或core-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

步驟三:執行升級操作

通過apply_all.sh指令碼,升級JindoSDK版本至指定的新版本。

./apply_all.sh $NEW_JINDOSDK_VERSION  # 使用指定的$NEW_JINDOSDK_VERSION執行apply_all.sh指令碼,以升級到該版本的JindoSDK。

例如,升級叢集中的JindoSDK至6.3.4版本。

./apply_all.sh 6.3.4

返回資訊中包含### DONE時,表示指令碼執行完成。

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

步驟四:確認升級情況

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

以從叢集預設版本6.2.0升級為6.3.4版本為例,返回樣本如下。

lrwxrwxrwx 1 emr-user emr-user 64 Apr 12 11:08 jindo-core-6.2.0.jar -> /opt/apps/JINDOSDK/jindosdk-6.3.4-linux/lib/jindo-core-6.3.4.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.3.4-linux/lib/jindo-core-linux-el7-aarch64-6.3.4.jar
lrwxrwxrwx 1 emr-user emr-user 63 Apr 12 11:08 jindo-sdk-6.2.0.jar -> /opt/apps/JINDOSDK/jindosdk-6.3.4-linux/lib/jindo-sdk-6.3.4.jar
lrwxrwxrwx 1 emr-user emr-user 50 Apr 12 11:08 native -> /opt/apps/JINDOSDK/jindosdk-6.3.4-linux/lib/native
lrwxrwxrwx 1 emr-user emr-user 57 Apr 12 11:08 site-packages -> /opt/apps/JINDOSDK/jindosdk-6.3.4-linux/lib/site-packages

步驟五:升級後重啟服務

說明

對於已經在啟動並執行YARN作業(Application,例如:Spark Streaming或Flink作業),需要停止作業後,批量滾動重啟YARN NodeManager。

Hive、Presto、Impala、Flink、Ranger、Spark和Zeppelin等服務需要重啟後才能完成升級。

以Hive服務為例,在EMR叢集的Hive服務頁面,選擇右上方的更多操作 > 重啟

情境二:擴容已有叢集或建立叢集

當對現有叢集進行擴容並需部署新版JindoSDK時,可通過EMR控制台的引導操作功能來自動化完成這一過程,確保無論是建立新叢集還是向現有叢集添加節點時,JindoSDK都能被順利升級至最新版本。請遵循以下詳細步驟實施JindoSDK的升級操作,以高效、準確地完成叢集擴容與升級任務。

步驟一:製作引導升級包

  1. 執行以下命令,下載jindosdk-patches.tar.gz、jindosdk-{VERSION}-{PLATFORM}.tar.gz和bootstrap_jindosdk.sh。

    本文樣本是將叢集中的JindoSDK升級到6.3.4版本。

    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.3.4/jindosdk-6.3.4-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.3.4-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.3.4版本。

    bash bootstrap_jindosdk.sh -gen 6.3.4

    升級包製作成功後,顯示以下內容。

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

步驟二:上傳引導升級包

將patch包和bootstrap指令碼上傳到OSS上。EMR叢集內可以通過Hadoop命令上傳,也可以通過阿里雲Object Storage Service控制台、ossutil或OSS Browser等工具上傳。

例如,上傳到OSS的路徑為oss://<bucket-name>/path/to/bootstrap_jindosdk.shoss://<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

步驟三:添加引導操作

在EMR控制台添加引導操作。具體步驟,請參見管理引導操作

需添加的配置項如下表所示。

參數

描述

樣本

名稱

引導操作的名稱。例如:升級JindoSDK。

update_jindosdk

指令碼位置

選擇指令碼所在OSS的位置。指令碼路徑格式必須為oss://**/*.sh格式。

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

參數

引導操作指令碼的參數,指定指令碼中所引用的變數的值。

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

執行範圍

選擇叢集

叢集

執行時間

選擇組件啟動後

組件啟動後

執行失敗策略

選擇繼續執行

繼續執行

步驟四:重啟服務

重啟相關服務,確保載入到最新的修複。

  • 如果是建立叢集,則需要重啟Hive、Presto、Impala、Flink、Ranger、Spark和Zeppelin等服務。

  • 如果是擴容新節點,則需要重啟對應節點上的Hive、Presto、Impala、Flink、Ranger、Spark和Zeppelin等服務。

情境三:將JindoSDK復原至叢集預設版本

如果您的叢集為EMR-5.6.0及以上或EMR-3.40.0及以上版本,在升級過程中遇到問題需要將叢集恢複至預設的JindoSDK版本,可以按照以下步驟操作。

步驟一:準備復原指令碼

  1. 登入EMR叢集的Master節點,詳情請參見登入叢集

  2. 將下載的patch包放在emr-user使用者的HOME目錄下,然後解壓縮patch包。

    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

步驟二:配置復原節點資訊

  • 手動設定節點資訊

    1. 編輯patch包中的hosts檔案。

      vim hosts
    2. 添加叢集所有節點的hostname,例如master-1-1或core-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

步驟三:執行復原操作

執行以下命令復原所有更改。

./revert_all.sh

返回資訊中包含### DONE時,表示指令碼執行完成。

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

步驟四:確認復原情況

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

步驟五:重啟服務

說明

對於已經在啟動並執行YARN作業(Application,例如:Spark Streaming或Flink作業),需要停止作業後,批量滾動重啟YARN NodeManager。

Hive、Presto、Impala、Flink、Ranger、Spark和Zeppelin等服務需要重啟後才能完成復原。

以Hive服務為例,在EMR叢集的Hive服務頁面,選擇右上方的更多操作 > 重啟