Para mapear o OSS-HDFS em um sistema de arquivos local e acessar objetos pela API padrão do HDFS — executando operações como leitura, escrita e exclusão —, use o JindoFuse. Essa ferramenta, compatível com POSIX, permite o acesso a sistemas de arquivos distribuídos open source e possibilita que aplicações de IA usem o OSS-HDFS diretamente.
Pré-requisitos
O OSS-HDFS deve estar habilitado para um bucket e as permissões de acesso devem ter sido concedidas. Para mais informações, consulte Habilitar o OSS-HDFS.
Preparações
Escolha um dos métodos abaixo para acessar o OSS-HDFS:
Para acessar o OSS-HDFS por meio de um cluster Alibaba Cloud EMR, verifique se foi criado um cluster EMR versão 3.44.0 ou posterior, ou 5.10.0 ou posterior. Clusters que atendem a esses requisitos já incluem o JindoFuse por padrão. Para mais detalhes, veja Criar um cluster.
Caso prefira não utilizar um cluster Alibaba Cloud EMR, garanta que o JindoSDK 4.6.2 ou superior esteja instalado e implantado. Consulte Implantar o JindoSDK em ambiente fora do EMR para instruções detalhadas.
Procedimento
-
Configure as variáveis de ambiente.
Se o acesso ao OSS-HDFS for feito via cluster Alibaba Cloud EMR, ignore esta etapa e vá para a Etapa 2.
-
Para ambientes sem cluster Alibaba Cloud EMR, siga os passos abaixo para configurar o JindoFuse:
Conecte-se à instância ECS. Veja Conectar-se a uma instância ECS para orientações.
-
Adicione as variáveis de ambiente necessárias.
Neste exemplo, o jindosdk-x.x.x está instalado no caminho root/. O termo x.x.x representa a versão do JindoSDK. Ajuste as variáveis conforme o diretório real onde o JindoSDK foi instalado.
export JINDOSDK_HOME=/root/jindosdk-x.x.x export HADOOP_CLASSPATH=`hadoop classpath`:${JINDOSDK_HOME}/lib/* export JINDOSDK_CONF_DIR=/root/jindosdk-x.x.x/conf export PATH=$PATH:$JINDOSDK_HOME/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${JINDOSDK_HOME}/lib/native -
Inclua um arquivo de configuração.
Crie um arquivo chamado jindosdk.cfg dentro do diretório conf/ do JindoSDK.
-
Insira os seguintes parâmetros no arquivo jindosdk.cfg:
[common] logger.dir = /tmp/fuse-log [jindosdk] # The following example uses the China (Hangzhou) region. Replace the region with your actual region. fs.oss.endpoint = cn-hangzhou.oss-dls.aliyuncs.com # Configure the AccessKey ID and AccessKey secret to access the OSS-HDFS service. fs.oss.accessKeyId = LTAI**************** fs.oss.accessKeySecret = yourAccessKeySecret
-
Monte o OSS-HDFS.
-
Crie um ponto de montagem.
mkdir -p <mount-point> -
Execute o comando abaixo para montar o OSS-HDFS:
jindo-fuse <mount_point> -ouri=[<oss_path>]Defina -ouri como o caminho dls que deseja mapear. Esse caminho pode ser o diretório raiz ou um subdiretório do bucket. Após a execução do comando, o <oss_path> especificado será montado no <mount_point> do sistema de arquivos local.
Para conhecer todas as opções disponíveis durante a montagem via Fuse, consulte Opções de montagem.
-
Verifique se a montagem foi concluída com sucesso executando o seguinte comando:
ps -ef | grep jindo-fuseA saída abaixo indica que o OSS-HDFS está montado corretamente:
root 2162 1 0 13:21 ? 00:00:00 jindo-fuse <mount_point> -ouri=[<oss_path>] root 2714 2640 0 13:39 pts/0 00:00:00 grep --color=auto jindo-fuse
-
-
Use o JindoFuse para operações de leitura e escrita de arquivos.
-
Crie um diretório
mkdir /mnt/oss/dir1 -
Visualize todos os subdiretórios em /mnt/oss/
ls /mnt/oss/ -
Gravar dados em um arquivo:
echo "hello world" > /mnt/oss/dir1/hello.txt -
Ler o conteúdo de um arquivo:
cat /mnt/oss/dir1/hello.txt -
Exclua um diretório
rm -rf /mnt/oss/dir1/
-
-
Opcional. Desmonte o OSS-HDFS.
Existem duas formas de desmontar o sistema:
-
Desmontagem manual
umount <mount_point> -
Desmontagem automática
-oauto_unmountAo enviar o sinal SIGINT para o processo jindo-fuse usando
killall -9 jindo-fuse, o OSS-HDFS é desmontado automaticamente antes do encerramento do processo.
-
Perguntas frequentes
Como solucionar erros no JindoFuse?
Ao chamar operações de API com o JindoSDK, os detalhes completos das mensagens de erro ficam visíveis. Já com o JindoFuse, apenas mensagens genéricas do sistema operacional são exibidas. Exemplo:
ls: /mnt/oss/: Input/output error
Para diagnosticar a causa raiz, localize o arquivo jindosdk.log no diretório definido pelo parâmetro logger.dir do JindoSDK. A mensagem a seguir ilustra um erro comum de autenticação ao usar o JindoFuse:
EMMDD HH:mm:ss jindofs_connectivity.cpp:13] Please check your Endpoint/Bucket/RoleArn.
Failed test connectivity, operation: mkdir, errMsg: [RequestId]: 618B8183343EA53531C62B74 [HostId]: oss-cn-shanghai-internal.aliyuncs.com [ErrorMessage]: [E1010]HTTP/1.1 403 Forbidden ...
Caso essa mensagem apareça, valide se o endpoint, o bucket e o ARN da função estão configurados corretamente. Consulte Guia de início rápido: Conectar um cluster não EMR ao serviço OSS-HDFS para mais detalhes.
Se ocorrer um erro no programa, envie um ticket.