Neste tutorial, forneceremos uma descrição detalhada de um Cache Distribuído no Hadoop . Primeiro vamos entender brevemente o que é o Hadoop, depois veremos o que é Cache Distribuído no Hadoop.
Também abordaremos o funcionamento e a implementação do cache distribuído do Hadoop. Por fim, neste blog também veremos as vantagens e desvantagens do cache distribuído no Hadoop.
Introdução ao Hadoop
É um mecanismo que o framework MapReduce fornece para armazenar em cache os arquivos necessários para os aplicativos. Ele pode armazenar em cache arquivos como arquivos de texto/dados somente leitura e tipos mais complexos, como arquivos, arquivos jar etc.
Antes de começarmos com o Cache Distribuído, vamos primeiro discutir o que é o Hadoop?
Hadoop é uma estrutura de programação baseada em Java de código aberto. Ele suporta processamento e armazenamento de conjuntos de dados extremamente grandes em um ambiente distribuído. O Hadoop segue a topologia Master-Slave.
Master é NameNode e Slave é DataNode. Datanode armazena dados reais em HDFS . E ele executa a operação de leitura e gravação conforme solicitação do cliente. Namenode armazena metadados.
No Apache Hadoop, os blocos de dados são processados em paralelo entre os Datanodes, usando um programa escrito pelo usuário. Se quisermos acessar alguns arquivos de todos os Datanodes, colocaremos esse arquivo no cache distribuído.
O que é cache distribuído no Hadoop?
Cache distribuído no Hadoop é um recurso fornecido pela estrutura MapReduce. O Cache Distribuído pode armazenar arquivos em cache quando necessário pelos aplicativos. Ele pode armazenar em cache somente arquivos de texto, arquivos, arquivos jar etc.
Depois de armazenarmos em cache um arquivo para nosso trabalho, o Apache Hadoop o disponibilizará em cada datanode em que as tarefas de mapeamento/redução estão sendo executadas. Assim, podemos acessar arquivos de todos os datanodes em nosso trabalho MapReduce.
Tamanho do cache distribuído
Por padrão, o tamanho do cache distribuído é 10 GB. Se quisermos ajustar o tamanho do cache distribuído, podemos ajustar usando local .cache .tamanho.
Implementação
Um aplicativo que usará o cache distribuído para distribuir um arquivo:
- Deve primeiro garantir que o arquivo esteja disponível.
- Depois disso, verifique também se o arquivo pode ser acessado por meio de URLs. Os URLs podem ser hdfs:// ou https://.
Após a validação acima, se o arquivo estiver presente nas urls mencionadas. O usuário do Hadoop menciona que é um arquivo de cache para o cache distribuído. A tarefa Hadoop MapReduce copiará o arquivo de cache em todos os nós antes de iniciar as tarefas nesses nós.
Siga o processo abaixo:
a) Copie o arquivo necessário para o HDFS:
$ hdfs dfs-put/user/dataflair/lib/jar_file.jar
b) Configure o JobConf do aplicativo:
DistributedCache.addFileToClasspath(novo caminho (“/user/dataflair/lib/jar-file.jar”), conf).
c) Adicione-o na classe Driver.
Vantagens do Cache Distribuído
- Ponto único de falha- Como o cache distribuído é executado em muitos nós. Portanto, a falha de um único nó não resulta em uma falha completa do cache.
- Consistência de dados- Ele rastreia os carimbos de data e hora de modificação dos arquivos de cache. Em seguida, notifica que os arquivos não devem ser alterados até que um trabalho seja executado. Usando o algoritmo de hash, o mecanismo de cache sempre pode determinar em qual nó um valor-chave específico reside. Como sabemos, sempre há um único estado do cluster de cache, portanto, nunca é inconsistente.
- Armazenar dados complexos – Ele distribui um arquivo de texto simples e somente leitura. Ele também armazena tipos complexos como jars, arquivos. Essas conquistas são então desarquivadas no nó escravo.
Desvantagem do Cache Distribuído
Um cache distribuído no Hadoop tem uma sobrecarga que o tornará mais lento que um cache em processo:
a) Serialização de objetos – Deve serializar objetos. Mas o mecanismo de serialização tem dois problemas principais:
- Muito volumoso – A serialização armazena o nome completo da classe, cluster e detalhes de montagem. Ele também armazena referências a outras instâncias em variáveis de membro. Tudo isso torna a serialização muito volumosa.
- Muito lento – A serialização usa reflexão para inspecionar o tipo de informação em tempo de execução. A reflexão é um processo muito lento em comparação com o código pré-compilado.
Conclusão
Em conclusão ao Cache Distribuído, podemos dizer que é uma facilidade disponibilizada pelo MapReduce. Ele armazena arquivos em cache quando necessário pelos aplicativos. Ele pode armazenar em cache somente arquivos de texto, arquivos, arquivos jar etc.
Por padrão, o tamanho do cache distribuído é de 10 GB. Se você encontrar este blog ou tiver alguma dúvida relacionada ao Cache Distribuído no Hadoop, sinta-se à vontade para compartilhar conosco.