Todos os produtos
Search
Central de documentação

Object Storage Service:Use o JindoFuse para acessar o OSS-HDFS

Última atualização: Sep 24, 2026

Se você deseja mapear o OSS-HDFS para um sistema de arquivos local e, em seguida, acessar objetos no OSS-HDFS chamando a api padrão do HDFS e execute operações, como leitura, gravação e exclusão de objetos, use o JindoFuse para acessar o OSS-HDFS. O JindoFuse é uma ferramenta que permite acessar sistemas de arquivos distribuídos open source e é compatível com POSIX. O JindoFuse permite que aplicações de IA usem diretamente o OSS-HDFS para armazenamento e processamento de dados.

Pré-requisitos

O OSS-HDFS está ativado para um bucket e as permissões foram concedidas para acessar o OSS-HDFS. Para mais informações, consulte Enable OSS-HDFS.

Preparativos

Você pode usar um dos seguintes métodos para acessar o OSS-HDFS:

  • Para acessar o OSS-HDFS usando um cluster EMR do Alibaba Cloud, certifique-se de que um cluster EMR com versão 3.44.0 ou posterior, ou 5.10.0 ou posterior, foi criado. Os clusters EMR que atendem a esses requisitos já vêm integrados com o JindoFuse por padrão. Para mais informações, consulte Create a cluster.

  • Caso não queira acessar o OSS-HDFS por meio de um cluster EMR do Alibaba Cloud, verifique se o JindoSDK 4.6.2 ou posterior está instalado e implantado. Para mais informações, consulte Deploy JindoSDK in a non-EMR cluster.

Procedimento

  1. configure as variáveis de ambiente.

    • Se você for acessar o OSS-HDFS usando um cluster EMR do Alibaba Cloud, ignore esta etapa e prossiga para Step 2.

    • Caso não queira acessar o OSS-HDFS por meio de um cluster EMR do Alibaba Cloud, execute as etapas a seguir para configure o JindoFuse:

      1. Conecte-se à instância ECS. Para mais informações, consulte Connect to an ECS instance.

      2. modifique as variáveis de ambiente.

        Neste exemplo, o jindosdk-x.x.x está instalado no caminho root/. O x.x.x indica o número da versão do JindoSDK. modifique as variáveis de ambiente com base no caminho real onde o JindoSDK está 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. configure o arquivo de configuração.

        1. crie um arquivo de configuração chamado jindosdk.cfg no diretório conf/ do JindoSDK.

        2. Adicione os seguintes itens de configuração ao arquivo de configuração jindosdk.cfg:

          [common]
          logger.dir = /tmp/fuse-log
          
          [jindosdk]
          # The following example uses the China (Hangzhou) region. Replace it with your actual region.
          fs.oss.endpoint = cn-hangzhou.oss-dls.aliyuncs.com
          # Configure the AccessKey ID and AccessKey secret for accessing OSS-HDFS.
          fs.oss.accessKeyId = LTAI****************    
          fs.oss.accessKeySecret = yourAccessKeySecret
  2. Monte o OSS-HDFS.

    1. execute o seguinte comando para crie um ponto de montagem:

      mkdir -p <mount-point>
    2. execute o seguinte comando para montar o OSS-HDFS:

      jindo-fuse <mount_point> -ouri=[<oss_path>]

      defina -ouri para o caminho dls que deseja mapear. O caminho pode ser o diretório raiz ou um subdiretório do bucket. Após execute o comando, um processo daemon em segundo plano inicia a montagem do <oss_path> especificado no ponto de montagem do sistema de arquivos local. O ponto de montagem é especificado por <mount_point>.

      Para mais informações sobre as opções de montagem que podem ser configuradas ao montar o OSS-HDFS, consulte Appendix 2: Mount options.

    3. execute o seguinte comando para verificar se o OSS-HDFS está montado:

      ps -ef | grep jindo-fuse

      Se o seguinte resultado for retornado, o OSS-HDFS está montado:

      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 execute operações de leitura e gravação em objetos no OSS-HDFS.

    • crie um diretório

      mkdir /mnt/oss/dir1
    • Liste todos os subdiretórios no diretório /mnt/oss/

      ls /mnt/oss/
    • Grave um objeto

      echo "hello world" > /mnt/oss/dir1/hello.txt
    • Leia um objeto

      cat /mnt/oss/dir1/hello.txt
    • Exclua um diretório

      rm -rf /mnt/oss/dir1/
  4. Opcional. Desmonte o OSS-HDFS.

    Você pode desmontar o OSS-HDFS usando um dos seguintes métodos:

    • Desmonte o OSS-HDFS manualmente

      umount <mount_point>
    • Desmonte o OSS-HDFS automaticamente

      -oauto_unmount

      Você pode execute o comando anterior para enviar um SIGINT ao processo jindo-fuse usando killall -9 jindo-fuse. O OSS-HDFS é desmontado automaticamente antes do encerramento do processo.

