O que é Apache Hadoop no Azure HDInsight?What is Apache Hadoop in Azure HDInsight?

O Apache Hadoop era a arquitetura de código aberto original para processamento distribuído e análise de conjuntos de macrodados em clusters.Apache Hadoop was the original open-source framework for distributed processing and analysis of big data sets on clusters. O ecossistema do Hadoop inclui software e utilitários relacionados, incluindo Apache Hive, Apache HBase, Spark, Kafka e muitos outros.The Hadoop ecosystem includes related software and utilities, including Apache Hive, Apache HBase, Spark, Kafka, and many others.

O Azure HDInsight é um serviço de análise de código aberto totalmente gerenciado e completo na nuvem para empresas.Azure HDInsight is a fully managed, full-spectrum, open-source analytics service in the cloud for enterprises. O tipo de cluster Apache Hadoop no Azure HDInsight permite que você use o HDFS, o gerenciamento de recursos YARN e um modelo de programação MapReduce simples para processar e analisar dados em lotes em paralelo.The Apache Hadoop cluster type in Azure HDInsight allows you to use HDFS, YARN resource management, and a simple MapReduce programming model to process and analyze batch data in parallel.

Para ver os componentes disponíveis da pilha de tecnologia do Hadoop no HDInsight, consulte componentes e versões disponíveis com o hdinsight.To see available Hadoop technology stack components on HDInsight, see Components and versions available with HDInsight. Para ler mais sobre o Hadoop no HDInsight, veja a página de funcionalidades do Azure para o HDInsight.To read more about Hadoop in HDInsight, see the Azure features page for HDInsight.

O que é o MapReduceWhat is MapReduce

Apache Hadoop MapReduce é uma estrutura de software para escrever trabalhos que processam grandes quantidades de dados.Apache Hadoop MapReduce is a software framework for writing jobs that process vast amounts of data. Os dados de entrada são divididos em partes independentes.Input data is split into independent chunks. Cada parte é processada em paralelo entre os nós no cluster.Each chunk is processed in parallel across the nodes in your cluster. Um trabalho MapReduce consiste em duas funções:A MapReduce job consists of two functions:

  • Mapeador: Consome dados de entrada, analisa-os (geralmente com operações de filtro e classificação) e emite tuplas (pares chave-valor)Mapper: Consumes input data, analyzes it (usually with filter and sorting operations), and emits tuples (key-value pairs)

  • Redutor: Consome tuplas emitidas pelo mapeador e executa uma operação de resumo que cria um resultado menor e combinado dos dados do mapeadorReducer: Consumes tuples emitted by the Mapper and performs a summary operation that creates a smaller, combined result from the Mapper data

Um exemplo de trabalho de MapReduce de contagem de palavras básica é ilustrado no diagrama a seguir:A basic word count MapReduce job example is illustrated in the following diagram:

HDI.WordCountDiagram

A saída desse trabalho é uma contagem de quantas vezes cada palavra ocorreu no texto.The output of this job is a count of how many times each word occurred in the text.

  • O mapeador leva cada linha do texto de entrada como uma entrada e a divide em palavras.The mapper takes each line from the input text as an input and breaks it into words. Ele emite um par de chave/valor cada vez que uma palavra ocorre da palavra é seguida por um 1.It emits a key/value pair each time a word occurs of the word is followed by a 1. A saída é classificada antes de enviá-la para redutor.The output is sorted before sending it to reducer.
  • O redutor soma essas contagens individuais para cada palavra e emite um único par de chave/valor que contém a palavra seguida pela soma de suas ocorrências.The reducer sums these individual counts for each word and emits a single key/value pair that contains the word followed by the sum of its occurrences.

O MapReduce pode ser implementado em vários idiomas.MapReduce can be implemented in various languages. O Java é a implementação mais comum e é usado para fins de demonstração neste documento.Java is the most common implementation, and is used for demonstration purposes in this document.

Linguagens de desenvolvimentoDevelopment languages

Linguagens ou estruturas baseadas em Java e a Máquina Virtual Java podem ser executadas diretamente como um trabalho MapReduce.Languages or frameworks that are based on Java and the Java Virtual Machine can be ran directly as a MapReduce job. O exemplo usado neste documento é um aplicativo MapReduce Java.The example used in this document is a Java MapReduce application. Linguagens não Java, como C#, Python ou executáveis autônomos, devem usar o streaming do Hadoop.Non-Java languages, such as C#, Python, or standalone executables, must use Hadoop streaming.

O streaming do Hadoop se comunica com o mapeador e redutor sobre STDIN e STDOUT.Hadoop streaming communicates with the mapper and reducer over STDIN and STDOUT. O mapeador e o redutor lêem dados uma linha por vez do STDIN e gravam a saída em STDOUT.The mapper and reducer read data a line at a time from STDIN, and write the output to STDOUT. Cada linha lida ou emitida pelo mapeador e redutor deve estar no formato de um par chave/valor, delimitado por um caractere de tabulação:Each line read or emitted by the mapper and reducer must be in the format of a key/value pair, delimited by a tab character:

[key]/t[value]

Para obter mais informações, consulte Hadoop streaming.For more information, see Hadoop Streaming.

Para obter exemplos de como usar o streaming do Hadoop com o HDInsight, consulte o seguinte documento:For examples of using Hadoop streaming with HDInsight, see the following document:

Passos SeguintesNext steps