¿Qué es Apache Hadoop en Azure HDInsight?What is Apache Hadoop in Azure HDInsight?

Apache Hadoop era el entorno de trabajo de código abierto original para el procesamiento distribuido y análisis de macrodatos en clústeres.Apache Hadoop was the original open-source framework for distributed processing and analysis of big data sets on clusters. El ecosistema de Hadoop incluye utilidades y software relacionados, como Apache Hive, Apache HBase, Spark, Kafka, entre otros muchos.The Hadoop ecosystem includes related software and utilities, including Apache Hive, Apache HBase, Spark, Kafka, and many others.

Azure HDInsight es un servicio de análisis, de código abierto, espectro completo y totalmente administrado en la nube para empresas.Azure HDInsight is a fully managed, full-spectrum, open-source analytics service in the cloud for enterprises. El tipo de clúster de Apache Hadoop en Azure HDInsight permite usar HDFS, la administración de recursos de YARN y un modelo sencillo de programación de MapReduce para procesar y analizar datos por lotes en 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 los componentes disponibles de la pila de tecnología de Hadoop en HDInsight, consulte ¿Cuáles son los componentes y versiones de Hadoop disponibles con HDInsight?.To see available Hadoop technology stack components on HDInsight, see Components and versions available with HDInsight. Para más información sobre Hadoop en HDInsight, consulte la página de características de Azure para HDInsight.To read more about Hadoop in HDInsight, see the Azure features page for HDInsight.

¿Qué es MapReduce?What is MapReduce

MapReduce de Apache Hadoop es un marco de software para escribir trabajos que procesan enormes cantidades de datos.Apache Hadoop MapReduce is a software framework for writing jobs that process vast amounts of data. Los datos de entrada se dividen en fragmentos independientes.Input data is split into independent chunks. Cada fragmento se procesa en paralelo en todos los nodos del clúster.Each chunk is processed in parallel across the nodes in your cluster. Un trabajo de MapReduce consta de dos funciones:A MapReduce job consists of two functions:

  • Asignador: consume datos de entrada, los analiza (normalmente con un filtro y operaciones de ordenación) y emite tuplas (pares de clave-valor)Mapper: Consumes input data, analyzes it (usually with filter and sorting operations), and emits tuples (key-value pairs)

  • Reductor: consume tuplas emitidas por el asignador y realiza una operación de resumen que crea un resultado combinado más pequeño de los datos del asignadorReducer: Consumes tuples emitted by the Mapper and performs a summary operation that creates a smaller, combined result from the Mapper data

En el siguiente diagrama se muestra un ejemplo de trabajo de MapReduce de recuento de palabras básico:A basic word count MapReduce job example is illustrated in the following diagram:

HDI.ProgramaRecuentoPalabras

La salida de este trabajo es un recuento de las veces que aparece cada palabra en el texto.The output of this job is a count of how many times each word occurred in the text.

  • El asignador utiliza cada línea del texto de entrada como una entrada y la desglosa en palabras.The mapper takes each line from the input text as an input and breaks it into words. Emite un par clave-valor cada vez que se detecta una palabra, seguida por un 1.It emits a key/value pair each time a word occurs of the word is followed by a 1. La salida se ordena antes de enviarla al reductor.The output is sorted before sending it to reducer.
  • El reductor suma estos recuentos individuales de cada palabra y emite un solo par clave-valor que contiene la palabra seguido de la suma de sus apariciones.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.

MapReduce se puede implementar en varios lenguajes.MapReduce can be implemented in various languages. Java es la implementación más común y se utiliza para fines de demostración en este documento.Java is the most common implementation, and is used for demonstration purposes in this document.

Lenguajes de desarrolloDevelopment languages

Los lenguajes o marcos de trabajo basados en Java y la máquina virtual de Java se pueden ejecutar directamente como un trabajo de MapReduce.Languages or frameworks that are based on Java and the Java Virtual Machine can be ran directly as a MapReduce job. El ejemplo usado en este documento es una aplicación de MapReduce de Java.The example used in this document is a Java MapReduce application. Los lenguajes que no son Java, como C# o Python, o ejecutables independientes, deben usar streaming de Hadoop.Non-Java languages, such as C#, Python, or standalone executables, must use Hadoop streaming.

El streaming de Hadoop se comunica con el asignador y el reductor a través de STDIN y STDOUT.Hadoop streaming communicates with the mapper and reducer over STDIN and STDOUT. El asignador y reductor leen datos línea a línea desde STDIN y escriben el resultado en STDOUT.The mapper and reducer read data a line at a time from STDIN, and write the output to STDOUT. Cada línea leída o emitida por el asignador y el reductor debe estar en el formato de un par de clave-valor delimitado por un carácter de tabulación: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 obtener más información, consulte Streaming de Hadoop.For more information, see Hadoop Streaming.

Para obtener ejemplos del uso del streaming de Hadoop con HDInsight, consulte el siguiente documento:For examples of using Hadoop streaming with HDInsight, see the following document:

Pasos siguientesNext steps