Perguntas frequentes

Como solucionar erros do JindoFuse?

Se você usar o JindoSDK para chamar operações de api, poderá visualize os detalhes das mensagens de erro quando os erros forem reportados. Se usar o JindoFuse, visualize apenas as mensagens de erro predefinidas do sistema operacional.

ls: /mnt/oss/: Input/output error

Para identificar a causa de um erro, encontre o arquivo jindosdk.log no caminho especificado pelo item de configuração logger.dir do JindoSDK. A mensagem a seguir é um erro comum de autenticação que pode aparecer 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 a mensagem de erro acima apareça, verifique se o endpoint, o bucket e o ARN da função estão configurados corretamente. Para mais informações, consulte Quick start: Connect a non-EMR cluster to the OSS-HDFS service.

Se você encontrar um erro de programação, envie um ticket para solicitar suporte técnico.

Anexo 1: Operações suportadas

A tabela a seguir descreve as operações de api baseadas em POSIX suportadas pelo JindoFuse.

Operação

Descrição

getattr()

Consulta os atributos de um objeto. Esta operação é semelhante ao comando ls.

mkdir()

crie um diretório. Esta operação é semelhante ao comando mkdir.

rmdir()

Exclui um diretório. Esta operação é semelhante ao comando rm -rf.

unlink()

Exclui um objeto. Esta operação é semelhante ao comando unlink.

rename()

Renomeia um objeto ou um diretório. Esta operação é semelhante ao comando mv.

read()

Lê dados em sequência.

pread()

Lê dados de forma aleatória.

write()

Grava dados em sequência.

pwrite()

Grava dados de forma aleatória.

flush()

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

fsync()

Descarrega dados da memória para os discos.

release()

Fecha um objeto.

readdir()

Lê um diretório.

create()

crie um objeto.

open() O_APPEND

Abre um objeto usando o modo de anexação.

open() O_TRUNC

Abre um objeto usando o modo de sobrescrita.

ftruncate()

Trunca um objeto aberto.

truncate()

Trunca um objeto fechado. Esta operação é semelhante ao comando truncate -s.

lseek()

Especifica o local de leitura e gravação em um objeto aberto.

chmod()

modifique as permissões de um objeto. Esta operação é semelhante ao comando chmod.

access()

Consulta as permissões de um objeto.

utimes()

modifique os horários em que um objeto é armazenado e alterado.

setxattr()

modifique o atributo xattr de um objeto.

getxattr()

Consulta o atributo xattr de um objeto.

listxattr()

Lista o atributo xattr de um objeto.

removexattr()

Exclui o atributo xattr de um objeto.

lock()

Suporta bloqueios POSIX. Esta operação é semelhante ao comando fcntl.

fallocate()

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

symlink()

crie um link simbólico. O link simbólico está disponível apenas no OSS-HDFS e não suporta aceleração de cache.

readlink()

Lê um link simbólico.

Anexo 2: Opções de montagem

A tabela a seguir descreve as opções que podem ser configuradas para usar o JindoFuse na montagem de objetos do OSS-HDFS em um sistema de arquivos local.

Opção

Obrigatória

Descrição

Exemplo

uri

Sim

O caminho dls que você deseja mapear. O caminho pode ser o diretório raiz do bucket, como -ouri=oss://bucket.endpoint/. Também pode ser um subdiretório do bucket, 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 processo daemon é usado para iniciar o processo do JindoFuse em segundo plano. Se você usar esta opção, recomendamos ative os logs do terminal.

-f

d

Não

ative o modo de depuração. Se o modo de depuração for ativado, o processo do JindoFuse é iniciado em primeiro plano. Ao usar esta opção, recomendamos ative os logs do terminal.

