本文為您介紹在EMR集群環境中,針對不同應用場景升級JindoSDK的詳細步驟。
前提條件
已創建EMR集群,詳情請參見創建集群。
場景一:升級已有集群
如果您創建的EMR-5.6.0及以上版本或EMR-3.40.0及以上版本集群,在使用過程中遇到JindoData版本已知問題,或者需要使用JindoSDK的新功能,可以按照以下步驟升級JindoSDK。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.hadoop.fs.jdo.committer.allow.concurrent=false
。一旦您的集群中的所有節點,包括Gateway節點,都完成了JindoSDK的升級,您便可以選擇移除該設置。
步驟一:準備軟件包和升級腳本
登錄EMR集群的Master節點,詳情請參見登錄集群。
將下載的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
下載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
步驟二:配置升級節點信息
手動配置節點信息
編輯patch包中的hosts文件。
vim hosts
添加集群所有節點的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的升級操作,以高效、準確地完成集群擴容與升級任務。
步驟一:制作引導升級包
執行以下命令,下載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
執行以下命令,制作升級包。
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命令上傳,也可以通過阿里云對象存儲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
步驟三:添加引導操作
在EMR控制臺添加引導操作。具體步驟,請參見管理引導操作。
需添加的配置項如下表所示。
參數 | 描述 | 示例 |
名稱 | 引導操作的名稱。例如:升級JindoSDK。 | update_jindosdk |
腳本位置 | 選擇腳本所在OSS的位置。腳本路徑格式必須為 |
|
參數 | 引導操作腳本的參數,指定腳本中所引用的變量的值。 |
|
執行范圍 | 選擇集群。 | 集群 |
執行時間 | 選擇組件啟動后。 | 組件啟動后 |
執行失敗策略 | 選擇繼續執行。 | 繼續執行 |
步驟四:重啟服務
重啟相關服務,確保加載到最新的修復。
如果是新建集群,則需要重啟Hive、Presto、Impala、Flink、Ranger、Spark和Zeppelin等服務。
如果是擴容新節點,則需要重啟對應節點上的Hive、Presto、Impala、Flink、Ranger、Spark和Zeppelin等服務。
場景三:將JindoSDK回滾至集群默認版本
如果您的集群為EMR-5.6.0及以上或EMR-3.40.0及以上版本,在升級過程中遇到問題需要將集群恢復至默認的JindoSDK版本,可以按照以下步驟操作。
步驟一:準備回滾腳本
登錄EMR集群的Master節點,詳情請參見登錄集群。
將下載的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
步驟二:配置回滾節點信息
手動配置節點信息
編輯patch包中的hosts文件。
vim hosts
添加集群所有節點的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服務頁面,選擇右上角的
。