MapReduce - API
Neste capítulo, examinaremos mais de perto as classes e seus métodos envolvidos nas operações de programação MapReduce. Vamos principalmente manter nosso foco no seguinte -
- Interface JobContext
- Classe de Trabalho
- Classe Mapper
- Classe de redutor
Interface JobContext
A interface JobContext é a superinterface para todas as classes, que define diferentes trabalhos no MapReduce. Ele fornece uma exibição somente leitura do trabalho fornecido para as tarefas durante sua execução.
A seguir estão as subinterfaces da interface JobContext.
S.No. | Descrição da subinterface |
---|---|
1 | MapContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT> Define o contexto que é fornecido ao Mapeador. |
2 | ReduceContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT> Define o contexto que é passado para o Redutor. |
A classe de trabalho é a classe principal que implementa a interface JobContext.
Classe de Trabalho
A classe Job é a classe mais importante na API MapReduce. Ele permite ao usuário configurar o trabalho, enviá-lo, controlar sua execução e consultar o estado. Os métodos definidos só funcionam até que o trabalho seja enviado, depois disso eles lançarão uma IllegalStateException.
Normalmente, o usuário cria o aplicativo, descreve as várias facetas do trabalho e, em seguida, envia o trabalho e monitora seu progresso.
Aqui está um exemplo de como enviar um trabalho -
// Create a new Job
Job job = new Job(new Configuration());
job.setJarByClass(MyJob.class);
// Specify various job-specific parameters
job.setJobName("myjob");
job.setInputPath(new Path("in"));
job.setOutputPath(new Path("out"));
job.setMapperClass(MyJob.MyMapper.class);
job.setReducerClass(MyJob.MyReducer.class);
// Submit the job, then poll for progress until the job is complete
job.waitForCompletion(true);
Construtores
A seguir está o resumo do construtor da classe Job.
S.Não | Resumo do construtor |
---|---|
1 | Job() |
2 | Job(Configuração conf) |
3 | Job(Configuração conf, String jobName) |
Métodos
Alguns dos métodos importantes da classe Job são os seguintes -
S.Não | Descrição do Método |
---|---|
1 | getJobName() Nome do trabalho especificado pelo usuário. |
2 | getJobState() Retorna o estado atual do Job. |
3 | isComplete() Verifica se o trabalho foi concluído ou não. |
4 | setInputFormatClass() Define o InputFormat para o trabalho. |
5 | setJobName(String name) Define o nome do trabalho especificado pelo usuário. |
6 | setOutputFormatClass() Define o formato de saída para o trabalho. |
7 | setMapperClass(Class) Define o mapeador para o trabalho. |
8 | setReducerClass(Class) Define o redutor para o trabalho. |
9 | setPartitionerClass(Class) Define o particionador para o trabalho. |
10 | setCombinerClass(Class) Define o combinador para o trabalho. |
Classe Mapper
A classe Mapper define o trabalho de mapa. Mapeia pares de valores-chave de entrada para um conjunto de pares de valores-chave intermediários. Mapas são tarefas individuais que transformam os registros de entrada em registros intermediários. Os registros intermediários transformados não precisam ser do mesmo tipo que os registros de entrada. Um determinado par de entrada pode ser mapeado para zero ou muitos pares de saída.
Método
mapé o método mais proeminente da classe Mapper. A sintaxe é definida abaixo -
map(KEYIN key, VALUEIN value, org.apache.hadoop.mapreduce.Mapper.Context context)
Este método é chamado uma vez para cada par de valores-chave na divisão de entrada.
Classe de redutor
A classe Reducer define o trabalho Reduce no MapReduce. Ele reduz um conjunto de valores intermediários que compartilham uma chave a um conjunto menor de valores. As implementações do redutor podem acessar a configuração de um trabalho por meio do método JobContext.getConfiguration (). Um Redutor tem três fases primárias - Embaralhar, Classificar e Reduzir.
Shuffle - O Redutor copia a saída classificada de cada Mapeador usando HTTP na rede.
Sort- O framework merge classifica as entradas do Redutor por chaves (já que mapeadores diferentes podem ter a mesma chave). As fases de embaralhamento e classificação ocorrem simultaneamente, ou seja, enquanto as saídas estão sendo buscadas, elas são mescladas.
Reduce - Nesta fase, o método reduzir (Objeto, Iterável, Contexto) é chamado para cada <chave, (coleção de valores)> nas entradas classificadas.
Método
reduceé o método mais proeminente da classe Reducer. A sintaxe é definida abaixo -
reduce(KEYIN key, Iterable<VALUEIN> values, org.apache.hadoop.mapreduce.Reducer.Context context)
Este método é chamado uma vez para cada chave na coleção de pares de chave-valor.