-d

auto_unmount

Não

Desmonta automaticamente o ponto de montagem após o encerramento do processo do JindoFuse.

-oauto_unmount

ro

Não

Monta objetos do OSS-HDFS no modo somente leitura. Após ativar esta opção, não é possível execute operações de gravação.

-oro

direct_io

Não

Permite a leitura e gravação de objetos sem a necessidade de cache de página.

-odirect_io

kernel_cache

Não

Usa o cache do kernel para otimizar o desempenho de leitura.

-okernel_cache

auto_cache

Não

ative o cache automático por padrão. Ao contrário do kernel-cache, o auto-cache permite o descarte automático do cache caso o tamanho do objeto ou o horário de modificação do objeto seja alterado.

-oauto_cache

entry_timeout

Não

O período de retenção do nome do objeto no cache durante a leitura do objeto. Unidade: segundos. Esta opção é usada para otimizar o desempenho. O valor 0 indica que o nome do objeto não é armazenado em cache. Valor padrão: 0,1.

-oentry_timeout=60

attr_timeout

Não

O período de retenção dos atributos do objeto no cache. Unidade: segundos. Esta opção é usada para otimizar o desempenho. O valor 0 indica que os atributos do objeto não são armazenados em cache. Valor padrão: 0,1.

-oattr_timeout=60

negative_timeout

Não

O período de retenção do nome do objeto no cache caso a leitura do objeto falhe. Unidade: segundos. Esta opção é usada para otimizar o desempenho. O valor 0 indica que o nome do objeto não é armazenado em cache. Valor padrão: 0,1.

-onegative_timeout=0

jindo_entry_size

Não

O número de diretórios armazenados em cache. Esta opção é usada para otimizar o desempenho do readdir. O valor 0 indica que os diretórios não são armazenados em cache. Valor padrão: 5000.

-ojindo_entry_size=5000

jindo_attr_size

Não

O número de atributos de objeto armazenados em cache. Esta opção é usada para otimizar o desempenho do getattr. O valor 0 indica que os atributos do objeto não são armazenados em cache. Valor padrão: 50000.

-ojindo_attr_sizet=50000

max_idle_threads

Não

O número máximo de threads ociosas. Valor padrão: 10.

-omax_idle_threads=10

metrics_port

Não

ative a porta HTTP para gerar métricas, como http://localhost:9090/brpc_metrics. Valor padrão: 9090.

-ometrics_port=9090

enable_pread

Não

Chama a operação pread para ler objetos.

-oenable_pread

Anexo 3: Itens de configuração

Item

Nó de configuração

Descrição

logger.dir

common

O diretório onde os logs são armazenados. Valor padrão: /tmp/jindodata-log.

logger.sync

common

O modo como os logs são retornados. Valores válidos:

  • true: retorna logs no modo síncrono.

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

logger.consolelogger

common

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

  • true: exibe os logs.

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

logger.level

common

Retorna logs cujos níveis sejam maiores ou iguais ao valor deste item de configuração.

  • Ativar logs do terminal

    Valores válidos para níveis de log: 0 a 6. Os itens a seguir mostram os mapeamentos entre os valores deste item de configuração e os níveis de log:

    • 0: TRACE

    • 1: DEBUG

    • 2 (padrão): INFO

    • 3: WARN

    • 4: ERROR

    • 5: CRITICAL

    • 6: OFF

  • Desativar logs do terminal

    Um nível de log menor ou igual a 1 indica WARN. Um nível de log maior que 1 indica INFO.

logger.verbose

common

Retorna logs detalhados (Verbose) cujos níveis sejam maiores ou iguais ao valor deste item de configuração. Valores válidos: 0 a 99. Valor padrão: 0. O valor 0 indica que nenhum log detalhado é retornado.

logger.cleaner.enable

common

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

  • true: ative a limpeza de logs.

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

fs.oss.endpoint

jindosdk

O endpoint usado para acessar o OSS-HDFS. Exemplo: cn-hangzhou.oss-dls.aliyuncs.com.

fs.oss.accessKeyId

jindosdk

O AccessKey ID usado para acessar o OSS-HDFS.

fs.oss.accessKeySecret

jindosdk

O AccessKey secret usado para acessar o OSS-HDFS.