MapReduce Python Exemplo

MapReduce Python Exemplo
Muitas vezes, ao lidar com dados, encontramos uma grande quantidade de dados. Existem muitas metodologias para lidar com este caso. Mas muitas abordagens não são capazes de lidar com a situação. Então, usamos o Reduce do MAP para essas situações. Um "MapReduce" é uma estrutura e um modelo de programação dentro da arquitetura Hadoop, usada no processamento de uma grande quantidade de dados nos sistemas de arquivos Hadoop.

"MapReduce" é um dos terceiros componentes do Hadoop. Essa estrutura é eficiente para o processamento de grandes dados em paralelo com as outras tarefas. O objetivo básico do "MapReduce" é mapear cada trabalho coletivamente em grupos, e então isso o reduzirá a tarefas iguais para reduzir a formação de cluster dos processos. A tarefa "mapReduce" é dividida em duas fases.

  • Fase de mapa
  • Reduzir a fase

Map Map Reduce Conceito e Arquitetura

Os dados de entrada são distribuídos em pequenos pedaços para o processamento de dados através de diferentes trabalhadores. Cada pequeno pedaço é mapeado para uma situação/estado intermediário. Que os dados intermediários são então coletados juntos e, em seguida, o processo de particionamento ocorre que é baseado em um valor-chave para manter todo o material relacionado entre si. Em seguida, essa partição de dados leva ao conjunto reduzido resultante. Vamos considerar o diagrama abaixo.

Partes da arquitetura

  • Cliente: É quem é responsável por aceitar o trabalho de "mapear" para a função de processamento. Pode haver a possibilidade de vários clientes que enviam empregos continuamente para o processamento para o gerente "MapReduce".
  • Trabalho: É a tarefa/trabalho real que o cliente deseja fazer que contém muitas tarefas menores que o cliente deseja para a execução.
  • Hadoop MapReduce Mestre: A função deste mestre é dividir o trabalho em partes menores do trabalho.
  • Peças de trabalho: Os sub-jobs obtidos da função principal do trabalho. O valor resultante de todas as partes do trabalho forma coletivamente uma saída final.
  • Dados de entrada: Os dados que são introduzidos no redutor de mapa para o processamento de dados.
  • Dados de saída: Contém as palavras limitadas em um resultado.

As partes do trabalho obtidas no trabalho são transferidas para o mapa e reduzem as tarefas. Essas duas tarefas têm programas e algoritmos que dependem do requisito do usuário. Os dados de entrada são usados ​​e inseridos na tarefa do mapa. A tarefa de mapa gerará o par intermediário de valor-chave que atuará como uma entrada para a fase de redução. Na fase de redução, depois de executar o processo de redução, armazene os resultados finais no HDFS. Agora, movendo-se em direção ao exemplo de reduntura de mapa, o código no exemplo é explicado com as fases separadamente e sua saída também.

Código de Python MapReduce

A API de streaming Hadoop é usada para passar dados entre o mapa e reduzir o código através do stdin e Stout. Para ler dados de entrada e imprimir a saída, “Sys.stdin ”é usado. Outros procedimentos são tratados através do Hadoop Streaming.

Fase de mapa

O principal uso da fase do mapa é mapear os dados de entrada na forma de pares de chaves. O valor-chave que usamos pode agir como o ID é algum endereço, e o valor contém o valor real que é mantido. Esta fase do mapa gerará um valor intermediário com a chave como uma saída. Para reduzir a função, a saída do mapa é usada como entrada. Vamos considerar o código para a função do mapa. Esta função também é conhecida como mapeador.py.

Você deve criar um arquivo e salvar o código nesse arquivo. eu.e/home/aqsa/mapeador.py. O script do mapa não pode calcular um valor intermediário do total de palavras que ocorre várias vezes. Em vez disso, ele dará às partes dos dados que até as palavras estão repetindo múltiplos vezes nos dados de entrada. Vamos deixar a função reduzir o número de palavras calculando a soma de sua ocorrência. Uma coisa que deve ser lembrada, o arquivo tem permissão de execução (chmod+x/home/aqsa/mapeador.py). Movendo -se em direção ao código, o primeiro passo será a importação do módulo SYS. A entrada será realizada usando um loop for através do stdin.

Para linha em sys.stdin:

