Durante el desarrollo de datos, puede utilizar datasets en nodos como Shell, Python y Notebook para leer y escribir información en Object Storage Service (OSS) o Apsara File Storage NAS (NAS). También puede montar un dataset como almacenamiento cuando cree una instancia de un entorno de desarrollo personal.
Se recomienda consultar Manage datasets para aprender a crear un dataset.
Descripción general
Los datasets permiten leer y escribir datos almacenados en OSS y NAS directamente desde DataWorks. Puede crear varias versiones de un dataset, dar seguimiento a los cambios con el tiempo y volver a una versión anterior si lo necesita.
Límites
Los datasets solo son compatibles con la nueva versión de DataStudio.
Resource group: Solo puede acceder a los datasets desde los nodos de desarrollo de datos mediante un Serverless resource group.
Objetos compatibles: Los datasets solo se admiten en Shell nodes, Python nodes, Notebooks for basic development y personal development environments. Puede montar un máximo de 5 datasets en cada objeto.
Tipo de almacenamiento: Los datasets admiten Object Storage Service (OSS) y Apsara File Storage NAS (NAS) mediante el protocolo NFS.
Permisos: Si el destino de montaje del dataset se configura como de solo lectura, no podrá modificar ni eliminar las carpetas o archivos que contiene. Cualquier intento generará un error de permiso.
Uso de datasets en nodos
En esta sección se explica cómo montar un dataset de OSS en un nodo. En este ejemplo, creará un dataset de DataWorks respaldado por OSS, montará la ruta de OSS oss://datasets-oss.oss-cn-shanghai.aliyuncs.com/dataset01/v1/ en la ruta de montaje del dataset /mnt/data/dataset01 y, después, leerá y escribirá datos en el código del nodo.
Requisitos previos: crear un dataset
-
Create a bucket o create a file system.
Este ejemplo utiliza un dataset de OSS. Cree un bucket llamado
datasets-ossen la región China (Shanghai) y, a continuación, cree el directorio/dataset01/v1. -
En este ejemplo, cree un dataset de OSS llamado
datasets-ossy monte la ruta de OSSoss://datasets-oss.oss-cn-shanghai.aliyuncs.com/dataset01/v1/en/mnt/data/dataset01.
1. Configurar el dataset para un nodo
En la sección Debug Configuration de un nodo Shell o Python, configure el dataset datasets-oss.
Antes de publicar el nodo, también debe agregar el dataset en la sección Scheduling Settings.
Para usar un dataset, debe asignar como mínimo 0.5 unidades de cómputo (CU) al nodo.
|
Parámetro |
Descripción |
|
Datasets |
Especifica el dataset al que puede acceder el código del nodo actual.
En este ejemplo, seleccione el dataset de OSS |
|
Mount Path |
Ruta que utiliza el código del nodo para acceder al dataset. Este campo se llena automáticamente con la opción Default Mount Path configurada al definir el dataset. Importante
Si monta varios datasets en el mismo nodo, sus rutas de montaje no deben entrar en conflicto. |
|
Advanced Settings |
Este parámetro es opcional. Permite especificar, en formato JSON, las herramientas y parámetros para acceder a datos de OSS o las configuraciones para acceder a sistemas de archivos NAS.
|
|
Read Only |
De forma predeterminada, puede leer y escribir en el dataset dentro del nodo actual. Si el dataset se establece como de solo lectura para este nodo, no podrá escribir datos en su directorio de montaje desde el código del nodo. Cualquier intento de escritura generará un error de permiso. |
2. Usar el dataset en un nodo
Este ejemplo utiliza un nodo Shell. Después de adjuntar un dataset de OSS al nodo Shell, puede gestionar los datos de OSS en el código del nodo como si fueran archivos locales. En el siguiente ejemplo se usa la herramienta predeterminada ossfs 2.0 para escribir el archivo file01.txt en la ruta de montaje /mnt/data/dataset01 del dataset de OSS datasets-oss.
Código de ejemplo:
echo "Hello World" > /mnt/data/dataset01/file01.txt
ls -tl /mnt/data/dataset01
En el panel Debug Configurations, ubicado a la derecha, abra la pestaña Dataset y seleccione el dataset personalizado datasets-oss/V1. Confirme el mensaje de autorización correcta del resource group y asegúrese de que el interruptor Read-only esté desactivado. Después de ejecutar el nodo, el registro mostrará que se creó el archivo file01.txt (12 bytes, permisos: rwxrwxrwx), que el código de salida es 0, que el tiempo transcurrido es de 0.741 s y que el estado es FINISH.
Si durante la ejecución recibe el mensaje de error Job Submit Failed! submit job failed directly! Caused by: execute task failed, exception: [103:ILLEGAL_TASK]:Task with dataset need 0.5cu at least!, significa que la tarea tiene CU insuficientes. Aumente la asignación de CU del resource group a 0.5 como mínimo.
3. Comprobar los datos en OSS
Una vez que se ejecuta el código de 2. Use the dataset in a node, el archivo se escribe automáticamente en la ruta de almacenamiento de OSS que corresponde a la ruta de montaje del dataset. Puede consultar el archivo en dicha ruta de almacenamiento de OSS. En este ejemplo, la ruta de montaje /mnt/data/dataset01 del dataset de OSS datasets-oss se asigna a oss://datasets-oss.oss-cn-shanghai.aliyuncs.com/dataset01/v1/. La siguiente figura muestra un ejemplo de los datos escritos en la ruta de OSS.
En esta ruta encontrará el archivo escrito file01.txt (0.012 KB, almacenamiento estándar).
Uso de datasets en un entorno de desarrollo personal
Una vez definido un dataset, puede montarlo en una instancia de entorno de desarrollo personal cuando la cree o modifique. Después, podrá acceder a los datos del dataset directamente desde la terminal o un Notebook dentro de su directorio personal.
Requisitos previos: crear un dataset
-
Este ejemplo utiliza un dataset basado en NAS. Cree un dataset de NAS llamado
datasets-nasen la región China (Shanghai) y monte la ruta de NASnas://****.cn-shanghai.nas.aliyuncs.com/mnt/dataset02/v1/en/mnt/data/dataset02.
1. Configurar un dataset para el entorno personal
Cree una instancia de un personal development environment y seleccione el dataset de NAS existente datasets-nas.
En la página de configuración, seleccione datasets-nas en la lista desplegable Dataset y especifique su ruta de montaje correspondiente.
|
Parámetro |
Descripción |
|
Datasets |
Especifica el dataset al que puede acceder el código de la instancia. Asegúrese de que la VPC seleccionada para la instancia del entorno de desarrollo personal pueda conectarse al destino de montaje de NAS. En este ejemplo, seleccione el dataset de NAS |
|
Mount Path |
Ruta que utiliza el código de la instancia para acceder al dataset. En este ejemplo, monte la ruta del dataset de NAS Importante
Si monta varios datasets en la misma instancia de un entorno de desarrollo personal, sus rutas de montaje no deben entrar en conflicto. |
|
Advanced Settings |
Este parámetro es opcional. Puede usar JSON para especificar las configuraciones (el parámetro nasOptions) necesarias para acceder a un sistema de archivos Apsara File Storage NAS (NAS) que utilice el protocolo NFS. A continuación se muestra la configuración predeterminada. También puede consultar Manually mount an NFS file system para personalizar los valores de los parámetros. Importante
|
|
Read Only |
De forma predeterminada, puede leer y escribir en el dataset dentro de la instancia. Si el dataset se establece como de solo lectura para la instancia, no podrá escribir datos en su directorio de montaje desde el código de la instancia. Cualquier intento de escritura generará un error de permiso. |
2. Usar el dataset en un Notebook
En la parte superior de la página de DataStudio, cambie a personal development environment instance y, a continuación, cree un Notebook for basic development.
-
En el Notebook, agregue el siguiente contenido.
-
Escriba datos en la ruta especificada del dataset.
import os # Define the destination path and file name file_path = "/mnt/data/dataset02/file02.txt" # Make sure that the directory exists. If the directory does not exist, create it. os.makedirs(os.path.dirname(file_path),exist_ok=True) # Write the content content = "Hello World!" try: with open(file_path, "w", encoding="utf-8") as file: file.write(content) print(f"The file is successfully written to {file_path}") except Exception as e: print(f"Failed to write the file: {str(e)}") -
Lea datos de la ruta especificada del dataset.
file_path = "/mnt/data/dataset02/file02.txt" with open(file_path, "r") as file: content = file.read() content
-
-
Ejecute los dos fragmentos de código de Python por separado.
NotaAntes de ejecutar el código, ensure you have selected the correct Python kernel. Este ejemplo utiliza Python 3.11.9.
Primer fragmento de código: escriba datos en la ruta especificada del dataset.
import os # Define the destination path and file name file_path = "/mnt/data/dataset02/file02.txt" # Make sure that the directory exists. If the directory does not exist, create it. os.makedirs(os.path.dirname(file_path),exist_ok=True) # Write the content content = "Hello World!" try: with open(file_path, "w", encoding="utf-8") as file: file.write(content) print(f"The file is successfully written to {file_path}") except Exception as e: print(f"Failed to write the file: {str(e)}")Si el resultado es
The file is successfully written to /mnt/data/dataset02/file02.txt, la operación de escritura se completó correctamente. Segundo fragmento de código: lea datos de la ruta especificada del dataset.file_path = "/mnt/data/dataset02/file02.txt" with open(file_path, "r") as file: content = file.read() contentSi el resultado es
'Hello World!', la operación de lectura se completó correctamente.
3. Configurar la programación
En el lado derecho del nodo Notebook, haga clic en Scheduling Settings y agregue las opciones del dataset. Utilice los mismos parámetros que configuró para la instancia del entorno de desarrollo personal.
Ejemplos de configuración avanzada
Cuando configure un dataset, puede establecer configuraciones avanzadas para personalizar los parámetros correspondientes en formato JSON:
Cuando configure a dataset for a node, puede establecer configuraciones avanzadas para especificar las herramientas y parámetros necesarios para leer y escribir datos de OSS, o bien definir las configuraciones para leer y escribir datos en sistemas de archivos NAS.
Cuando configure a dataset for a personal development environment, puede establecer parámetros avanzados para especificar las configuraciones de lectura y escritura de datos en sistemas de archivos NAS.
Montaje de OSS con ossfs 2.0
ossfs 2.0 es un cliente que monta OSS para ofrecer acceso de alto rendimiento. Proporciona un alto rendimiento de lectura y escritura secuencial y aprovecha al máximo el ancho de banda de OSS. Es adecuado para aplicaciones intensivas en cómputo que requieren un alto rendimiento de E/S secuencial, como el entrenamiento de IA y el procesamiento de big data. Estos escenarios de carga de trabajo implican principalmente lecturas secuenciales y aleatorias, así como escrituras secuenciales (solo anexión), y no requieren semántica POSIX completa.
En la sección Advanced Settings, puede establecer parámetros avanzados. Separe varias opciones con una coma (,). Para obtener instrucciones sobre cómo usar parámetros avanzados y conocer más opciones de configuración, consulte ossfs 2.0 mount options. A continuación se muestran varios escenarios comunes:
-
Origen de datos inmutable: Si ninguno de los archivos que lee se modifica durante una tarea, puede establecer un tiempo de caché prolongado para reducir la cantidad de solicitudes de metadatos. Un escenario típico consiste en leer un lote de archivos existentes y generar un nuevo lote después del procesamiento.
{"mountOssType":"ossfs", "attr_timeout": "7200"} -
Operaciones rápidas de lectura y escritura: Use un tiempo de caché de metadatos corto para equilibrar la eficiencia de la caché y la actualización de los datos.
{"mountOssType":"ossfs", "attr_timeout": "3", "negative_timeout":"0"} -
Vista coherente para tareas distribuidas: De forma predeterminada, ossfs actualiza los datos de los archivos según la caché de metadatos. Use la siguiente configuración para lograr una vista sincronizada en varios nodos.
{ "mountOssType":"ossfs","negative_timeout": "0", "close_to_open":"false"} -
Error OOM causado por abrir demasiados archivos: Una alta concurrencia de tareas con una gran cantidad de archivos abiertos simultáneamente puede provocar problemas de falta de memoria (OOM). Use la siguiente configuración para aliviar la presión sobre la memoria.
{"mountOssType":"ossfs","readdirplus": "false", "inode_cache_eviction_threshold":"300000"}
Montaje de OSS con ossfs 1.0
ossfs 1.0 monta un bucket de OSS como un sistema de archivos local en un sistema Linux. En comparación con ossfs 2.0, ossfs 1.0 ofrece una compatibilidad más completa con las operaciones de archivos. Si encuentra incompatibilidades en las operaciones de archivos con ossfs 2.0, intente usar ossfs 1.0.
Para más información sobre los parámetros necesarios para montar con ossfs 1.0, consulte ossfs 1.0 mount options.
Montaje de OSS con JindoFuse
Puede usar el componente JindoFuse para montar un dataset de OSS en una ruta específica dentro de un contenedor. Esta herramienta es adecuada para los siguientes escenarios:
Desea leer datos de OSS como si fueran un dataset local, o bien el dataset es lo suficientemente pequeño para aprovechar la aceleración de la caché local de JindoFuse.
Necesita escribir datos en OSS.
En la sección Advanced Settings, puede establecer parámetros avanzados. Separe varias opciones con una coma (,). El siguiente código es solo un ejemplo. Para consultar las descripciones de los parámetros y más opciones de configuración, consulte JindoFuse User Guide y Use JindoFuse to mount and access data.
Actualmente, DataWorks solo admite parámetros con el formato key=value.
{
"mountOssType":"jindofuse",
"fs.oss.download.thread.concurrency": "2 × number of CPU cores",
"fs.oss.upload.thread.concurrency": "2 × number of CPU cores",
"attr_timeout": 3,
"entry_timeout": 0,
"negative_timeout": 0
}
Uso de un dataset de NAS
Para los datasets basados en NAS, puede especificar configuraciones (mediante el parámetro nasOptions) para acceder a un sistema de archivos Apsara File Storage NAS (NAS) basado en NFS. A continuación se muestra la configuración predeterminada. Para personalizar los valores de los parámetros, consulte Manually mount an NFS file system.
Solo se pueden montar sistemas de archivos NAS que usen el protocolo NFS.
Para NAS, solo se admite un parámetro de configuración avanzada:
nasOptions. Para personalizar los parámetros de montaje de NAS, establezca Advanced Configuration en{"nasOptions":"<ParameterName1=ParameterValue>, <ParameterName2=ParameterValue>,..."}.
{"nasOptions":"vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport"}
Preguntas frecuentes
¿Qué debo hacer si aparece el error "FileNotFoundError: /etc/oss-secret/AccessKeyId" al leer datos de un dataset de OSS?
Este error suele indicar que el resource group de DataWorks no pudo obtener las credenciales necesarias para acceder a OSS. Para solucionar el problema, siga estos pasos:
Compruebe que haya completado la autorización de OSS en el panel de configuración del dataset. El aviso de esta autorización aparece la primera vez que usa el dataset.
Compruebe que el resource group serverless se encuentre en un estado normal y no esté suspendido.
Si tanto la autorización como el estado del resource group son normales pero el error persiste, póngase en contacto con el soporte técnico para depurar el proceso de inyección de credenciales de ossfs.