Todos os produtos
Search
Central de documentação

E-MapReduce:Upgrade and roll back JindoSDK on an EMR cluster (x86)

Última atualização: Aug 20, 2026

Este tópico descreve como atualizar o JindoSDK em clusters EMR baseados em x86 para diferentes cenários.

Pré-requisitos

Você já criou um cluster EMR baseado em x86. Para mais informações, consulte Crie um cluster.

Cenário 1: Atualizar um cluster existente

Se você possui um cluster EMR executando a versão EMR v5.6.0 ou posterior, ou EMR v3.40.0 ou posterior, e precisa resolver o problema known JindoData issues ou utilizar novos recursos do JindoSDK, siga estas etapas para atualizar o JindoSDK.

Importante

Ao atualizar do JindoSDK 4.6.8 ou anterior para a versão 4.6.9 ou posterior, ou para uma versão 6.x, o caminho temporário padrão que o JindoCommitter utiliza para jobs é alterado. Para evitar perda de dados durante a atualização, faça login na página Services do cluster e adicione um dos seguintes itens de configuração antes de iniciar o processo:

  • Na aba Configure do service Hadoop-Common, adicione o item de configuração fs.jdo.committer.allow.concurrent=false ao arquivo core-site.xml.

  • Na aba Configure do service Configure, adicione o item de configuração spark.hadoop.fs.jdo.committer.allow.concurrent=false ao arquivo spark-defaults.conf.

Após atualizar o JindoSDK em todos os nós do cluster, incluindo os nós Gateway, defina o parâmetro como true.

Etapa 1: Preparar o pacote e os scripts de atualização

Nota

Determine a versão do JindoSDK necessária para a atualização:

  • Acesso direto ao OSS/OSS-HDFS:

    Caso utilize o JindoSDK apenas para acessar diretamente o Object Storage Service (OSS) ou OSS-HDFS, verifique se sua dependência local do Hadoop é uma versão antiga, como qualquer versão anterior à 2,7. Nesse caso, ajustes adicionais de compatibilidade podem ser necessários.

  • Uso de services semigerenciados:

    Se você utiliza services semigerenciados como JindoCache, JindoAuth ou JindoFSx, entre em contato com a equipe de suporte técnico do Alibaba Cloud EMR para confirmar a compatibilidade da versão do JindoSDK e garantir uma atualização tranquila.

  1. Faça login no nó mestre do cluster EMR. Para mais informações, consulte Log on to a cluster.

  2. Baixe o pacote de patches para o diretório home do usuário emr-user e descompacte-o.

    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. Baixe o pacote do JindoSDK jindosdk-{VERSION}.tar.gz e coloque-o no diretório descompactado.

    Este exemplo atualiza o JindoSDK no cluster para a versão 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 -l

    O diretório jindosdk-patches contém os seguintes arquivos:

    -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

Etapa 2: Configurar as informações dos nós

  • Configuração manual das informações dos nós

    1. Edite o arquivo hosts no pacote de patches.

      vim hosts
    2. Adicione os hostnames de todos os nós do cluster, como master-1-1 ou core-1-1, inserindo um hostname por linha.

      Por exemplo, o arquivo hosts deve conter o seguinte conteúdo:

      master-1-1
      core-1-1
      core-1-2
  • Preenchimento automático das informações dos nós

    Também é possível executar o comando abaixo para recuperar todas as informações dos nós. Se o comando não conseguir preencher o arquivo hosts, será necessário adicionar as informações manualmente.

    cat  /usr/local/taihao-executor-all/data/cache/.cluster_context | jq --raw-output '.nodes[].hostname.alias[]' > hosts

Etapa 3: Executar a atualização

Execute o script apply_all.sh para atualizar o JindoSDK para a versão especificada.

./apply_all.sh $NEW_JINDOSDK_VERSION  # Run the apply_all.sh script with the specified $NEW_JINDOSDK_VERSION to upgrade JindoSDK to that version.

Por exemplo, para atualizar o JindoSDK no cluster para a versão 6.8.2:

./apply_all.sh 6.8.2

O script termina quando a saída exibe ### DONE.

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

Etapa 4: Modificar a configuração do cluster (para compatibilidade com a autenticação legada EMR OSS Ranger)

