Todos os produtos
Search
Central de documentação

Object Storage Service:Montagem e acesso com JindoFuse

Última atualização: Jul 03, 2026

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

  1. 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:

      1. Conecte-se à instância ECS. Veja Conectar-se a uma instância ECS para orientações.

      2. 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
      3. Inclua um arquivo de configuração.

        1. Crie um arquivo chamado jindosdk.cfg dentro do diretório conf/ do JindoSDK.

        2. 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
  2. Monte o OSS-HDFS.

    1. Crie um ponto de montagem.

      mkdir -p <mount-point>
    2. 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.

    3. Verifique se a montagem foi concluída com sucesso executando o seguinte comando:

      ps -ef | grep jindo-fuse

      A 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
  3. 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/
  4. Opcional. Desmonte o OSS-HDFS.

    Existem duas formas de desmontar o sistema:

    • Desmontagem manual

      umount <mount_point>
    • Desmontagem automática

      -oauto_unmount

      Ao 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.

Apêndice 1: Recursos suportados

O JindoFuse oferece suporte às seguintes APIs POSIX:

Recursos

Descrição

getattr()

Consulta atributos de um objeto, funcionando de maneira similar ao comando ls.

mkdir()

Cria um diretório, equivalente ao comando mkdir.

rmdir()

Remove um diretório, semelhante ao comando rm -rf.

unlink()

Exclui um objeto, correspondendo ao comando unlink.

rename()

Renomeia um objeto ou diretório, assim como o comando mv.

read()

Lê dados sequencialmente.

pread()

Lê dados aleatoriamente.

write()

Grava dados sequencialmente.

pwrite()

Grava dados aleatoriamente.

flush()

Transfere dados da memória para o cache do kernel.

fsync()

Persiste dados da memória em disco.

release()

Fecha o arquivo aberto.

readdir()

Lê o conteúdo de um diretório.

create()

Cria um novo arquivo.

open() O_APPEND

Abre um objeto no modo de anexação.

open() O_TRUNC

Abre o arquivo no modo de sobrescrita.

ftruncate()

Trunca um arquivo que já está aberto.

truncate()

Trunca um arquivo sem abri-lo, similar a truncate -s.

lseek()

Define a posição de leitura e escrita em um objeto aberto.

chmod()

Altera as permissões de um objeto, tal qual o comando chmod.

access()

Verifica as permissões aplicadas a um objeto.

utimes()

Atualiza os timestamps de armazenamento e modificação de um objeto.

setxattr()

Modifica o atributo xattr de um objeto.

getxattr()

Recupera o atributo xattr de um objeto.

listxattr()

Lista os atributos xattr associados a um objeto.

removexattr()

Remove o atributo xattr de um objeto.

lock()

Oferece suporte a bloqueios POSIX, funcionando como o comando fcntl.

fallocate()

Pré-aloca espaço físico para um arquivo.

symlink()

Gera um link simbólico, disponível exclusivamente no OSS-HDFS e sem suporte a aceleração de cache.

readlink()

Lê o destino de um link simbólico.

Apêndice 2: Opções de montagem

A tabela a seguir detalha as opções configuráveis para montar objetos do OSS-HDFS em um sistema de arquivos local usando o JindoFuse.

Nome

Obrigatório

Descrição

Exemplo

uri

Sim

Caminho dls a ser mapeado. Pode apontar para o diretório raiz do bucket, como -ouri=oss://bucket.endpoint/, ou para um subdiretório, como -ouri=oss://bucket.endpoint/subdir.

-ouri=oss://examplebucket.cn-beijing.oss-dls.aliyuncs.com/

f

Não

Inicia o processo do JindoFuse. Por padrão, um daemon executa o processo em segundo plano. Ao usar esta opção, recomenda-se ativar os logs de terminal.

-f

d

Não

Habilita o modo de depuração, iniciando o processo do JindoFuse em primeiro plano. Recomenda-se ativar os logs de terminal quando esta opção estiver ativa.

-d

auto_unmount

Não

Desmonta automaticamente o ponto de montagem quando o processo do JindoFuse é encerrado.

