Este tema describe cómo actualizar JindoSDK en clústeres EMR basados en x86 para diferentes escenarios.
Requisitos previos
Debe haber creado un clúster EMR basado en x86. Para obtener más información, consulte Create a cluster.
Escenario 1: Actualizar un clúster existente
Si cuenta con un clúster EMR que ejecuta EMR v5.6.0 o posterior, o EMR v3.40.0 o posterior, y necesita resolver known JindoData issues o utilizar nuevas funciones de JindoSDK, siga estos pasos para actualizar JindoSDK.
Al actualizar de JindoSDK 4.6.8 o anterior a 4.6.9 o posterior, o a una versión 6.x, cambia la ruta temporal predeterminada que JindoCommitter utiliza para los trabajos. Para evitar la pérdida de datos durante la actualización, inicie sesión en la página Services del clúster y agregue uno de los siguientes elementos de configuración antes de proceder:
En la pestaña Configure del servicio Hadoop-Common, agregue el elemento de configuración
fs.jdo.committer.allow.concurrent=falsea core-site.xml.En la pestaña Configure del servicio Configure, agregue el elemento de configuración
spark.hadoop.fs.jdo.committer.allow.concurrent=falsea spark-defaults.conf.
Después de actualizar JindoSDK en todos los nodos del clúster, incluidos los nodos Gateway, establezca el parámetro en true.
Paso 1: Preparar el paquete y los scripts de actualización
Determine la versión de JindoSDK necesaria para la actualización:
-
Acceso directo a OSS/OSS-HDFS:
Si utiliza JindoSDK únicamente para acceder directamente a Object Storage Service (OSS) u OSS-HDFS, compruebe si su dependencia local de Hadoop es una versión antigua, como una versión anterior a la 2.7. De ser así, podrían requerirse ajustes adicionales de compatibilidad.
-
Uso de servicios semigestionados:
Si utiliza servicios semigestionados como JindoCache, JindoAuth o JindoFSx, póngase en contacto con el equipo de soporte técnico de Alibaba Cloud EMR para confirmar la compatibilidad de la versión de JindoSDK y garantizar una actualización sin problemas.
Inicie sesión en el nodo maestro del clúster EMR. Para obtener más información, consulte Log on to a cluster.
-
Descargue el paquete de parches en el directorio principal de
emr-usery descomprímalo.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 -
Descargue el paquete de JindoSDK
jindosdk-{VERSION}.tar.gzy colóquelo en el directorio descomprimido.Este ejemplo actualiza JindoSDK en el clúster a la versión 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 -lEl directorio
jindosdk-patchescontiene los siguientes archivos:-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
Paso 2: Configurar la información de los nodos
-
Configurar manualmente la información de los nodos
-
Edite el archivo
hostsen el paquete de parches.vim hosts -
Agregue los nombres de host de todos los nodos del clúster, como
master-1-1ocore-1-1, con un nombre de host por línea.Por ejemplo, el archivo
hostscontiene el siguiente contenido:master-1-1 core-1-1 core-1-2
-
-
Llenar automáticamente la información de los nodos
También puede ejecutar el siguiente comando para recuperar toda la información de los nodos. Si el comando no logra llenar el archivo
hosts, deberá agregar la información de los nodos manualmente.cat /usr/local/taihao-executor-all/data/cache/.cluster_context | jq --raw-output '.nodes[].hostname.alias[]' > hosts
Paso 3: Ejecutar la actualización
Ejecute el script apply_all.sh para actualizar JindoSDK a la versión 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 ejemplo, para actualizar JindoSDK en el clúster a la versión 6.8.2:
./apply_all.sh 6.8.2
El script finaliza cuando la salida contiene ### DONE.
>>> updating ... master-1-1
>>> updating ... core-1-1
>>> updating ... core-1-2
### DONE
Paso 4: Modificar la configuración del clúster (para compatibilidad con la autenticación heredada de EMR OSS Ranger)
Si la autenticación de EMR OSS Ranger está habilitada y está actualizando JindoSDK desde EMR v3.51.2/v5.17.2 o anterior a una versión entre 6.5.0 y 6.7.2, podría encontrar problemas de compatibilidad. Se recomienda actualizar JindoSDK a la versión 6.7.3 o posterior y modificar la configuración del clúster de la siguiente manera.
En la página Configure del servicio HADOOP-COMMON, haga clic en la pestaña core-site.xml.
-
En la pestaña core-site.xml, busque y modifique el siguiente elemento de configuración.
Parámetro
Descripción
fs.jdo.plugin.dir
Establezca el directorio de carga del plugin en la ruta del plugin de la nueva versión de JindoSDK. Cambie el valor de
/opt/apps/RANGER/jindoauth-current/pluginsa/opt/apps/JINDOSDK/jindosdk-current/plugins.
Paso 5: Gestionar nodos especiales
-
Actualice los nodos Gateway creados mediante la CLI de EMR.
Si un nodo Gateway se creó en la consola de EMR, ya está cubierto por los pasos anteriores.
Si creó un nodo Gateway mediante la CLI de EMR, este existe de forma independiente y debe ejecutar el script de actualización en él manualmente. Además, debe actualizar los nodos elásticos con antelación al inicializarlos.
-
Reemplace JindoSDK para servicios como Trino, Presto e Impala.
Para clústeres EMR que ejecutan versiones anteriores a EMR v3.53.0 o v5.19.0, JindoSDK para servicios como Trino, Presto e Impala no se actualiza automáticamente. Debe reemplazar manualmente el archivo JAR de JindoSDK en la ruta
pluginsde estos servicios con la versión objetivo y reiniciar los servicios para aplicar los cambios.
Paso 6: Verificar la actualización
ls -l /opt/apps/JINDOSDK/jindosdk-current/lib
El siguiente ejemplo muestra la salida después de actualizar de la versión predeterminada 6.2.0 a la 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
Paso 7: Reiniciar servicios
Detenga cualquier trabajo (aplicación) de YARN en ejecución, como trabajos de Spark Streaming o Flink, y luego realice un reinicio progresivo por lotes del servicio YARN NodeManager.
Para aplicar la actualización, reinicie servicios como Hive, Presto, Impala, Flink, Ranger, Spark y Zeppelin.
Por ejemplo, para reiniciar el servicio Hive, vaya a la página del servicio Hive de su clúster EMR y seleccione en la esquina superior derecha.
Escenario 2: Escalar horizontalmente o crear un clúster
Cuando escala horizontalmente un clúster existente y necesita desplegar una nueva versión de JindoSDK, puede usar una acción de arranque en la consola de EMR para automatizar el proceso. Esto asegura que JindoSDK se actualice correctamente al crear un nuevo clúster o agregar nodos a uno existente. Siga estos pasos para realizar la actualización.
Paso 1: Crear un paquete de actualización de arranque
-
Ejecute los siguientes comandos para descargar
jindosdk-patches.tar.gz,jindosdk-{VERSION}-{PLATFORM}.tar.gzybootstrap_jindosdk.sh.Este ejemplo actualiza JindoSDK en el clúster a la versión 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 -lSe devuelve la siguiente salida:
-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 -
Ejecute el siguiente comando para crear el paquete de actualización.
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 escalar horizontalmente un clúster existente, utilice la opción
-genpara generar un paquete de actualización ligero.Para crear un nuevo clúster, utilice la opción
-gen-fullpara generar un paquete de actualización que contenga todo el contenido necesario.
Por ejemplo, para actualizar JindoSDK a la versión 6.8.2:
bash bootstrap_jindosdk.sh -gen 6.8.2Una vez creado el paquete de actualización, se muestra el siguiente mensaje.
Generated patch at /home/emr-user/jindo-patch/jindosdk-bootstrap-patches.tar.gzCuando finaliza la compilación, se genera el paquete de parches
jindosdk-bootstrap-patches.tar.gz.
Paso 2: Cargar el paquete de arranque
Cargue el paquete de parches y el script de arranque en OSS. Puede usar comandos de Hadoop desde dentro del clúster EMR, o utilizar herramientas como la consola de Alibaba Cloud OSS, ossutil u OSS Browser.
Por ejemplo, las rutas de OSS son oss://<bucket-name>/path/to/bootstrap_jindosdk.sh y 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/
Se devuelve la siguiente salida:
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
Paso 3: Agregar una acción de arranque
Agregue una acción de arranque en la consola de EMR. Para obtener más información, consulte Manage bootstrap actions.
Configure la acción de arranque con los ajustes de la siguiente tabla.
|
Parámetro |
Descripción |
Ejemplo |
|
Name |
El nombre de la acción de arranque. Por ejemplo, Upgrade JindoSDK. |
update_jindosdk |
|
Script location |
La ruta de OSS donde se almacena el script. La ruta del script debe tener el formato |
|
|
Arguments |
Los argumentos para el script de la acción de arranque. Estos argumentos especifican los valores de las variables a las que hace referencia el script. |
|
|
Execution scope |
Seleccione Cluster. |
Cluster |
|
Execution time |
Seleccione After Component Startup. |
After Component Startup |
|
Failure policy |
Seleccione Proceed. |
Proceed With Execution |
Paso 4: Gestionar nodos especiales
-
Actualice los nodos Gateway creados mediante la CLI de EMR.
Si un nodo Gateway se creó en la consola de EMR, ya está cubierto por los pasos anteriores.
Si creó un nodo Gateway mediante la CLI de EMR, este existe de forma independiente y debe ejecutar el script de actualización en él manualmente. Además, debe actualizar los nodos elásticos con antelación al inicializarlos.
-
Reemplace JindoSDK para servicios como Trino, Presto e Impala.
Para clústeres EMR que ejecutan versiones anteriores a EMR v3.53.0 o v5.19.0, JindoSDK para servicios como Trino, Presto e Impala no se actualiza automáticamente. Debe reemplazar manualmente el archivo JAR de JindoSDK en la ruta
pluginsde estos servicios con la versión objetivo y reiniciar los servicios para aplicar los cambios.
Paso 5: Reiniciar servicios
Reinicie los servicios correspondientes para asegurar que carguen las correcciones más recientes.
Si está creando un nuevo clúster, reinicie servicios como Hive, Presto, Impala, Flink, Ranger, Spark y Zeppelin.
Si está escalando horizontalmente agregando nuevos nodos, reinicie los servicios en esos nodos.
Escenario 3: Revertir JindoSDK
Si su clúster ejecuta EMR v5.6.0 o posterior, o EMR v3.40.0 o posterior, y encuentra problemas durante una actualización y necesita revertir a la versión predeterminada de JindoSDK, siga estos pasos.
Paso 1: Preparar los scripts de reversión
Inicie sesión en el nodo maestro del clúster EMR. Para obtener más información, consulte Log on to a cluster.
-
Descargue el paquete de parches en el directorio principal de
emr-usery descomprímalo.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 -lSe devuelve la siguiente salida:
-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
Paso 2: Configurar la información de los nodos
-
Configurar manualmente la información de los nodos
-
Edite el archivo
hostsen el paquete de parches.vim hosts -
Agregue los nombres de host de todos los nodos del clúster, como
master-1-1ocore-1-1, con un nombre de host por línea.Por ejemplo, el archivo
hostscontiene el siguiente contenido:master-1-1 core-1-1 core-1-2
-
-
Llenar automáticamente la información de los nodos
También puede ejecutar el siguiente comando para recuperar toda la información de los nodos. Si el comando no logra llenar el archivo
hosts, deberá agregar la información de los nodos manualmente.cat /usr/local/taihao-executor-all/data/cache/.cluster_context | jq --raw-output '.nodes[].hostname.alias[]' > hosts
Paso 3: Ejecutar la reversión
Ejecute el siguiente comando para revertir todos los cambios.
./revert_all.sh
El script finaliza cuando la salida contiene ### DONE.
>>> updating ... master-1-1
>>> updating ... core-1-1
>>> updating ... core-1-2
### DONE
Paso 4: Verificar la reversión
ls -l /opt/apps/JINDOSDK/jindosdk-current/lib
El siguiente ejemplo muestra la salida después de revertir a la versión 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
Paso 5: Gestionar nodos especiales
-
Actualice los nodos Gateway creados mediante la CLI de EMR.
Si un nodo Gateway se creó en la consola de EMR, ya está cubierto por los pasos anteriores.
Si creó un nodo Gateway mediante la CLI de EMR, este existe de forma independiente y debe ejecutar el script de actualización en él manualmente. Además, debe actualizar los nodos elásticos con antelación al inicializarlos.
-
Reemplace JindoSDK para servicios como Trino, Presto e Impala.
Para clústeres EMR que ejecutan versiones anteriores a EMR v3.53.0 o v5.19.0, JindoSDK para servicios como Trino, Presto e Impala no se revierte automáticamente. Reemplace manualmente el archivo JAR de JindoSDK en la ruta
pluginsde estos servicios con la versión predeterminada y reinicie los servicios para aplicar los cambios.
Paso 6: Reiniciar servicios
Detenga cualquier trabajo (aplicación) de YARN en ejecución, como trabajos de Spark Streaming o Flink, y luego realice un reinicio progresivo por lotes del servicio YARN NodeManager.
Para aplicar la reversión, reinicie servicios como Hive, Presto, Impala, Flink, Ranger, Spark y Zeppelin.
Por ejemplo, para reiniciar el servicio Hive, vaya a la página del servicio Hive de su clúster EMR y seleccione en la esquina superior derecha.