Todos os produtos
Search
Central de documentação

Object Storage Service:Quick start: Connect a non-EMR cluster to the OSS-HDFS service

Última atualização: Sep 22, 2026

O service Hadoop Distributed File System (HDFS) do Object Storage Service (OSS), também conhecido como JindoFS, é totalmente compatível com as interfaces do HDFS e suporta operações no nível de diretório. O kit de desenvolvimento de software (SDK) Jindo permite que aplicativos de computação e análise do Apache Hadoop, como MapReduce, Hive, Spark e Flink, acessem o service OSS-HDFS. Este tópico descreve como implantar o JindoSDK em uma instância do Elastic Compute Service (ECS) e executar operações comuns para começar a usar o service OSS-HDFS.

Nota

Se você usar um cluster do E-MapReduce (EMR) do Alibaba Cloud, poderá conectá-lo ao service OSS-HDFS. Para mais informações, consulte EMR集群接入OSS-HDFS服务快速入门.

Pré-requisitos

Tutorial em vídeo

O vídeo a seguir mostra como conectar rapidamente um cluster não EMR ao service OSS-HDFS e executar operações comuns.

Procedimento

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

  2. Baixe e descompacte o pacote JAR do JindoSDK. Para baixar o pacote, acesse GitHub.

  3. Execute o comando a seguir para descompactar o pacote JAR do JindoSDK.

    O exemplo a seguir assume que o pacote foi descompactado no diretório jindosdk-x.x.x-linux.tar.gz. Se você usar uma versão diferente do JindoSDK, substitua o nome do pacote pelo nome real do arquivo.

    tar zxvf jindosdk-x.x.x-linux.tar.gz
    Nota

    x.x.x representa o número da versão do pacote JAR do JindoSDK.

  4. Configure as variáveis de ambiente.

    1. Configure JINDOSDK_HOME.

      O exemplo a seguir assume que o pacote foi descompactado no diretório /usr/lib/jindosdk-x.x.x-linux:

      export JINDOSDK_HOME=/usr/lib/jindosdk-x.x.x-linux
    2. Configure HADOOP_CLASSPATH.

      export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:${JINDOSDK_HOME}/lib/*
      Importante

      Implante o diretório de instalação e as variáveis de ambiente em todos os nós necessários.

  5. Configure a classe de implementação do service OSS-HDFS e o par de AccessKey.

    1. Execute o comando a seguir para abrir o arquivo de configuração core-site.xml do Hadoop.

      vim /usr/local/hadoop/etc/hadoop/core-site.xml
    2. No arquivo core-site.xml, configure a classe de implementação DLS do JindoSDK.

      <configuration>
          <property>
              <name>fs.AbstractFileSystem.oss.impl</name>
              <value>com.aliyun.jindodata.oss.JindoOSS</value>
          </property>
      
          <property>
              <name>fs.oss.impl</name>
              <value>com.aliyun.jindodata.oss.JindoOssFileSystem</value>
          </property>
      </configuration>
    3. No arquivo core-site.xml, configure o par de AccessKey da sua conta do Alibaba Cloud ou de um usuário do RAM que tenha as permissões necessárias.

      Para obter mais informações sobre as permissões necessárias para um usuário do RAM neste cenário, consulte Grant a RAM user permissions to connect a non-EMR cluster to the OSS-HDFS service.

      <configuration>
          <property>
              <name>fs.oss.accessKeyId</name>
              <value>xxx</value>
          </property>
      
          <property>
              <name>fs.oss.accessKeySecret</name>
              <value>xxx</value>
          </property>
      </configuration>
  6. Configure o endpoint do service OSS-HDFS.

    Configure um endpoint para acessar um bucket do OSS usando o service OSS-HDFS. O formato recomendado para o caminho de acesso é oss://<Bucket>.<Endpoint>/<Object>. Por exemplo, oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/exampleobject.txt. Após concluir a configuração, o JindoSDK usa o endpoint no caminho de acesso para acessar a API do service OSS-HDFS correspondente.

  7. Use comandos do HDFS Shell para executar operações comuns do OSS-HDFS.

    • Envie um arquivo

      Para enviar o arquivo examplefile.txt do diretório raiz local para o examplebucket, execute o seguinte comando:

      hdfs dfs -put examplefile.txt oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/
    • Baixe um arquivo

      Para baixar o arquivo exampleobject.txt do examplebucket para o diretório local /tmp, execute o seguinte comando:

      hdfs dfs -get oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/exampleobject.txt  /tmp/

    Para mais detalhes sobre as operações, consulte Access OSS-HDFS using Hadoop shell commands.

Apêndice 1: Ajuste de desempenho

Adicione os seguintes itens de configuração ao arquivo core-site.xml do Hadoop para ajustar o desempenho. Esses itens de configuração são suportados apenas no JindoSDK 4.0 e versões posteriores.

<configuration>

    <property>
          <!-- The directories where the client writes temporary files. You can specify multiple directories separated by commas (,). In multi-user environments, grant read and write permissions. -->
        <name>fs.oss.tmp.data.dirs</name>
        <value>/tmp/</value>
    </property>

    <property>
          <!-- The number of retries when an attempt to access OSS fails. -->
        <name>fs.oss.retry.count</name>
        <value>5</value>
    </property>

    <property>
          <!-- The timeout for OSS requests, in milliseconds. -->
        <name>fs.oss.timeout.millisecond</name>
        <value>30000</value>
    </property>

    <property>
          <!-- The timeout for OSS connections, in milliseconds. -->
        <name>fs.oss.connection.timeout.millisecond</name>
        <value>3000</value>
    </property>

    <property>
          <!-- The number of concurrent threads to upload a single file to OSS. -->
        <name>fs.oss.upload.thread.concurrency</name>
        <value>5</value>
    </property>

    <property>
          <!-- The size of the queue for concurrent OSS upload tasks. -->
        <name>fs.oss.upload.queue.size</name>
        <value>5</value>
    </property>

    <property>
          <!-- The maximum number of concurrent OSS upload tasks per stream in a process. -->
        <name>fs.oss.upload.max.pending.tasks.per.stream</name>
        <value>16</value>
    </property>

    <property>
          <!-- The size of the queue for concurrent OSS download tasks. -->
        <name>fs.oss.download.queue.size</name>
        <value>5</value>
    </property>

    <property>
          <!-- The number of concurrent threads for downloading from OSS. -->
        <name>fs.oss.download.thread.concurrency</name>
        <value>16</value>
    </property>

    <property>
          <!-- The buffer size for pre-reading data from OSS. -->
        <name>fs.oss.read.readahead.buffer.size</name>
        <value>1048576</value>
    </property>

    <property>
          <!-- The number of buffers for concurrently pre-reading data from OSS. -->
        <name>fs.oss.read.readahead.buffer.count</name>
        <value>4</value>
    </property>

</configuration>