Esta função lerá a linha por linha, tira todas as linhas e removerá os espaços em branco entre eles através da função de tira. Da mesma forma, cada linha é dividida em palavras usando uma função dividida. Ambas as funções são declaradas dentro do corpo para loop.

# linha = linha.faixa()
# words = linha.dividir() #!/usr/bin/Env Python
"" "Mapper.py "" "
Importar sistemas
# A entrada vem do stdin (entrada padrão)
para linha em sys.stdin:
# Remova o espaço em branco e a trilha
linha = linha.faixa()
# dividi a linha em palavras
palavras = linha.dividir()
# Aumente os contadores
Para palavras em palavras:
# escreva os resultados para stdout (saída padrão);
# tab-delimitado; a contagem trivial de palavras é 1
print ('%s \ t%s'%(palavra, 1))

Depois que todas as funções são executadas, cada palavra será impressa uma a uma.

Os valores intermediários passam por dois processos antes de entrar na fase de redução. Esses dois estágios são os embaralhados e a fase de classificação.

Fase de embaralhamento:

O objetivo desta função é associar todos os valores de uma chave semelhante. Por exemplo, considere uma palavra (sim, 1) que ocorreu 4 vezes no arquivo de saída. Então, após esta fase, a saída será mostrada como (sim, [1,1,1,1]).

Fase de classificação:

Quando o processo de embaralhamento é concluído, os valores de saída são enviados para a fase de classificação. Nesta fase, todas as chaves e valores são classificados automaticamente. No Hadoop, o processo de classificação não requer nenhum algoritmo de classificação, pois é um processo automático. É por causa da interface embutida chamada 'WritableComparableInterface'.

Reduzir a fase

Os valores intermediários são então transferidos para a função de redução após serem classificados. O grupo de funções de redução os dados, dependendo do par de valores-chave de acordo com o algoritmo Reducer usado pelo programador.

O código que implementaremos é salvo em um arquivo do caminho “/home/aqsa/redutor.py ". Este arquivo lerá os resultados do “Mapper.arquivo py ”do stdin. Para esse fim, o formato do “mapeador.arquivo py ”e a entrada proveniente do mapeador.Py deve ser o mesmo. Depois disso, essa função leva a soma da ocorrência de cada palavra, e a saída final é exibida através do stdout.

#!/usr/bin/Env Python
"""redutor.py "" "
Importar sistemas
current_word = nenhum
current_count = 0
palavra = nenhum
para linha em sys.stdin:
linha = linha.faixa()
# analise a entrada que obtemos do mapeador.py
palavra, contagem = linha.dividido ('\ t', 1)
tentar:
contagem = int (contagem)
Exceto ValueError:
continuar
se current_word == word:
current_count += contagem
outro:
se current_word:
# gravar resultado para stdout
print ('%s \ t%s'%(current_word, current_count))
current_count = count
current_word = word
se current_word == word:
print ('%s \ t%s'%(current_word, current_count))

O módulo SYS é importado primeiro. Então uma variável para o processo de contagem é declarada 0 como o valor inicial. Tomamos os valores de entrada usando o loop e as linhas são separadas como a função do mapa. Para dividir as palavras, usamos as palavras e contamos variáveis.

# Count, word = linha.dividido ('\ t', 1)

No corpo de tentativa, a variável de contagem recebe o valor. A declaração IF é usada para verificar se a palavra que se aproxima é a mesma que a armazenada; a variável de contagem é incrementada.

# Current_count += contagem

Valor resultante

Para verificar os resultados, vá para o terminal do Linux. Aqui usaremos uma string que combina palavras únicas e repetitivas para obter resultados versáteis.

$ eco “mapear e reduzir são funções eficazes e eficientes, formam um mapa reduzir a estrutura” | /home/aqsa/mapeador.py | classificar -k1,1 | /home/aqsa/redutor.py

Conclusão

'MapReduce Python Exemplo' consiste na funcionalidade básica e arquitetura de redes de mapa coletivamente e separadamente. A formação de valor intermediário desempenha um papel importante nesse objetivo. Para obter o valor limitado, sempre que você quiser gerenciar big data, você precisa usar uma função "mapReduce" no programa. Ler este artigo será uma fonte de informações completas sobre a função "MapReduce".