Se a autenticação EMR OSS Ranger estiver ativada e você estiver atualizando o JindoSDK da versão EMR v3.51.2/v5.17.2 ou anterior para uma versão entre 6.5.0 e 6.7.2, problemas de compatibilidade podem ocorrer. Recomendamos atualizar o JindoSDK para a versão 6.7.3 ou posterior e modificar a configuração do cluster conforme descrito abaixo.

  1. Na página Configure do service HADOOP-COMMON, clique em na aba core-site.xml.

  2. Na aba core-site.xml, localize e modifique o seguinte item de configuração.

    Parâmetro

    Descrição

    fs.jdo.plugin.dir

    Defina o diretório de carregamento de plugins para o caminho de plugins da nova versão do JindoSDK. Altere o valor de /opt/apps/RANGER/jindoauth-current/plugins para /opt/apps/JINDOSDK/jindosdk-current/plugins.

Etapa 5: Tratar nós especiais

  1. Atualize os nós Gateway criados via EMR CLI.

    • Caso o nó Gateway tenha sido criado no console EMR, ele já está coberto pelas etapas anteriores.

    • Se você criou um nó Gateway usando o EMR CLI, ele existe de forma independente e exige a execução manual do script de atualização. Além disso, é necessário atualizar previamente os nós elásticos durante a inicialização.

  2. Substitua o JindoSDK para services como Trino, Presto e Impala.

    Em clusters EMR com versões anteriores à v3.53.0 ou v5.19.0, o JindoSDK para services como Trino, Presto e Impala não é atualizado automaticamente. Substitua manualmente o arquivo JAR do JindoSDK no caminho plugins desses services pela versão desejada e reinicie-os para aplicar as alterações.

Etapa 6: Verificar a atualização

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

O exemplo a seguir mostra a saída após a atualização da versão padrão 6.2.0 para a 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

Etapa 7: Reiniciar services

Nota

Interrompa quaisquer jobs YARN (aplicações) em execução, como jobs Spark Streaming ou Flink, e então realize uma reinicialização gradual em lote do service YARN NodeManager.

Para aplicar a atualização, reinicie services como Hive, Presto, Impala, Flink, Ranger, Spark e Zeppelin.

Por exemplo, para reiniciar o service Hive, acesse a página do service Hive no seu cluster EMR e selecione More > Restart no canto superior direito.

Cenário 2: Expandir ou criar um cluster

Ao expandir um cluster existente e precisar implantar uma nova versão do JindoSDK, utilize uma ação de bootstrap no console EMR para automatizar o processo. Isso garante que o JindoSDK seja atualizado com sucesso ao criar um novo cluster ou adicionar nós a um existente. Siga estas etapas para realizar a atualização.

Etapa 1: Criar um pacote de atualização de bootstrap

  1. Execute os comandos abaixo para baixar jindosdk-patches.tar.gz, jindosdk-{VERSION}-{PLATFORM}.tar.gz e bootstrap_jindosdk.sh.

    Este exemplo atualiza o JindoSDK no cluster para a versão 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

    A seguinte saída é retornada:

    -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
  2. Execute o comando a seguir para criar o pacote de atualização.

    bash bootstrap_jindosdk.sh -gen $NEW_JINDOSDK_VERSION  # Run the bootstrap_jindosdk.sh script with the specified $NEW_JINDOSDK_VERSION to upgrade JindoSDK to that version.
    Nota
    • Para expandir um cluster existente, use a opção -gen para gerar um pacote de atualização leve.

    • Para criar um novo cluster, utilize a opção -gen-full para gerar um pacote de atualização contendo todo o conteúdo necessário.

    Por exemplo, para atualizar o JindoSDK para a versão 6.8.2:

    bash bootstrap_jindosdk.sh -gen 6.8.2

    Após a criação do pacote de atualização, a seguinte mensagem é exibida.

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

    Quando a compilação for concluída, o pacote de patches jindosdk-bootstrap-patches.tar.gz será gerado.

Etapa 2: Fazer upload do pacote de bootstrap

Faça upload do pacote de patches e do script de bootstrap para o OSS. Utilize comandos Hadoop dentro do cluster EMR ou ferramentas como o console do Alibaba Cloud OSS, ossutil ou OSS Browser.

Por exemplo, os caminhos no OSS são oss://<bucket-name>/path/to/bootstrap_jindosdk.sh e 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/

A seguinte saída é retornada:

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

Etapa 3: Adicionar uma ação de bootstrap

Adicione uma ação de bootstrap no console EMR. Para mais informações, consulte Gerencie ações de bootstrap.

Configure a ação de bootstrap com as definições da tabela a seguir.

Parâmetro

Descrição

Exemplo

Name

Nome da ação de bootstrap. Por exemplo, Upgrade JindoSDK.

update_jindosdk

