hadoop mapreduce tutorial with examples what is mapreduce
Neste tutorial, entenderemos o que é MapReduce, suas vantagens e como o Hadoop Map Reduce funciona com exemplos:
No tutorial anterior, aprendemos sobre o Hadoop HDFS e os mecanismos de leitura e gravação. Agora vamos explorar outro componente do Hadoop, ou seja, MapReduce.
Vejamos o seguinte em detalhes:
- O que é MapReduce?
- Seus benefícios
- Qual é a abordagem exata do MapReduce?
=> Visite aqui para ver a série exclusiva de tutoriais de treinamento BigData.
O que você aprenderá:
O que é MapReduce?
Vamos prosseguir e começar com os componentes do Hadoop. Conforme explicado anteriormente, há dois componentes principais do Hadoop, ou seja, Hadoop HDFS e Hadoop Map Reduce.
O Hadoop HDFS é um sistema de distribuição de arquivos que é usado para armazenar uma grande quantidade de dados em vários racks.
qa perguntas e respostas da entrevista do líder de teste
Aqui, discutiremos a unidade de processamento do Hadoop, ou seja, MapReduce.
A próxima questão que surge é “o que é Map Reduce e por que é necessário?”
Hadoop MapReduce é o 'Unidade de processamento' e usando este componente, podemos processar o Big Data armazenado no Hadoop HDFS.
Mas qual é o requisito exato? Por que precisamos desse componente do Hadoop?
Big Data armazenado no Hadoop HDFS não é armazenado tradicionalmente. Os dados são divididos em blocos de dados armazenados nos respectivos DataNodes. Portanto, todos os dados não são armazenados em um local centralizado.
Portanto, um aplicativo cliente nativo como Java ou qualquer aplicativo não pode processar os dados no formato atual e precisamos de uma estrutura especial que possa processar os blocos de dados fragmentados armazenados nos respectivos DataNodes.
O processamento é feito usando o processamento Hadoop MapReduce.
Mapa reduzido em poucas palavras
O diagrama acima oferece uma visão geral do Map Reduce, seus recursos e usos.
Vamos começar com as aplicações do MapReduce e onde ele é usado. Por exemplo, é usado para Classificadores, indexação e pesquisa , e criação de Motores de Recomendação em sites de comércio eletrônico (Flipkart, Amazon, etc.) Também é usado como Analytics por várias empresas.
Quando vemos da perspectiva dos recursos, é um Modelo de Programação e pode ser usado para Distribuído em grande escala Modelo como Hadoop HDFS e tem a capacidade de programação paralela que o torna muito útil.
Quando vemos as funções em Map Reduce, duas funções são executadas, ou seja, Map Function e Reduce.
Esta tecnologia foi implementada por grandes organizações como Google, Yahoo, Facebook e também adotada pelo Apache Hadoop como HDFS, PIG, HIVE e para armazenamento de dados ou execução e processamento de Big Data usando HBase que também é conhecido como No-SQL.
Vantagens do Map-Reduce
Existem duas vantagens nesta tecnologia.
# 1) Processamento Paralelo
A primeira vantagem é o processamento paralelo. Usando Map Reduce, sempre podemos processar os dados em paralelo.
De acordo com o diagrama acima, existem cinco máquinas escravas e alguns dados residem nessas máquinas. Aqui, os dados são processados paralelamente usando Hadoop Map Reduce e, portanto, o processamento se torna rápido.
Na verdade, o que acontece aqui é que todo o bloco de dados é dividido pelo Hadoop HDFS em bloco HDFS e o Map-Reduce processa esses blocos de dados e, portanto, o processamento se torna mais rápido.
# 2) Localidade dos dados
Isso é algo versátil que é fornecido pelo Hadoop MapReduce, ou seja, podemos processar os dados onde eles estão.
O que isso significa?
No tutorial HDFS anterior, entendemos que os dados que movemos para o Hadoop Cluster são divididos em HDFS Blocks e esses blocos são salvos em SlaveMachines ou DataNodes. O Map-Reduce detecta o processamento e a lógica para os respectivos Nodes Slave ou DataNodes onde os dados residem como Blocos HDFS.
O processamento é executado em um pedaço menor de dados em vários locais em paralelo. Isso economiza muito tempo e também a largura de banda da rede necessária para mover Big Data de um local para outro.
Basta lembrar que os dados que estamos processando são Big Data divididos em blocos, e se começarmos a mover o Big Data diretamente através dos canais de rede alocados para uma máquina centralizada e processá-lo, então isso não nos dará nenhuma vantagem, pois iremos consumir toda a largura de banda para mover os dados para um servidor centralizado.
Benefícios:
Então, usando o Hadoop MapReduce, não estamos apenas fazendo 'Processamento paralelo' , também estamos processando os dados para os respectivos Nodes Slave ou DataNodes onde os blocos de dados estão presentes e, portanto, também estamos “Economizando muita largura de banda da rede” o que é muito benéfico.
Por fim, as SlaveMachines realizam o processamento dos dados armazenados nas SlaveMachines e enviam os resultados para a Máquina Mestre, pois os resultados não são tão grandes quanto os blocos que estavam armazenados nas SlaveMachines. Portanto, ele não estará utilizando muita largura de banda.
As máquinas escravas enviam o resultado de volta à máquina mestre, esses resultados são agregados e o resultado final é enviado de volta à máquina cliente que enviou o trabalho.
Aqui surge uma questão - quem decide quais dados devem ser processados em qual DataNode?
O Cliente submete o trabalho ao Resource Manager e o Resource Manager é quem fornece a direção para executar o trabalho nos respectivos DataNodes onde os dados estão residindo, ele decide com base no DataNode mais próximo que está disponível para que muitos Network A largura de banda não é utilizada.
Vs tradicional Maneira MapReduce
Para explicar isso, faremos uma analogia da vida real com a Contagem de Aplicativos de Titulares de Apólice da Companhia de Seguros, todos estariam cientes das Apólices da Companhia de Seguros, já que a maioria das grandes seguradoras tem filiais em várias cidades.
Nessas agências, existem “n” números de pessoas que se candidataram a apólices de seguro de vida.
Vejamos um cenário em que temos cinco filiais de seguradoras onde as pessoas vêm e se inscrevem para apólices de seguro de vida. Agora também temos uma sede dessa seguradora que tem todas as informações sobre as agências que estão disponíveis e localizadas.
No entanto, quando as pessoas entram e se candidatam ao Seguro de Vida nos respectivos balcões A, B, C, D, E, os pedidos de apólice ficam guardados nos próprios balcões e essa informação não é partilhada com a Sede da Seguradora.
Caminho tradicional:
Vamos ver como as pessoas se inscrevem na política tradicionalmente. Para resolver esse problema tradicionalmente, todas as inscrições serão transferidas para a Sede da Seguradora e, em seguida, será iniciado o processo de inscrição.
Nesse caso, precisamos mover todos os pedidos para a Sede da Seguradora, o que é um processo caro, ou seja, temos que reunir todos os pedidos das Filiais da Seguradora e levá-los à Sede da Seguradora.
É assim que o custo está envolvido junto com os enormes esforços para fazer esta atividade.
Outra vertente é a sobrecarga da Sede da Seguradora, que tem de processar todos os pedidos de apólices dos respectivos ramos que foram solicitados pela população.
Como a Seguradora está processando os pedidos que foram aplicados em todas as filiais, vai demorar muito. No final, esse processo não funciona muito bem.
Maneira MapReduce
Vamos ver como o Map-Reduce resolve esse problema.
O MapReduce segue a Localidade dos Dados, ou seja, não vai trazer todos os pedidos para a Sede da Seguradora, ao invés, irá fazer o processamento dos pedidos nas respectivas sucursais em paralelo.
Uma vez que os pedidos que foram aplicados a cada filial foram processados, eles enviam de volta os detalhes processados para a sede da seguradora.
Agora a Sede da Seguradora só tem que agregar a quantidade de pedidos processados que foram enviados das respectivas filiais e manter os detalhes em seu respectivo Banco de Dados ou Centro de Armazenamento.
Desta forma, o processamento será muito fácil e rápido e os Segurados obterão os benefícios em nenhum momento.
Redução do mapa em detalhes
Em nosso exemplo anterior, tínhamos uma entrada (aplicativos) que foram distribuídas entre vários ramos e cada entrada foi processada pela respectiva Função de Mapa.
Sabemos que MapReduce tem duas funções, ou seja, função de mapa e função de redução.
A parte de processamento que foi feita nas respectivas ramificações foi feita pela Função de Mapa. Assim, cada entrada (aplicação) em cada agência foi processada através da Função Mapa, em seguida os dados processados foram enviados para a Sede da Seguradora e a parte de agregação feita pela Função Reduzir.
Os detalhes agregados do aplicativo processado são fornecidos como Saída.
Isso é o que aconteceu em nosso exemplo anterior. Todo o processo foi dividido em Tarefa de Mapa e Tarefa de Redução.
A tarefa de mapa obtém uma entrada e a saída da tarefa de mapa é fornecida à tarefa de redução como uma entrada e esta tarefa de redução fornece a saída finalmente para o cliente.
Para entender isso de uma maneira melhor, vamos examinar a anatomia do MapReduce.
Uma Tarefa MapReduce funciona em um par de valor-chave, então quando falamos sobre um mapa, o mapa pega a entrada como valor-chave e dá a saída como uma lista de valor-chave. Esta lista de valores-chave passa por uma fase de embaralhamento e a entrada da chave e uma lista de valores vão para o redutor.
Por fim, o Redutor nos fornece uma lista dos pares de valores-chave.
o que é teste de funcionalidade com exemplo
Exemplo de MapReduce - Processo de contagem de palavras
Vejamos outro exemplo, ou seja, o processo de contagem de palavras da maneira MapReduce. Este exemplo é igual ao exemplo introdutório da programação Java, ou seja, “Hello World”.
De acordo com o diagrama, temos uma entrada e esta entrada é dividida ou é dividida em várias entradas. Portanto, esse processo é chamado de Divisão de entrada, e toda a entrada é dividida em divisões de dados com base no novo caractere de linha.
A primeira linha é a primeira entrada, ou seja, Bigdata Hadoop MapReduce , a segunda linha é a segunda entrada, ou seja, MapReduce Hive Bigdata , da mesma forma, para a terceira entrada, é Hive Hadoop Hive MapReduce .
Vamos passar para a próxima fase, ou seja, a fase de mapeamento. Agora, na fase de mapeamento, criamos uma lista de pares de valores-chave. Portanto, a entrada é a chave e o valor, aqui a chave nada mais é do que o deslocamento do número da linha. O número da linha é a chave e toda a linha é o valor.
Portanto, para a linha 1, o deslocamento é a chave e o valor é Bigdata Hadoop MapReduce . Na vida real, o número da linha ou o deslocamento é um número hexadecimal, no entanto, para facilitar, vamos considerá-lo apenas como um número 1 ou 2.
Portanto, a linha 1 será a chave e a linha inteira será o valor. Quando estiver passando pela Função de Mapeamento, o que o Mapeamento fará é criar a lista de pares chave-valor. Por exemplo, Bigdata , então o que a função fará é ler cada palavra da linha e marcar um (1) após a vírgula.
Ele marcará um (1) como um valor; gostar Bigdata, 1 Hadoop, 1 e MapReduce, 1 . Aqui, a questão é por que colocamos um (1) após cada palavra?
É porque Bigdata é uma conta então Bigdata, 1 . Similarmente, Hadoop, 1 e MapReduce, 1 está tendo uma contagem, é por isso que marcamos um (1) como um valor. Da mesma maneira para a segunda linha ou, digamos, a linha 2 que temos, MapReduce Hive Bigdata .
Portanto, da mesma maneira, a função de mapeamento cria novamente a lista de pares de valores-chave para ela e, assim, de acordo com a contagem, a lista de pares de valores-chave será MapReduce, 1 Hive, 1 e Bigdata, 1 .
Obteremos o mesmo como resultado da Função de Mapeamento para a linha 3, ou seja, Hive, 2 Hadoop, 1 e MapReduce, 1 .
Vamos passar para a fase de embaralhamento, nesta fase para cada chave há uma lista preparada. A fase de embaralhamento encontrará a aparência da chave Bigdata e adicionará os valores à lista. Então, vamos ver o que está acontecendo aqui.
Como podemos ver duas setas chegando, a primeira seta está vindo da lista 1 e outra seta está vindo da lista 2, então o resultado será Bigdata, (1,1) .
Da mesma forma, quando vemos a palavra Hadoop , novamente para Hadoop outra lista será preparada para Valores. Como podemos ver, duas setas que chegam apontam para Shuffling, que significa a palavra Hadoop será selecionado da lista 2 e lista 3, respectivamente, ou seja, o resultado final após o embaralhamento será Hadoop, (1, 1) .
Da mesma forma, obteremos o resto das palavras como Colmeia, (1, 1, 1) e MapReduce, (1, 1, 1) junto com sua lista de Valores ou diga a lista de Contagem de acordo com a disponibilidade de palavras nas respectivas listas.
Agora vamos para a Fase de Redução, nesta fase, iniciamos a agregação dos Valores que estavam presentes na lista contra cada Chave. Então para Bigdata, havia dois valores presentes na lista, ou seja, (onze) assim o envio destes valores será feito de forma Bigdata, 2 .
Da mesma forma, para Hadoop o valor será a soma, ou seja, (onze) a apresentação será Hadoop, 2 .
Da mesma maneira para Colmeia e MapReduce, o envio para Função de Redução será Colmeia, 3 e MapReduce, 3 respectivamente.
Por fim, o resultado final será enviado de volta para o cliente, conforme mostrado no diagrama abaixo de 'O processo geral de contagem de palavras MapReduce'
O processo geral de contagem de palavras do MapReduce
É assim que todo o processo de contagem de palavras funciona quando você está usando o MapReduce Way.
Conclusão
Neste tutorial, aprendemos o seguinte:
- Hadoop Map Reduce é o 'Unidade de processamento' do Hadoop.
- Para processar o Big Data armazenado pelo Hadoop HDFS, usamos o Hadoop Map Reduce.
- É usado em pesquisa e indexação, classificação, recomendação e análise.
- Possui recursos como Modelo de Programação, Programação Paralela e Modelo Distribuído em Grande Escala.
- Os padrões de projeto do MapReduce são: Summarization, Classification of Top Records, Sorting and Analytics like Join and Selection.
- Tem apenas duas funções ou seja, Função Mapeador e Função Redutor.
- Processamento paralelo e localidade de dados são as boas vantagens do Hadoop MapReduce.
- O Processo de MapReduce é dividido em seis fases, ou seja, INPUT, SPLITTING, MAPPING, SHUFFLING, REDUCING e FINAL RESULT.
Isso é tudo para este tutorial, em nossos próximos tutoriais vamos cobrir:
- Como o MapReduce funciona com o YARN e seus componentes?
- Fluxo de trabalho do aplicativo YARN.
- O que é Spark e qual é a diferença entre Hadoop e Spark?
=> Verifique TODOS os tutoriais BigData aqui.
Leitura recomendada
- O que é Hadoop? Tutorial do Apache Hadoop para iniciantes
- Tutorial Python DateTime com exemplos
- Tutorial do Data Mart - Tipos, Exemplos e Implementação do Data Mart
- Modelo de dados dimensionais em data warehouse - Tutorial com exemplos
- Tutorial de comprimento de array Java com exemplos de código
- Tutorial de Big Data para iniciantes | O que é Big Data?
- Tutorial de script do Unix Shell com exemplos
- Selenium Encontrar Elemento por Tutorial de Texto com Exemplos