No desenvolvimento de dados, é possível usar datasets em nós, como os nós Shell, Python e Notebook, para ler e gravar dados no Object Storage Service (OSS) ou no Apsara File Storage NAS (NAS). Além disso, ao criar uma instância de ambiente de desenvolvimento pessoal, você pode montar um dataset como armazenamento.
Consulte Gerencie datasets para saber como criar um dataset.
Visão geral
Os datasets permitem ler e gravar dados armazenados no OSS e no NAS diretamente no DataWorks. É possível criar várias versões de um dataset, acompanhar as alterações ao longo do tempo e reverter para uma versão anterior, se necessário.
Limitações
Os datasets são compatíveis apenas com a nova versão do DataStudio.
Grupo de recursos: É possível acessar datasets em nós de desenvolvimento de dados apenas por meio de um Serverless resource group.
Objetos compatíveis: Os datasets são compatíveis apenas com Shell nodes, Python nodes, Notebooks for basic development e personal development environments. Você pode montar no máximo 5 datasets em cada objeto.
Tipo de armazenamento: Os datasets são compatíveis com o Object Storage Service (OSS) e o Apsara File Storage NAS (NAS) usando o protocolo NFS.
Permissões: Se o destino de montagem de um dataset estiver definido como somente leitura, você não poderá modificar nem excluir as pastas ou arquivos dentro dele. Tentar fazer isso gera um erro de permissão.
Uso de datasets em nós
Esta seção explica como montar um dataset do OSS em um nó. Neste exemplo, você cria um dataset do DataWorks baseado no OSS, monta o caminho do OSS oss://datasets-oss.oss-cn-shanghai.aliyuncs.com/dataset01/v1/ no caminho de montagem do dataset /mnt/data/dataset01 e, em seguida, lê e grava dados no código do nó.
Pré-requisitos: crie um dataset
-
Crie um bucket ou crie um sistema de arquivos.
Este exemplo usa um dataset do OSS. Crie um bucket chamado
datasets-ossna região China (Shanghai) e, em seguida, crie o diretório/dataset01/v1. -
Neste exemplo, crie um dataset do OSS chamado
datasets-osse monte o caminho do OSSoss://datasets-oss.oss-cn-shanghai.aliyuncs.com/dataset01/v1/em/mnt/data/dataset01.
1. Configure o dataset para um nó
Na Debug Configuration de um nó Shell ou Python, configure o dataset datasets-oss.
Antes de publicar o nó, adicione também o dataset na seção Scheduling Settings.
Para usar um dataset, aloque pelo menos 0,5 unidades de computação (CUs) para o nó.
|
Parâmetro |
Descrição |
|
Datasets |
Especifica o dataset que o código do nó atual pode acessar.
Neste exemplo, selecione o dataset do OSS |
|
Mount Path |
O caminho que o código do nó usa para acessar o dataset. Este campo é preenchido automaticamente com o Default Mount Path configurado ao definir o dataset. Importante
Se você montar vários datasets no mesmo nó, os caminhos de montagem não podem entrar em conflito. |
|
Advanced Settings |
Este parâmetro é opcional. Você pode especificar as ferramentas e os parâmetros para acessar dados do OSS ou as configurações para acessar sistemas de arquivos do NAS no formato JSON.
|
|
Read Only |
Por padrão, você pode ler e gravar no dataset no nó atual. Se o dataset estiver definido como somente leitura para este nó, você não poderá gravar dados em seu diretório de montagem a partir do código do nó. Qualquer tentativa de gravação gera um erro de permissão. |
2. Usar o dataset em um nó
Este exemplo usa um nó Shell. Depois de anexar um dataset do OSS ao nó Shell, você pode gerenciar os dados do OSS no código do nó Shell como se fossem arquivos locais. O exemplo a seguir utiliza a ferramenta padrão ossfs 2.0 para gravar o arquivo file01.txt no caminho de montagem /mnt/data/dataset01 do dataset do OSS datasets-oss.
Código de exemplo:
echo "Hello World" > /mnt/data/dataset01/file01.txt
ls -tl /mnt/data/dataset01
No painel Debug Configurations à direita, abra a guia Dataset e selecione o dataset personalizado datasets-oss/V1. Confirme a mensagem de autorização bem-sucedida do grupo de recursos e certifique-se de que a opção Read-only esteja desativada. Depois de executar o nó, o log mostra que o arquivo file01.txt foi criado (12 bytes, permissões: rwxrwxrwx), o código de saída é 0, o tempo decorrido é 0,741s e o status é FINISH.
Se você receber a mensagem de erro Job Submit Failed! submit job failed directly! Caused by: execute task failed, exception: [103:ILLEGAL_TASK]:Task with dataset need 0.5cu at least! durante a execução, significa que a tarefa não tem CUs suficientes. Aumente a alocação de CUs para o grupo de recursos para pelo menos 0,5.
3. Verifique os dados no OSS
Depois da execução do código em 2. Use the dataset in a node, o arquivo é gravado automaticamente no caminho de armazenamento do OSS que corresponde ao caminho de montagem do dataset. Visualize o arquivo no caminho de armazenamento do OSS. Neste exemplo, o caminho de montagem /mnt/data/dataset01 do dataset do OSS datasets-oss corresponde a oss://datasets-oss.oss-cn-shanghai.aliyuncs.com/dataset01/v1/. A figura a seguir mostra um exemplo dos dados gravados no caminho do OSS.
Nesse caminho, você encontra o arquivo gravado file01.txt (0,012 KB, armazenamento Standard).
Uso de datasets em um ambiente de desenvolvimento pessoal
Depois de definir um dataset, você pode montá-lo em uma instância de ambiente de desenvolvimento pessoal ao criar ou modificar a instância. Em seguida, é possível acessar os dados do dataset diretamente no terminal ou em um Notebook dentro do seu diretório pessoal.
Pré-requisitos: crie um dataset
-
Este exemplo usa um dataset baseado no NAS. Crie um dataset do NAS chamado
datasets-nasna região China (Shanghai) e monte o caminho do NASnas://****.cn-shanghai.nas.aliyuncs.com/mnt/dataset02/v1/em/mnt/data/dataset02.
1. Configure um dataset para o ambiente pessoal
Crie uma instância de um personal development environment e selecione o dataset do NAS existente datasets-nas.
Na página de configuração, selecione datasets-nas na lista suspensa Dataset e especifique o caminho de montagem correspondente.
|
Parâmetro |
Descrição |
|
Datasets |
Especifica o dataset que o código da instância pode acessar. Certifique-se de que a VPC selecionada para a instância do ambiente de desenvolvimento pessoal possa se conectar ao destino de montagem do NAS. Neste exemplo, selecione o dataset do NAS |
|
Mount Path |
O caminho que o código da instância usa para acessar o dataset. Neste exemplo, monte o caminho do dataset do NAS Importante
Se você montar vários datasets na mesma instância de um ambiente de desenvolvimento pessoal, os caminhos de montagem não devem entrar em conflito. |
|
Advanced Settings |
Este parâmetro é opcional. Você pode usar JSON para especificar as configurações (o parâmetro nasOptions) para acessar um sistema de arquivos do Apsara File Storage NAS (NAS) que usa o protocolo NFS. O código a seguir mostra a configuração padrão. Para personalizar os valores dos parâmetros, consulte também Manually mount an NFS file system. Importante
|
|
Read Only |
Por padrão, você pode ler e gravar no dataset na instância. Se o dataset estiver definido como somente leitura para a instância, você não poderá gravar dados em seu diretório de montagem a partir do código dentro da instância. Qualquer tentativa de gravação gera um erro de permissão. |
2. Usar o dataset em um Notebook
Na parte superior da página do DataStudio, mude para a instância do personal development environment instance e, em seguida, crie um Notebook for basic development.
-
No Notebook, adicione o seguinte conteúdo.
-
Grave dados no caminho especificado no 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)}") -
Leia dados do caminho especificado no dataset.
file_path = "/mnt/data/dataset02/file02.txt" with open(file_path, "r") as file: content = file.read() content
-
-
Execute os dois trechos de código Python separadamente.
NotaAntes de executar o código, ensure you have selected the correct Python kernel. Este exemplo usa o Python 3.11.9.
Primeiro trecho de código: Grave dados no caminho especificado no 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)}")Se a saída for
The file is successfully written to /mnt/data/dataset02/file02.txt, a operação de gravação foi bem-sucedida. Segundo trecho de código: Leia dados do caminho especificado no dataset.file_path = "/mnt/data/dataset02/file02.txt" with open(file_path, "r") as file: content = file.read() contentSe a saída for
'Hello World!', a operação de leitura foi bem-sucedida.
3. Configure o agendamento
À direita do nó Notebook, clique em Scheduling Settings e adicione as opções do dataset. Use os mesmos parâmetros configurados para a instância do ambiente de desenvolvimento pessoal.
Exemplos de configuração avançada
Ao configurar um dataset, é possível definir configurações avançadas para personalizar os parâmetros relevantes no formato JSON:
Ao configure um dataset para um nó, defina configurações avançadas para especificar as ferramentas e os parâmetros de leitura e gravação de dados do OSS, ou as configurações de leitura e gravação de dados em sistemas de arquivos do NAS.
Ao configure um dataset para um ambiente de desenvolvimento pessoal, defina parâmetros avançados para especificar as configurações de leitura e gravação de dados em sistemas de arquivos do NAS.
Montar o OSS com o ossfs 2.0
O ossfs 2.0 é um cliente que monta o OSS para acesso de alto desempenho. Ele oferece alto throughput de leitura/gravação sequencial e utiliza totalmente a largura de banda do OSS. É ideal para aplicações de uso intensivo de computação que exigem alto desempenho de E/S sequencial, como treinamento de IA e processamento de big data. Esses cenários de carga de trabalho envolvem principalmente leituras sequenciais e aleatórias e gravações sequenciais (apenas anexação), e não exigem semântica POSIX completa.
Na seção Datasets > Advanced Settings, defina os parâmetros avançados. Separe várias opções com uma vírgula (,). Para obter instruções sobre como usar parâmetros avançados e mais opções de configuração, consulte ossfs 2.0 mount options. Os exemplos a seguir mostram vários cenários comuns:
-
Fonte de dados imutável: Se nenhum dos arquivos lidos for modificado durante uma tarefa, defina um tempo de cache longo para reduzir o número de solicitações de metadados. Um cenário típico é ler um lote de arquivos existentes e gerar um novo lote de arquivos após o processamento.
{"mountOssType":"ossfs", "attr_timeout": "7200"} -
Operações rápidas de leitura e gravação: Use um tempo de cache de metadados curto para equilibrar a eficiência do cache e a atualidade dos dados.
{"mountOssType":"ossfs", "attr_timeout": "3", "negative_timeout":"0"} -
Visualização consistente para tarefas distribuídas: Por padrão, o ossfs atualiza os dados do arquivo com base no cache de metadados. Use a configuração a seguir para obter uma visualização sincronizada em vários nós.
{ "mountOssType":"ossfs","negative_timeout": "0", "close_to_open":"false"} -
OOM causado pela abertura de muitos arquivos: A alta simultaneidade de tarefas com muitos arquivos abertos ao mesmo tempo pode causar problemas de falta de memória (OOM). Use a configuração a seguir para aliviar a pressão sobre a memória.
{"mountOssType":"ossfs","readdirplus": "false", "inode_cache_eviction_threshold":"300000"}
Montar o OSS com o ossfs 1.0
O ossfs 1.0 monta um bucket do OSS como um sistema de arquivos local em um sistema Linux. Em comparação com o ossfs 2.0, o ossfs 1.0 oferece suporte mais abrangente para operações de arquivos. Se você encontrar incompatibilidades em operações de arquivos com o ossfs 2.0, tente usar o ossfs 1.0.
Para obter mais informações sobre os parâmetros necessários para a montagem com o ossfs 1.0, consulte ossfs 1.0 mount options.
Montar o OSS com o JindoFuse
Você pode usar o componente JindoFuse para montar um dataset do OSS em um caminho especificado em um contêiner. Essa ferramenta é ideal para os seguintes cenários:
Você deseja ler dados do OSS como se fossem um dataset local, ou o dataset é pequeno o suficiente para se beneficiar da aceleração de cache local do JindoFuse.
Você precisa gravar dados no OSS.
Na seção Datasets > Advanced Settings, defina parâmetros avançados. Separe várias opções com uma vírgula (,). O código a seguir mostra apenas um exemplo. Para descrições de parâmetros e mais opções de configuração, consulte JindoFuse User Guide e Use JindoFuse to mount and access data.
Atualmente, o DataWorks aceita apenas parâmetros no 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
}
Usar um dataset do NAS
Para datasets baseados no NAS, especifique as configurações (usando o parâmetro nasOptions) para acessar um sistema de arquivos do Apsara File Storage NAS (NAS) baseado em NFS. O código a seguir mostra a configuração padrão. Para personalizar os valores dos parâmetros, consulte Manually mount an NFS file system.
É possível montar apenas sistemas de arquivos do NAS que usam o protocolo NFS.
Para o NAS, há suporte para apenas um parâmetro de configuração avançada:
nasOptions. Para personalizar os parâmetros de montagem do NAS, defina a Configuração Avançada como{"nasOptions":"<ParameterName1=ParameterValue>, <ParameterName2=ParameterValue>,..."}.
{"nasOptions":"vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport"}
Perguntas frequentes
O que devo fazer se o erro "FileNotFoundError: /etc/oss-secret/AccessKeyId" aparecer ao ler dados de um dataset do OSS?
Esse erro geralmente indica que o grupo de recursos do DataWorks não conseguiu obter as credenciais necessárias para acessar o OSS. Para solucionar o problema, execute as seguintes etapas:
Confirme se você concluiu a autorização do OSS no painel de configuração do dataset. O prompt dessa autorização aparece na primeira vez que você usa o dataset.
Confirme se o grupo de recursos serverless está em estado normal e não suspenso.
Se a autorização e o status do grupo de recursos estiverem normais, mas o erro persistir, entre em contato com o suporte técnico para investigar o processo de injeção de credenciais do ossfs.