Script location

Caminho no OSS onde o script está armazenado. O caminho deve estar no formato oss://**/*.sh.

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

Arguments

Argumentos para o script da ação de bootstrap. Eles especificam os valores das variáveis referenciadas pelo script.

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

Execution scope

Selecione Cluster.

Cluster

Execution time

Escolha After Component Startup.

After Component Startup

Failure policy

Opte por Proceed.

Proceed With Execution

Etapa 4: Tratar nós especiais

  1. Atualize os nós Gateway criados via EMR CLI.

    • Caso o nó Gateway tenha sido criado no console EMR, ele já está coberto pelas etapas anteriores.

    • Se você criou um nó Gateway usando o EMR CLI, ele existe de forma independente e exige a execução manual do script de atualização. Além disso, é necessário atualizar previamente os nós elásticos durante a inicialização.

  2. Substitua o JindoSDK para services como Trino, Presto e Impala.

    Em clusters EMR com versões anteriores à v3.53.0 ou v5.19.0, o JindoSDK para services como Trino, Presto e Impala não é atualizado automaticamente. Substitua manualmente o arquivo JAR do JindoSDK no caminho plugins desses services pela versão desejada e reinicie-os para aplicar as alterações.

Etapa 5: Reiniciar services

Reinicie os services relevantes para garantir que eles carreguem as correções mais recentes.

  • Ao criar um novo cluster, reinicie services como Hive, Presto, Impala, Flink, Ranger, Spark e Zeppelin.

  • Na expansão com adição de novos nós, reinicie os services nesses nós específicos.

Cenário 3: Reverter o JindoSDK

Se o seu cluster executa a versão EMR v5.6.0 ou posterior, ou EMR v3.40.0 ou posterior, e você encontrar problemas durante uma atualização que exijam a reversão para a versão padrão do JindoSDK, siga estas etapas.

Etapa 1: Preparar os scripts de reversão

  1. Faça login no nó mestre do cluster EMR. Para mais informações, consulte Log on to a cluster.

  2. Baixe o pacote de patches para o diretório home do usuário emr-user e descompacte-o.

    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

    A seguinte saída é retornada:

    -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

Etapa 2: Configurar as informações dos nós

  • Configuração manual das informações dos nós

    1. Edite o arquivo hosts no pacote de patches.

      vim hosts
    2. Adicione os hostnames de todos os nós do cluster, como master-1-1 ou core-1-1, inserindo um hostname por linha.

      Por exemplo, o arquivo hosts deve conter o seguinte conteúdo:

      master-1-1
      core-1-1
      core-1-2
  • Preenchimento automático das informações dos nós

    Também é possível executar o comando abaixo para recuperar todas as informações dos nós. Se o comando não conseguir preencher o arquivo hosts, será necessário adicionar as informações manualmente.

    cat  /usr/local/taihao-executor-all/data/cache/.cluster_context | jq --raw-output '.nodes[].hostname.alias[]' > hosts

Etapa 3: Executar a reversão

Execute o comando a seguir para reverter todas as alterações.

./revert_all.sh

O script termina quando a saída exibe ### DONE.

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

Etapa 4: Verificar a reversão

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

O exemplo a seguir mostra a saída após a reversão para a versão 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

Etapa 5: Tratar nós especiais

  1. Atualize os nós Gateway criados via EMR CLI.

    • Caso o nó Gateway tenha sido criado no console EMR, ele já está coberto pelas etapas anteriores.

    • Se você criou um nó Gateway usando o EMR CLI, ele existe de forma independente e exige a execução manual do script de atualização. Além disso, é necessário atualizar previamente os nós elásticos durante a inicialização.

  2. Substitua o JindoSDK para services como Trino, Presto e Impala.

    Em clusters EMR com versões anteriores à v3.53.0 ou v5.19.0, o JindoSDK para services como Trino, Presto e Impala não é revertido automaticamente. Substitua manualmente o arquivo JAR do JindoSDK no caminho plugins desses services pela versão padrão e reinicie-os para aplicar as alterações.

Etapa 6: Reiniciar services

Nota

Interrompa quaisquer jobs YARN (aplicações) em execução, como jobs Spark Streaming ou Flink, e então realize uma reinicialização gradual em lote do service YARN NodeManager.

Para aplicar a reversão, reinicie services como Hive, Presto, Impala, Flink, Ranger, Spark e Zeppelin.

Por exemplo, para reiniciar o service Hive, acesse a página do service Hive no seu cluster EMR e selecione More > Restart no canto superior direito.