-oauto_unmount

ro

Não

Monta o recurso como somente leitura, impedindo operações de escrita.

-oro

direct_io

Não

Permite leitura e escrita de objetos ignorando o page cache.

-odirect_io

kernel_cache

Não

Utiliza o cache do kernel para melhorar o desempenho de leitura.

-okernel_cache

auto_cache

Não

Cache automático ativado por padrão. Diferente de kernel_cache, esse cache é invalidado caso o tamanho do arquivo ou o horário de modificação seja alterado.

-oauto_cache

entry_timeout

Não

Tempo de retenção do nome do objeto no cache durante leituras, em segundos. Serve para otimizar o desempenho. O valor 0 desativa o cache de nomes. Valor padrão: 0,1.

-oentry_timeout=60

attr_timeout

Não

Período de retenção dos atributos do objeto no cache, em segundos. Usado para otimização de desempenho. O valor 0 desativa o cache de atributos. Valor padrão: 0,1.

-oattr_timeout=60

negative_timeout

Não

Tempo de retenção do nome do objeto no cache quando há falha na leitura, em segundos. Auxilia na otimização de desempenho. O valor 0 impede o cache do nome. Valor padrão: 0,1.

-onegative_timeout=0

jindo_entry_size

Não

Quantidade de diretórios mantidos em cache para otimizar o desempenho do readdir. O valor 0 desativa o cache de diretórios. Valor padrão: 5000.

-ojindo_entry_size=5000

jindo_attr_size

Não

Número de atributos de objeto armazenados em cache para melhorar o desempenho do getattr. O valor 0 desativa o cache de atributos. Valor padrão: 50000.

-ojindo_attr_size=50000

max_idle_threads

Não

Limite máximo de threads ociosas. Valor padrão: 10.

-omax_idle_threads=10

metrics_port

Não

Habilita uma porta HTTP para exportação de métricas, por exemplo http://localhost:9090/brpc_metrics. Valor padrão: 9090.

-ometrics_port=9090

enable_pread

Não

Habilita o uso da interface pread para leitura de arquivos.

-oenable_pread

Apêndice 3: Itens de configuração

Parâmetro

Nó de configuração

Descrição

logger.dir

common

Diretório destinado ao armazenamento de logs. Valor padrão: /tmp/jindodata-log.

logger.sync

common

Modo de retorno dos logs. Valores válidos:

  • true: retorna logs em modo síncrono.

  • false (padrão): retorna logs em modo assíncrono.

logger.consolelogger

common

Define se os logs devem ser exibidos. Valores válidos:

  • true: direciona a saída de logs para o terminal.

  • false (padrão): não exibe logs.

logger.level

common

Retorna logs cujo nível seja igual ou superior ao valor definido neste item de configuração.

  • Ative logs no terminal

    Valores válidos para níveis de log: 0 a 6. A relação entre os valores e os respectivos níveis é:

    • 0: TRACE

    • 1: DEBUG

    • 2 (padrão): INFO

    • 3: WARN

    • 4: ERROR

    • 5: CRITICAL

    • 6: OFF

  • Desativar logs no terminal

    Um nível de log menor ou igual a 1 corresponde a WARN. Níveis maiores que 1 correspondem a INFO.

logger.verbose

common

Retorna logs detalhados (Verbose) com nível igual ou superior ao valor configurado. Valores válidos: 0 a 99. Valor padrão: 0. O valor 0 indica que nenhum log Verbose será retornado.

logger.cleaner.enable

common

Define se a limpeza de logs deve ser ativada. Valores válidos:

  • true: ativa a limpeza de logs.

  • false (padrão): desativa a limpeza de logs.

fs.oss.endpoint

jindosdk

Endpoint utilizado para acessar o OSS-HDFS. Exemplo: cn-hangzhou.oss-dls.aliyuncs.com.

fs.oss.accessKeyId

jindosdk

AccessKey ID necessário para acessar o OSS-HDFS.

fs.oss.accessKeySecret

jindosdk

AccessKey Secret necessário para acessar o OSS-HDFS.