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.
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=falseao arquivo core-site.xml.Na aba Configure do service Configure, adicione o item de configuração
spark.hadoop.fs.jdo.committer.allow.concurrent=falseao 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
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.
Faça login no nó mestre do cluster EMR. Para mais informações, consulte Log on to a cluster.
-
Baixe o pacote de patches para o diretório home do usuário
emr-usere 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 -
Baixe o pacote do JindoSDK
jindosdk-{VERSION}.tar.gze 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 -lO diretório
jindosdk-patchesconté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
-
Edite o arquivo
hostsno pacote de patches.vim hosts -
Adicione os hostnames de todos os nós do cluster, como
master-1-1oucore-1-1, inserindo um hostname por linha.Por exemplo, o arquivo
hostsdeve 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.
Na página Configure do service HADOOP-COMMON, clique em na aba core-site.xml.
-
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/pluginspara/opt/apps/JINDOSDK/jindosdk-current/plugins.
Etapa 5: Tratar nós especiais
-
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.
-
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
pluginsdesses 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
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 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
-
Execute os comandos abaixo para baixar
jindosdk-patches.tar.gz,jindosdk-{VERSION}-{PLATFORM}.tar.gzebootstrap_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 -lA 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 -
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.NotaPara expandir um cluster existente, use a opção
-genpara gerar um pacote de atualização leve.Para criar um novo cluster, utilize a opção
-gen-fullpara 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.2Apó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.gzQuando a compilação for concluída, o pacote de patches
jindosdk-bootstrap-patches.tar.gzserá 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 |
|
|
Arguments |
Argumentos para o script da ação de bootstrap. Eles especificam os valores das variáveis referenciadas pelo script. |
|
|
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
-
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.
-
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
pluginsdesses 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
Faça login no nó mestre do cluster EMR. Para mais informações, consulte Log on to a cluster.
-
Baixe o pacote de patches para o diretório home do usuário
emr-usere 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 -lA 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
-
Edite o arquivo
hostsno pacote de patches.vim hosts -
Adicione os hostnames de todos os nós do cluster, como
master-1-1oucore-1-1, inserindo um hostname por linha.Por exemplo, o arquivo
hostsdeve 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
-
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.
-
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
pluginsdesses services pela versão padrão e reinicie-os para aplicar as alterações.
Etapa 6: Reiniciar services
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 no canto superior direito.