O que é o cache distribuído no Hadoop?

O Hadoop é uma estrutura de código aberto e usa armazenamento distribuído, além do processamento de grandes conjuntos de dados usando o HDFS e o MapReduce. Possui NameNodes que armazena os metadados e DataNodes que armazenam os dados reais no HDFS. Quando precisamos processar os enormes conjuntos de dados, isso é feito por um programa escrito pelos usuários e, em seguida, o processamento é feito em paralelo nos DataNodes. Na estrutura do Hadoop, existem certos arquivos necessários pelas tarefas do MapReduce com freqüência. Se houver o número de mapeadores em execução, sempre que for necessário ler os arquivos do HDFS, a latência aumentará à medida que o tempo de busca também aumentará. Portanto, em vez de ler os arquivos sempre que os arquivos forem necessários, os arquivos podem ser copiados e enviados para todos os DataNodes. Esse mecanismo é chamado de Cache Distribuído no Hadoop.

Trabalho de cache distribuído no Hadoop

  • O Hadoop copia os arquivos especificados pelas opções como –files, -libjars e –archives para o HDFS quando um trabalho é iniciado. Em seguida, o Node Manager copiará os arquivos do HDFS para o cache para que, quando uma tarefa for executada, ela possa acessar os arquivos. Os arquivos podem ser denominados tão localizados quanto são copiados para o cache ou o disco local.
  • No cache, a contagem do número de tarefas que utilizam cada arquivo é mantida como referência pelo Node Manager. A contagem de referência dos arquivos se torna 1 antes da execução da tarefa. Porém, após a execução da tarefa, a contagem é reduzida em 1. Quando a contagem se torna 0, o arquivo pode ser excluído porque não está sendo usado. Quando o cache de um nó atinge seu determinado tamanho, a exclusão de um arquivo é feita para que os novos arquivos possam ser acomodados. O tamanho do cache pode ser alterado na propriedade de configuração. O tamanho do cache distribuído no Hadoop é, por padrão, 10 GB.
  • O MapReduce se torna mais lento que o cache em processo, se houver sobrecarga. Para superar essa situação, o cache distribuído pode serializar os objetos, mas mesmo isso tem poucos problemas. Reflexão é um processo usado para investigar o tipo de informação durante o tempo de execução, que é muito lento. Além disso, fica muito difícil na serialização, onde armazena o nome completo do cluster, o nome da classe e as referências a outras instâncias presentes nas variáveis ​​de membro.

Implementação do Hadoop no cache distribuído

  • Para usar o cache distribuído para um aplicativo, precisamos garantir que, para distribuir um arquivo entre os nós; o arquivo deve estar disponível primeiro. Portanto, precisamos copiar os arquivos para o HDFS e também verificar se o arquivo está acessível através de URIs, que podem ser encontrados acessando o core-site.xml. Em seguida, o trabalho MapReduce copia o arquivo de cache para todos os nós antes que as tarefas comecem a ser executadas nesses nós.
  • Portanto, para implementar o cache distribuído, precisamos copiar os arquivos para o HDFS e podemos verificar se isso é feito ou não através do comando hdfs dfs –put /path/samplefile.jar. Além disso, a Configuração da tarefa precisa ser configurada para o aplicativo e isso precisa ser adicionado à classe do driver.
  • Os arquivos que são legíveis apenas pelo proprietário, vão para o cache privado, enquanto o cache compartilhado possui os arquivos que são legíveis pelo mundo. O arquivo adicionado ao cache é usado sem nenhuma restrição em todas as máquinas do cluster como um arquivo local. As chamadas de API abaixo podem ser usadas para adicionar os arquivos ao cache.

Código:

DistributedCache.addCacheFile(URI, conf);
DistributedCache.setCacheFiles(URIs, conf);

O compartilhamento de arquivos de cache distribuído nos nós escravos depende se os arquivos de cache distribuído são privados ou públicos. Os arquivos de cache distribuído particulares são armazenados em cache no diretório local do usuário, que é privado para o usuário, e esses arquivos são exigidos pelos trabalhos do usuário. No caso dos arquivos públicos de cache distribuído, os arquivos são armazenados em cache no diretório global. O acesso a arquivos em caso de cache público é configurado de forma que sejam visíveis a todos os usuários. Além disso, o arquivo de cache distribuído se torna privado ou público, dependendo da permissão no sistema de arquivos.

Benefícios do cache distribuído no Hadoop

Com o uso do cache distribuído, muitos recursos vantajosos são adicionados à estrutura do Hadoop. Abaixo estão os benefícios do uso de cache distribuído:

1. Cache Distribuído no Ponto Único de Falha

Em caso de falha de um nó, não ocorrerá a falha completa do cache. Porque o cache distribuído é executado como um processo autônomo ou independente nos vários nós. Portanto, se a falha do cache ocorrer em um nó, isso não significa que o cache completo também falhe.

2. Consistência dos dados

Pelo uso do algoritmo Hash, é possível determinar quais pares de valores-chave pertencem a qual nó. Além disso, o cache distribuído no Hadoop monitora ou rastreia a modificação do carimbo de data / hora feita nos arquivos de cache e informa que, até que a tarefa seja executada, um arquivo não deve ser alterado. Portanto, os dados nunca ficam inconsistentes devido ao estado único do cluster de cache.

3. Armazenamento de dados complexos

O cache distribuído na estrutura do Hadoop oferece a vantagem de armazenar em cache os arquivos somente leitura, como arquivos de texto, arquivos jar, etc. e depois transmiti-los para nós de dados. Por esse motivo, uma cópia do arquivo é armazenada em cada nó de dados. Com o recurso de cache distribuído, arquivos complexos como um jar, etc. são distribuídos e armazenados.

Conclusão

O cache distribuído fornece eficiência porque os arquivos são copiados uma vez para cada trabalho. Além disso, ele tem a capacidade de armazenar em cache os arquivos que não são arquivados nos escravos. O uso do cache distribuído é um bônus adicional e depende do desenvolvedor para fazer o melhor uso desse recurso.

Artigos recomendados

Este é um guia para o Cache Distribuído no Hadoop. Aqui discutimos o que é cache distribuído no Hadoop, seu trabalho, implementação e benefícios. Você também pode consultar nossos outros artigos relacionados para saber mais -

  1. Vantagens do Hadoop
  2. Instale o Hadoop
  3. O que é Head in Git?
  4. Ecossistema Apache Hadoop
  5. Variáveis ​​em JavaScript

Categoria: