本文为您介绍新版控制台上EMR集群JindoSDK的升级流程。

背景信息

如果您在新版控制台上创建的EMR-5.6.0及以上版本或EMR-3.40.0及以上版本集群中,遇到JindoData版本已知问题或需要使用新功能(详情请参见JindoData版本说明),可以将JindoSDK进行升级。

准备软件包和升级脚本

登录EMR集群的Master节点,并将下载的patch包放在emr-user用户的HOME目录下,将patch包解压缩后,使用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
下载JindoSDK软件包jindosdk-{VERSION}.tar.gz,放在解压后的目录。
cd jindosdk-patches

wget https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/release/4.6.2/jindosdk-4.6.2.tar.gz

ls -l
jindosdk-patches内容示例如下:
-rwxrwxr-x 1 emr-user emr-user       575 May 01 00:00 apply_all.sh
-rwxrwxr-x 1 emr-user emr-user      4047 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-4.6.2.tar.gz

配置升级节点信息

编辑patch包下的hosts文件,添加集群所有节点的host name,例如master-1-1或core-1-1,文件内容以行分割。
cd jindosdk-patches
vim hosts
hosts文件内容示例如下:
master-1-1
core-1-1
core-1-2

执行升级

通过apply_all.sh脚本执行升级操作。
./apply_all.sh $NEW_JINDOSDK_VERSION $OLD_JINDOSDK_VERSION
例如
./apply_all.sh 4.6.2 4.5.1
脚本执行完成后,返回如下提示信息。
>>> updating ...  master-1-1
>>> updating ...  core-1-1
>>> updating ...  core-1-2
### DONE
说明 对于已经在运行的YARN作业(Application,例如:Spark Streaming或Flink作业),需要停止作业后,批量滚动重启YARN NodeManager。

升级后重启服务

升级完成后在EMR控制台上重启JindoData服务的Hive、Presto、Impala、Druid、Flink、Solr、Ranger、Storm、Oozie、Spark和Zeppelin组件,完成升级。以Hive组件为例,在EMR集群的Hive服务页面,选择右上角的更多操作 > 重启完成重启。

新建集群和扩容已有集群

新建EMR集群时在EMR控制台添加引导操作,或扩容已有集群时自动升级修复。具体操作步骤如下:

  1. 制作引导升级包。
    1. 执行以下命令,下载jindosdk-patches.tar.gz、jindosdk-4.6.2.tar.gz和bootstrap_jindosdk.sh。
      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/4.6.2/jindosdk-4.6.2.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-4.6.2.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 $OLD_JINDOSDK_VERSION
      例如
      bash bootstrap_jindosdk.sh -gen 4.6.2 4.5.1
      升级包制作成功后,显示以下内容:
      Generated patch at /home/emr-user/jindo-patch/jindosdk-bootstrap-patches.tar.gz
    3. 制作完成后,得到patch包:jindosdk-bootstrap-patches.tar.gz。
  2. 上传引导升级包。

    将patch包和bootstrap脚本上传到OSS上。EMR集群内可以通过Hadoop命令上传,也可以通过阿里云对象存储OSS控制台、ossutil或OSS Browser等工具上传。

    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

    例如,上传到OSS的路径为oss://<bucket-name>/path/to/bootstrap_jindosdk.shoss://<bucket-name>/path/to/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
    执行范围选择集群集群
    执行时间选择组件启动后组件启动后
    执行失败策略选择继续执行继续执行
  4. 重启相关组件,确保加载到最新的修复。
    • 如果是新建集群,则需要重启Hive、Presto、Impala、Druid、Flink、Solr、Ranger、Storm、Oozie、Spark和Zeppelin等组件。
    • 如果是扩容新节点,则需要重启对应节点上的Hive、Presto、Impala、Druid、Flink、Solr、Ranger、Storm、Oozie、Spark和Zeppelin等组件。