O JindoCache armazena em cache, de forma transparente, dados do Object Storage Service (OSS) no armazenamento local dos nós do cluster E-MapReduce (EMR). Na primeira leitura de dados do OSS por um job, o JindoCache salva automaticamente uma cópia no cluster. O cache local atende às leituras subsequentes dos mesmos dados, sem necessidade de alterar a configuração do job.
Como funciona
O JindoCache organiza o comportamento de cache em CacheSets. Cada CacheSet associa uma política de cache a um prefixo de caminho do OSS: todos os dados lidos nesse prefixo são armazenados em cache conforme a política definida. Configure vários CacheSets para aplicar políticas diferentes a conjuntos de dados distintos.
Após configurar um CacheSet e definir fs.xengine=jindocache no Hadoop, todos os jobs que acessam os caminhos do OSS abrangidos passam a usar o cache automaticamente. Os jobs não precisam chamar nenhuma API de cache, pois o processo é totalmente transparente.
Pré-requisitos
Antes de começar, verifique se você tem:
Um cluster EMR com o JindoCache ativado (selecionado durante a criação do cluster). Para mais detalhes, consulte Criar um cluster.
Uma instância do OSS ativada. Para mais detalhes, consulte Ativar o OSS.
Observações de uso
O OSS armazena arquivos como objetos. Os termos "arquivo" e "objeto" referem-se aos mesmos dados quando o contexto envolve o OSS.
Se
metaPolicyestiver definido comoONCE, o JindoCache lê os metadados do OSS apenas uma vez e os armazena em cache localmente. Caso os dados subjacentes no OSS mudem após essa leitura inicial, os jobs poderão ler metadados desatualizados até a atualização do cache. UtilizeALWAYSse seus dados mudarem com frequência e for necessária consistência forte.O cache transparente oferece maior benefício para cargas de trabalho com muitas leituras, nas quais os mesmos dados são acessados várias vezes. Cargas intensivas em escrita, que raramente releem os mesmos dados, obtêm pouco ganho com o uso de cache.
Configurar políticas de cache
Faça login no seu cluster. Para mais detalhes, consulte Fazer login em um cluster.
-
Crie um arquivo
cacheset.xml. O exemplo a seguir armazena o arquivo no diretório/path.<?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>A tabela a seguir descreve os parâmetros.
Parâmetro
Descrição
Exemplo
nameNome exclusivo para o CacheSet. Se já existir um CacheSet com o mesmo nome, a configuração dele será substituída.
name1pathPrefixo de caminho do OSS abrangido por este CacheSet. A política se aplica a todos os objetos dentro desse caminho.
oss://emr-test/dir1cacheStrategyEstratégia de distribuição do cache.
DISTRIBUTED: uso geral, adequada para a maioria das cargas de trabalho.DHT(tabela hash distribuída): otimizada para arquivos pequenos e somente leitura.DISTRIBUTEDTipo de
metaPolicyForma como o JindoCache trata os metadados dos objetos.
ALWAYS: os metadados são sempre lidos do OSS, garantindo consistência forte, mas com maior latência.ONCE: os metadados são lidos do OSS apenas uma vez e armazenados em cache localmente, reduzindo a latência, mas podendo resultar em leituras desatualizadas se os dados do OSS forem alterados. SecacheStrategyforDHT, defina este valor comoONCE.ALWAYSreadPolicyEstratégia de leitura. Deve ser
CACHE_ASIDE: as leituras são atendidas pelo cache quando disponíveis e buscadas no OSS em caso de falta no cache.CACHE_ASIDEwritePolicyEstratégia de escrita.
WRITE_AROUND: as escritas vão diretamente para o OSS, ignorando o cache — use para dados gravados uma única vez e raramente relidos.WRITE_THROUGH: as escritas vão simultaneamente para o cache e para o OSS — use quando for necessária consistência do cache com uma latência de escrita ligeiramente maior.CACHE_ONLY: as escritas vão apenas para o cache e não são persistidas no OSS; exige quemetaPolicyesteja definido comoONCE.WRITE_AROUND -
Atualize o JindoCache com a nova configuração do CacheSet.
jindocache -refreshCacheSet -path /path/cacheset.xmlSe o comando for executado com êxito, a saída conterá
Successfully refresh cacheset !!!. Para obter a lista completa de comandos do JindoCache, consulte Notas de uso da CLI do JindoCache. -
Verifique se os CacheSets foram registrados.
jindocache -listCacheSet
Ativar o cache transparente no Hadoop
Defina o item de configuração fs.xengine no Hadoop-Common para que o JindoCache intercepte as solicitações de leitura do OSS.
No console do EMR, acesse a página de serviço do Hadoop-Common, clique em Configure e, em seguida, clique em core-site.xml. Adicione ou atualize o seguinte item de configuração. Para obter detalhes sobre como gerenciar itens de configuração, consulte Gerenciar itens de configuração.
|
Item de configuração |
Valor |
Descrição |
|
|
|
Encaminha as solicitações do OSS por meio do JindoCache. Se deixado em branco, o cliente lê diretamente do OSS sem usar cache. |
Essa configuração entra em vigor imediatamente, sem necessidade de reiniciar o JindoCache.
Após salvar a configuração, todos os jobs que acessam caminhos do OSS abrangidos pelos seus CacheSets usarão automaticamente o cache nas leituras subsequentes.
Perguntas frequentes
Como configurar um par de AccessKey para acesso ao OSS entre contas?
Por padrão, o JindoCache acessa o OSS no modo sem senha. Para acessar um bucket do OSS pertencente a uma conta diferente, configure o AccessKey ID, o AccessKey secret e o endpoint desse bucket.
No console do EMR, acesse a página de serviço do JindoCache. No painel de navegação à esquerda, clique em EMR on ECS.
Na barra de navegação superior, selecione a região onde o cluster está localizado e escolha um grupo de recursos.
Na página EMR on ECS, localize o cluster e clique em Services na coluna Actions.
Na aba Services, localize JindoCache e clique em Configure.
Na aba Configure, clique em common e, em seguida, clique em Add Configuration Item.
-
Na caixa de diálogo Add Configuration Item, adicione os seguintes itens de configuração. Substitua
XXXpelo nome do bucket do OSS. Para obter detalhes sobre como adicionar itens de configuração e aplicar alterações, consulte Gerenciar itens de configuração.Item de configuração
Descrição
jindocache.oss.bucket.XXX.accessKeyIdAccessKey ID usado para acessar o bucket.
jindocache.oss.bucket.XXX.accessKeySecretAccessKey secret usado para acessar o bucket.
jindocache.oss.bucket.XXX.endpointEndpoint do bucket (por exemplo,
oss-cn-hangzhou-internal.aliyuncs.com).