HBase
 sql >> Base de Dados >  >> NoSQL >> HBase

Introdução, funcionamento e tipos do Hadoop RecordReader


Em nosso blog anterior, estudamos o Hadoop Contadores em detalhe. Agora, neste tutorial, vamos discutir o RecordReader no Hadoop.

Aqui abordaremos a introdução ao Hadoop RecordReader, o funcionamento do RecordReader. Também discutiremos os tipos de RecordReader no MapReduce, o tamanho do único registro no Hadoop MapReduce neste Tutorial do MapReduce.


O que é RecordReader no MapReduce?


Um RecordReader converte a visualização orientada a bytes da entrada em uma visualização orientada a registros para o Mapeador e Redutor tarefas para processamento.

Para entender o Hadoop RecordReader, precisamos entender o MapReduce Dataflow. Vamos aprender como o fluxo de dados:

MapReduce é um modelo simples de processamento de dados. As entradas e saídas para as funções map e reduce são pares de valores-chave . A seguir está a forma geral das funções map e reduce:
  • Mapa: (K1, V1) → lista (K2, V2)
  • Reduzir: (K2, lista (V2)) → lista (K3, V3)

Agora, antes do início do processamento, ele precisa saber em quais dados processar. Portanto, InputFormat classe ajuda a conseguir isso. Esta classe seleciona o arquivo de HDFS  que é a entrada para a função map. Ele também é responsável por criar as divisões de entrada.

Além disso, divida-os em registros. Ele divide os dados no número de divisões (normalmente 64/128 MB) no HDFS. Isso é conhecido como InputSplit. InputSplit é a representação lógica dos dados. Em um trabalho MapReduce, o número de execução de tarefas de mapa é igual ao número de InputSplits.

Ao chamar 'getSplit()' o cliente calcula as divisões para o trabalho. Em seguida, é enviado para o mestre do aplicativo. Ele usa seus locais de armazenamento para agendar tarefas de mapa que as processarão no cluster.

Depois que a tarefa de mapa passa a divisão para o createRecordReader () método. A partir disso, obtém RecordReader para a divisão. RecordReader gera registro (par chave-valor). Em seguida, ele passa para a função map.

Hadoop RecordReader na execução do trabalho MapReduce usa os dados dentro dos limites que estão sendo criados pela divisão de entrada. E, em seguida, cria pares de valores-chave para o mapeador. O “start” é a posição do byte no arquivo.

No início, o  Hadoop RecordReader começa a gerar pares de chave/valor. O “fim” é onde o RecorReader para de ler os registros. No RecordReader, os dados são carregados de sua origem.

Em seguida, os dados são convertidos em pares de valores-chave adequados para leitura pelo Mapeador. Ele se comunica com o inputplit até que a leitura do arquivo não seja concluída.

Como o RecorReader funciona no Hadoop?


É mais do que iterador sobre os registros. A tarefa map usa um registro para gerar um par chave-valor que passa para a função map. Também podemos ver isso usando a função run do mapeador fornecida abaixo:
public void run(Context context ) throws IOException, InterruptedException{
setup(context);
while(context.nextKeyValue())
{
map(context.setCurrentKey(),context.getCurrentValue(),context)
}
cleanup(context);
}

Embora não seja obrigatório que o RecordReader permaneça entre os limites criados pelo inputplit para gerar pares chave-valor, ele geralmente permanece. Além disso, a implementação personalizada pode até ler mais dados fora da divisão de entrada.

Então, depois de executar setup() , o nextKeyValue() repetirá no contexto. Isso preenche os objetos de chave e valor para o mapeador. Por meio do contexto, a estrutura recupera o valor-chave do leitor de registros. Em seguida, passe para o map() método para fazer o seu trabalho.

Portanto, a entrada (valor-chave) para os processos da função do mapa de acordo com a lógica mencionada no código do mapa. Quando o registro chega ao final do registro, o nextKeyValue() método retorna falso.

Tipos de Hadoop RecordReader


InputFormat define a instância  RecordReader, no Hadoop. Por padrão, usando TextInputFormat ReordReader converte dados em pares de valores-chave. TextInputFormat também fornece 2 tipos de RecordReaders que são os seguintes:

1. LineRecordReader


É o RecordReader padrão. TextInputFormat fornece este RecordReader. Ele também trata cada linha do arquivo de entrada como o novo valor. Em seguida, a chave associada é o deslocamento de byte. Ele sempre pula a primeira linha na divisão (ou parte dela), se não for a primeira divisão.

Ele sempre lê uma linha após o limite da divisão no final (se os dados estiverem disponíveis, então não é a última divisão).

2. SequenceFileRecordReader


Este Hadoop RecorReader lê os dados especificados pelo cabeçalho de um arquivo de sequência.

O tamanho máximo do registro único


Usando o parâmetro abaixo, definimos o valor máximo.
conf.setInt("mapred.linerecordreader.maxlength", Integer.MAX_VALUE);

Conclusão


Concluindo, o Hadoop RecorReader cria a entrada (valor-chave) para o Mapper. Ele também usa TextInputFormat para converter dados em par chave-valor.

Espero que você tenha gostado deste blog, se tiver alguma dúvida relacionada ao Hadoop RecordReader, sinta-se à vontade para compartilhar conosco. Teremos o maior prazer em resolvê-los.