[Big Data] MapReduce

MapReduce

Uma estrutura de programação para programas de computação distribuída é a estrutura central para os usuários desenvolverem "aplicativos de análise de dados baseados em Hadoop".

Funções básicas do MapReduce

Com o código de lógica de negócios escrito pelo usuário e vem com componentes padrão para integrar um programa de computação distribuída completo (código de integração, torna-se adequado para execução em um programa distribuído) e executado em um cluster Hadoop.

Vantagens do MapReduce :

  • MapReduce é fácil de programar: ele simplesmente implementa algumas interfaces para completar um programa distribuído, que pode ser distribuído para rodar um grande número de máquinas PC baratas. Em outras palavras, escrever um programa distribuído é exatamente o mesmo que escrever um programa serial simples .
  • O MapReduce tem boa escalabilidade: depois que os recursos de computação não são satisfeitos, ele pode expandir seu poder de computação simplesmente adicionando máquinas e melhorar a confiabilidade por meio do mecanismo de cópia.
  • Alta tolerância a falhas: Por exemplo, se uma das máquinas estiver desligada, a tarefa computacional acima pode ser transferida para outro nó, para que a tarefa não falhe, e este processo é automático .
  • Adequado para processamento massivo de dados off-line acima do nível de PB: para alcançar operações simultâneas de milhares de clusters.

Desvantagens do MapReduce :

  • MapReduce não pode retornar resultados em milissegundos ou segundos como o mysql.
  • Não é bom em computação de streaming, a entrada do conjunto de dados por MapReduce é estática .
  • Não é bom em cálculo DAG

As principais ideias de programação do MapReduce:

A tarefa de mapa ——> é dividir o arquivo , dividir cada linha de entrada e saída, hello word, dividir na forma de valor-chave e entregá-lo ao processo ruduce para processamento posterior.

Reduzir tarefa ——> é contar os resultados do mapa.


A entrada do mapa também está na forma de chave1 e valor1, chave1 é o deslocamento e valor1 é o conteúdo de cada linha.

Desvio:

hello word

hello nihao

0 1 2 3 4 5 6 7

map(0,“hello word”)

map(12,“hello nihao”)

//空格算一个,换行不计

A saída value2 do mapa é um elemento e value3 é um iterador de coleção, que é uma coleção de value2

reduce(hello,(1,1,1,1)) //map的输出作为reduce的输入,将相同key放在一起作为一个集合

Razões para usar tipos de dados no Hadoop:

student{
string name;
string age;
string set;
}              java封装后通过网络传输——————————>100kb
               hadoop类型已经实现了序列化传输——————————>10kb


Serialização

É converter objetos na memória em sequências de bytes (ou outros protocolos de transferência de dados) para armazenamento em disco (persistência) e transmissão de rede e desserialização e vice-versa.

Recursos de serialização hsdoop:

  • Uso compacto e eficiente do espaço de armazenamento. No exemplo acima, apenas (nome, idade, sexo) é transmitido
  • Desenvolvimento rápido, com pouco desenvolvimento adicional para leitura e gravação de dados.
  • Escalável, atualize com a atualização do protocolo de comunicação
  • Suporta interação multilíngue, r, scala, c ++

 

Fluxo de trabalho detalhado do MapReduce:

 

Mecanismo Shuffer:

Após o método de mapa, o processamento de dados antes do método de redução é chamado de embaralhamento

Buffer de anel: não há cabeça ou cauda, ​​estouro em 80%

O processo de embaralhamento ocorre apenas da etapa 7 à etapa 16.

  1. maptask coleta a saída de pares kv por nosso método map () e os coloca no buffer de memória.
  2. O arquivo do disco local está continuamente transbordando do buffer de memória e vários arquivos podem transbordar.
  3. Vários arquivos de estouro serão mesclados em um grande arquivo de estouro
  4. Durante o processo de estouro e o processo de mesclagem, o particionador deve ser chamado para particionar e classificar as chaves.
  5. De acordo com seu próprio número de partição, o reducetask vai para cada máquina maptask para buscar os dados de partição de resultado correspondentes.
  6. reducetask irá buscar os arquivos de resultado de maptasks diferentes na mesma partição. O reducetask mesclará esses arquivos (mesclar e classificar).
  7. Após a fusão em um arquivo grande, o processo de embaralhamento termina e, em seguida, o processo de operação lógica de reducetask é inserido (retire um grupo de pares de valores-chave do arquivo e chame o método de redução definido pelo usuário.

Resumo da ordem aleatória:

O tamanho do buffer afetará a eficiência de execução do mapreduce: em princípio, quanto maior o buffer, menor será o número de IOs do disco e mais rápida será a velocidade de execução.

 

 

 

 

 

 

 

Acho que você gosta

Origin blog.csdn.net/Qmilumilu/article/details/104650793
Recomendado
Clasificación