Todos os produtos
Search
Central de documentação

E-MapReduce:Acelerar o cache transparente para OSS-HDFS com JindoCache

Última atualização: Jun 27, 2026

Leituras repetidas do OSS-HDFS geram I/O remoto a cada acesso, o que aumenta a latência dos jobs. O JindoCache armazena objetos do OSS-HDFS no armazenamento do cluster EMR para que leituras subsequentes usem o cache local. Após a primeira leitura, os dados ficam em cache automaticamente — os jobs Hadoop acessam o OSS-HDFS sem alterações na configuração.

Pré-requisitos

Antes de começar, verifique se você tem:

Como funciona o cache

O JindoCache usa CacheSets para aplicar políticas de cache a caminhos específicos do OSS. Cada CacheSet direciona um caminho pai e controla o tratamento de metadados, leituras e gravações de todos os dados nesse caminho. Defina um ou mais CacheSets, cada um com uma política diferente, para adequar-se aos padrões de acesso de diferentes conjuntos de dados.

Após definir os CacheSets e configurar o JindoSDK, o cache torna-se totalmente transparente: os jobs Hadoop acessam o OSS-HDFS normalmente, enquanto o JindoCache gerencia automaticamente o preenchimento e a consulta do cache.

Etapa 1: Definir políticas de cache

Crie cacheset.xml

Defina seus CacheSets em um arquivo cacheset.xml. O exemplo a seguir configura dois CacheSets para diferentes caminhos do OSS:

<?xml version="1.0" encoding="UTF-8"?>
<cachesets>
    <cacheset>
        <name>name1</name>
        <path>oss://emr-test/dir1</path>
        <cacheStrategy>DISTRIBUTED</cacheStrategy>
        <metaPolicy>
            <type>ALWAYS</type>
        </metaPolicy>
        <readPolicy>CACHE_ASIDE</readPolicy>
        <writePolicy>WRITE_AROUND</writePolicy>
    </cacheset>
    <cacheset>
        <name>name2</name>
        <path>oss://emr-test/dir2</path>
        <cacheStrategy>DHT</cacheStrategy>
        <metaPolicy>
            <type>ONCE</type>
        </metaPolicy>
        <readPolicy>CACHE_ASIDE</readPolicy>
        <writePolicy>WRITE_AROUND</writePolicy>
    </cacheset>
</cachesets>

Cada CacheSet mapeia um caminho pai para um conjunto de políticas. A tabela a seguir descreve todos os parâmetros.

Parâmetro

Descrição

Exemplo

name

Nome exclusivo do CacheSet. Se já existir um CacheSet com o mesmo nome, a configuração será sobrescrita.

name1

path

Caminho pai do OSS. As políticas aplicam-se a todos os dados neste caminho.

oss://emr-test/dir1

cacheStrategy

Política de cache. Valores válidos: DISTRIBUTED e DHT. DHT significa tabela hash distribuída. Essa política acelera o acesso a arquivos pequenos e somente leitura.

DISTRIBUTED

metaPolicy

Define se os metadados do arquivo ficam em cache localmente. ALWAYS: metadados não ficam em cache; a leitura ocorre no armazenamento remoto. ONCE: metadados ficam em cache; após a primeira leitura no armazenamento remoto, as leituras seguintes usam sempre o armazenamento local. Se cacheStrategy for DHT, defina este valor como ONCE.

ALWAYS

readPolicy

Modo de leitura dos arquivos. Deve ser CACHE_ASIDE: prioriza a leitura dos arquivos no cache.

CACHE_ASIDE

writePolicy

Destino das gravações. WRITE_AROUND: grava arquivos no armazenamento remoto. WRITE_THROUGH: grava arquivos no cache e no armazenamento remoto simultaneamente. CACHE_ONLY: grava arquivos apenas no cache; requer metaPolicy definido como ONCE.

WRITE_AROUND

Aplicar a configuração do CacheSet

  1. Faça logon no cluster. Para mais informações, consulte Fazer logon em um cluster.

  2. Salve o arquivo cacheset.xml em um diretório no cluster. Neste exemplo, o arquivo está em /path/cacheset.xml.

  3. Execute o comando a seguir para carregar a configuração do CacheSet no JindoCache:

    jindocache -refreshCacheSet -path /path/cacheset.xml

    Uma execução bem-sucedida exibe:

    Successfully refresh cacheset !!!

    Para ver todos os comandos da CLI do JindoCache disponíveis, consulte Notas de uso da CLI do JindoCache.

  4. Execute o comando a seguir para verificar se os CacheSets foram carregados:

    jindocache -listCacheSet

Etapa 2: Configure o JindoSDK

Defina a classe de implementação do OSS-HDFS no Hadoop-Common para que o cliente direcione o tráfego pelo JindoCache. No console EMR, acesse a aba core-site.xml na guia Configure da página de serviço do Hadoop-Common e adicione o seguinte item de configuração. Para mais informações, consulte Gerencie itens de configuração.

Item de configuração

Valor

Comportamento padrão

fs.xengine

jindocache

Se deixado em branco, o cliente comunica-se diretamente com o OSS-HDFS sem usar cache.

Esta configuração aplica-se no nível do cliente e entra em vigor sem necessidade de reiniciar o JindoCache.

Após salvar a configuração, os jobs que leem do OSS-HDFS preenchem automaticamente o cache na primeira leitura. Leituras subsequentes dos mesmos dados usam diretamente o cache.

Perguntas frequentes

Como configurar o acesso entre contas ao OSS-HDFS?

Por padrão, o JindoCache acessa o OSS-HDFS sem credenciais explícitas (modo sem senha). Para acesso entre contas, adicione os seguintes itens de configuração na aba common da página de serviço do JindoCache.

Abra a aba de configuração:

  1. Faça logon no console EMR. No painel de navegação à esquerda, clique em EMR on ECS.

  2. Na barra de navegação superior, selecione a região do cluster e escolha um grupo de recursos.

  3. Na página EMR on ECS, localize o cluster e clique em Services na coluna Actions.

  4. Localize JindoCache e clique em Configure.

  5. Clique na aba common.

Add the configuration items:

Clique em Add Configuration Item e adicione os seguintes itens. Substitua YYY pelo nome do bucket do OSS com o OSS-HDFS ativado. Para mais detalhes sobre como aplicar alterações de configuração, consulte Gerencie itens de configuração.

Item de configuração

Descrição

jindocache.oss.bucket.YYY.accessKeyId

AccessKey ID usado para acessar o OSS-HDFS.

jindocache.oss.bucket.YYY.accessKeySecret

AccessKey secret usado para acessar o OSS-HDFS.

jindocache.oss.bucket.YYY.endpoint

Endpoint do OSS-HDFS. Exemplo: cn-hangzhou.oss-dls.aliyuncs.com.

jindocache.oss.bucket.YYY.data.lake.storage.enable

Defina como true.