Ejecución de los ejemplos de MapReduce incluidos en HDInsightRun the MapReduce examples included in HDInsight

Aprenda a ejecutar los ejemplos de MapReduce incluidos con Apache Hadoop en HDInsight.Learn how to run the MapReduce examples included with Apache Hadoop on HDInsight.

Requisitos previosPrerequisites

Ejemplos de MapReduceThe MapReduce examples

Ubicación: los ejemplos se encuentran en el clúster de HDInsight en /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar.Location: The samples are located on the HDInsight cluster at /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar.

Contenido: en este archivo se incluyen los ejemplos siguientes:Contents: The following samples are contained in this archive:

  • aggregatewordcount: un programa de MapReduce basado en agregación que cuenta las palabras de los archivos de entrada.aggregatewordcount: An Aggregate based mapreduce program that counts the words in the input files.
  • aggregatewordhist: un programa de MapReduce basado en agregación que cuenta el histograma de las palabras de los archivos de entrada.aggregatewordhist: An Aggregate based mapreduce program that computes the histogram of the words in the input files.
  • bbp: un programa de MapReduce que usa una fórmula Bailey-Borwein-Plouffe para calcular los dígitos exactos de Pi.bbp: A mapreduce program that uses Bailey-Borwein-Plouffe to compute exact digits of Pi.
  • dbcount: un trabajo de ejemplo que cuenta los registros de vistas de página almacenados en una base de datos.dbcount: An example job that counts the pageview logs stored in a database.
  • distbbp: un programa de MapReduce que usa una fórmula de tipo BBP para calcular los bits exactos de Pi.distbbp: A mapreduce program that uses a BBP-type formula to compute exact bits of Pi.
  • grep: un programa de MapReduce que cuenta las coincidencias de una expresión regular en la entrada.grep: A mapreduce program that counts the matches of a regex in the input.
  • join: un trabajo que realiza una unión de conjuntos de datos ordenados con particiones equiparables.join: A job that performs a join over sorted, equally partitioned datasets.
  • multifilewc: un trabajo que cuenta las palabras de varios archivos.multifilewc: A job that counts words from several files.
  • pentomino: un programa de MapReduce para la colocación de mosaicos con el fin de encontrar soluciones a problemas de pentominó.pentomino: A mapreduce tile laying program to find solutions to pentomino problems.
  • pi: un programa de MapReduce que calcula Pi mediante un método cuasi Monte Carlo.pi: A mapreduce program that estimates Pi using a quasi-Monte Carlo method.
  • randomtextwriter: un programa de MapReduce que escribe 10 GB de datos de texto aleatorios por nodo.randomtextwriter: A mapreduce program that writes 10 GB of random textual data per node.
  • randomwriter: un programa de MapReduce que escribe 10 GB de datos aleatorios por nodo.randomwriter: A mapreduce program that writes 10 GB of random data per node.
  • secondarysort: un ejemplo que define una ordenación secundaria para la fase de reducción.secondarysort: An example defining a secondary sort to the reduce phase.
  • sort: un programa de MapReduce que ordena los datos escritos por el escritor aleatorio.sort: A mapreduce program that sorts the data written by the random writer.
  • sudoku: un solucionador de sudokus.sudoku: A sudoku solver.
  • teragen: genera datos para la ordenación de terabytes (terasort).teragen: Generate data for the terasort.
  • terasort: ejecuta la ordenación de terabytes (terasort).terasort: Run the terasort.
  • teravalidate: comprueba los resultados de la ordenación de terabytes (terasort).teravalidate: Checking results of terasort.
  • wordcount: un programa de MapReduce que cuenta las palabras de los archivos de entrada.wordcount: A mapreduce program that counts the words in the input files.
  • wordmean: un programa de MapReduce que cuenta la longitud media de las palabras de los archivos de entrada.wordmean: A mapreduce program that counts the average length of the words in the input files.
  • wordmedian: un programa de MapReduce que cuenta la mediana de longitud de las palabras de los archivos de entrada.wordmedian: A mapreduce program that counts the median length of the words in the input files.
  • wordstandarddeviation: un programa de MapReduce que cuenta la desviación estándar de la longitud de las palabras de los archivos de entrada.wordstandarddeviation: A mapreduce program that counts the standard deviation of the length of the words in the input files.

Código fuente: el código fuente de estos ejemplos se incluye en el clúster de HDInsight en /usr/hdp/current/hadoop-client/src/hadoop-mapreduce-project/hadoop-mapreduce-examples.Source code: Source code for these samples is included on the HDInsight cluster at /usr/hdp/current/hadoop-client/src/hadoop-mapreduce-project/hadoop-mapreduce-examples.

Ejecución del ejemplo de wordcountRun the wordcount example

  1. Conéctese a HDInsight mediante SSH.Connect to HDInsight using SSH. Para más información, consulte Uso SSH con HDInsight.For more information, see Use SSH with HDInsight.

  2. En el símbolo username@#######:~$ , use el siguiente comando para mostrar los ejemplos:From the username@#######:~$ prompt, use the following command to list the samples:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar
    

    Este comando genera la lista de ejemplos de la sección anterior de este documento.This command generates the list of sample from the previous section of this document.

  3. Use el siguiente comando para obtener ayuda sobre un ejemplo concreto.Use the following command to get help on a specific sample. En este caso, el ejemplo wordcount :In this case, the wordcount sample:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount
    

    Recibirá el siguiente mensaje:You receive the following message:

     Usage: wordcount <in> [<in>...] <out>
    

    Este mensaje indica que puede proporcionar varias rutas de entrada para los documentos de origen.This message indicates that you can provide several input paths for the source documents. La ruta de acceso final es donde se almacena la salida (la cantidad de palabras en los documentos de origen).The final path is where the output (count of words in the source documents) is stored.

  4. Use lo siguiente para contar todas las palabras en los cuadernos de Leonardo Da Vinci, que se proporcionan como datos de ejemplo con su clúster:Use the following to count all words in the Notebooks of Leonardo Da Vinci, which are provided as sample data with your cluster:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount /example/data/gutenberg/davinci.txt /example/data/davinciwordcount
    

    La entrada de este trabajo se lee desde /example/data/gutenberg/davinci.txt.Input for this job is read from /example/data/gutenberg/davinci.txt. La salida de este ejemplo se almacena en /example/data/davinciwordcount.Output for this example is stored in /example/data/davinciwordcount. Ambas rutas de acceso se encuentran en el almacenamiento predeterminado del clúster, no en el sistema de archivos local.Both paths are located on default storage for the cluster, not the local file system.

    Nota

    Como se indica en la Ayuda del ejemplo wordcount, también puede especificar varios archivos de entrada.As noted in the help for the wordcount sample, you could also specify multiple input files. Por ejemplo, hadoop jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount /example/data/gutenberg/davinci.txt /example/data/gutenberg/ulysses.txt /example/data/twowordcount contaría las palabras de davinci.txt y ulysses.txt.For example, hadoop jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount /example/data/gutenberg/davinci.txt /example/data/gutenberg/ulysses.txt /example/data/twowordcount would count words in both davinci.txt and ulysses.txt.

  5. Una vez completado el trabajo, use el siguiente comando para ver la salida:Once the job completes, use the following command to view the output:

    hdfs dfs -cat /example/data/davinciwordcount/*
    

    Este comando concatena todos los archivos de salida generados por el trabajo.This command concatenates all the output files produced by the job. Muestra la salida en la consola.It displays the output to the console. La salida será similar al siguiente texto:The output is similar to the following text:

     zum     1
     zur     1
     zwanzig 1
     zweite  1
    

    Cada línea representa una palabra y el número de veces que aparece en los datos de entrada.Each line represents a word and how many times it occurred in the input data.

Ejemplo de SudokuThe Sudoku example

Sudoku es un rompecabezas lógico compuesto por nueve cuadrículas de 3 × 3.Sudoku is a logic puzzle made up of nine 3x3 grids. Algunas celdas de la cuadrícula tienen números y otras están en blanco; el objetivo es resolver las celdas en blanco.Some cells in the grid have numbers, while others are blank, and the goal is to solve for the blank cells. El vínculo anterior contiene más información sobre el rompecabezas, pero el propósito de este ejemplo consiste en resolver las celdas en blanco.The previous link has more information on the puzzle, but the purpose of this sample is to solve for the blank cells. Así que nuestra entrada debe ser un archivo en el formato siguiente:So our input should be a file that is in the following format:

  • Nueve filas de nueve columnas;Nine rows of nine columns
  • Cada columna puede contener un número o ? (que indica una celda en blanco);Each column can contain either a number or ? (which indicates a blank cell)
  • Las celdas se separan por un espacio.Cells are separated by a space

Existe una forma determinada de construir rompecabezas sudoku para que no se repita un número en una columna o fila.There is a certain way to construct Sudoku puzzles; you can't repeat a number in a column or row. Hay un ejemplo en el clúster de HDInsight que se ha creado correctamente.There's an example on the HDInsight cluster that is properly constructed. Se encuentra en /usr/hdp/*/hadoop/src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/puzzle1.dta y contiene el texto siguiente:It is located at /usr/hdp/*/hadoop/src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/puzzle1.dta and contains the following text:

8 5 ? 3 9 ? ? ? ?
? ? 2 ? ? ? ? ? ?
? ? 6 ? 1 ? ? ? 2
? ? 4 ? ? 3 ? 5 9
? ? 8 9 ? 1 4 ? ?
3 2 ? 4 ? ? 8 ? ?
9 ? ? ? 8 ? 5 ? ?
? ? ? ? ? ? 2 ? ?
? ? ? ? 4 5 ? 7 8

Para ejecutar este problema con el ejemplo sudoku, use el comando siguiente:To run this example problem through the Sudoku example, use the following command:

yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar sudoku /usr/hdp/*/hadoop/src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/puzzle1.dta

Los resultados deberían asemejarse a este texto:The results appear similar to the following text:

8 5 1 3 9 2 6 4 7
4 3 2 6 7 8 1 9 5
7 9 6 5 1 4 3 8 2
6 1 4 8 2 3 7 5 9
5 7 8 9 6 1 4 2 3
3 2 9 4 5 7 8 1 6
9 4 7 2 8 6 5 3 1
1 8 5 7 3 9 2 6 4
2 6 3 1 4 5 9 7 8

Ejemplo de Pi (π)Pi (π) example

El ejemplo pi usa un método estadístico (cuasi Monte Carlo) para calcular el valor de pi.The pi sample uses a statistical (quasi-Monte Carlo) method to estimate the value of pi. Los puntos se colocan de forma aleatoria en un cuadrado unitario.Points are placed at random in a unit square. El cuadrado también contiene un círculo.The square also contains a circle. La probabilidad de que los puntos se encuentren dentro del círculo es igual al área del círculo, pi/4.The probability that the points fall within the circle are equal to the area of the circle, pi/4. El valor de pi se puede estimar a partir del valor de 4R.The value of pi can be estimated from the value of 4R. R es la proporción de la cantidad de puntos dentro del círculo con respecto al número total de puntos que se encuentran dentro del cuadrado.R is the ratio of the number of points that are inside the circle to the total number of points that are within the square. Mientras más grande sea la muestra de puntos usada, mejor resulta el valor calculado.The larger the sample of points used, the better the estimate is.

Use el siguiente comando para ejecutar este ejemplo.Use the following command to run this sample. Este comando usa 16 asignaciones con 10 millones de ejemplos cada una para calcular el valor de pi:This command uses 16 maps with 10,000,000 samples each to estimate the value of pi:

yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar pi 16 10000000

El valor devuelto debería asemejarse a 3,14159155000000000000.The value returned by this command is similar to 3.14159155000000000000. Como referencia, las primeras 10 posiciones decimales de pi son 3,1415926535.For references, the first 10 decimal places of pi are 3.1415926535.

Ejemplo de Greysort de 10 GB10 GB Greysort example

GraySort es una ordenación de pruebas comparativas.GraySort is a benchmark sort. La métrica es la velocidad de ordenación (TB/minuto) que se logra después de ordenar enormes volúmenes de datos, normalmente 100 TB, como mínimo.The metric is the sort rate (TB/minute) that is achieved while sorting large amounts of data, usually a 100 TB minimum.

Este ejemplo utiliza solo 10 GB de datos, para así poder ejecutarlo relativamente rápido.This sample uses a modest 10 GB of data so that it can be run relatively quickly. Usa las aplicaciones de MapReduce desarrolladas por Owen O'Malley y Arun Murthy.It uses the MapReduce applications developed by Owen O'Malley and Arun Murthy. Estas aplicaciones ganaron el estándar de comparación anual de ordenación de terabytes de fin general ("daytona") en 2009 con una velocidad de 0,578 TB/min (100 TB en 173 minutos).These applications won the annual general-purpose ("daytona") terabyte sort benchmark in 2009, with a rate of 0.578 TB/min (100 TB in 173 minutes). Para obtener más información sobre este y otros estándares de comparación de ordenación, consulte el sitio Sortbenchmark .For more information on this and other sorting benchmarks, see the Sortbenchmark site.

Este ejemplo utiliza tres conjuntos de programas de MapReduce:This sample uses three sets of MapReduce programs:

  • TeraGen: un programa de MapReduce que genera filas de datos que se van a ordenar.TeraGen: A MapReduce program that generates rows of data to sort

  • TeraSort: toma una muestra de los datos de entrada y usa MapReduce para ordenar los datos de manera absoluta.TeraSort: Samples the input data and uses MapReduce to sort the data into a total order

    TeraSort es una ordenación MapReduce estándar, salvo por el particionador personalizado.TeraSort is a standard MapReduce sort, except for a custom partitioner. El particionador usa una lista ordenada de N-1 claves de muestra que definen el intervalo de claves para cada reducción.The partitioner uses a sorted list of N-1 sampled keys that define the key range for each reduce. En concreto, todas las claves, como esa muestra[i-1] <= clave < muestra[i] se envían a la reducción i.In particular, all keys such that sample[i-1] <= key < sample[i] are sent to reduce i. Esta particionador garantiza que las salidas de la reducción i sean todas menores que la salida de la reducción i+1.This partitioner guarantees that the outputs of reduce i are all less than the output of reduce i+1.

  • TeraValidate: un programa de MapReduce que valida que la salida se ordene de manera global.TeraValidate: A MapReduce program that validates that the output is globally sorted

    Crea una asignación por archivo en el directorio de salida y cada asignación asegura que cada clave es menor o igual que la anterior.It creates one map per file in the output directory, and each map ensures that each key is less than or equal to the previous one. La función de asignación genera registros de la primera y última clave de cada archivo.The map function generates records of the first and last keys of each file. La función de reducción se asegura de que la primera clave del archivo i es mayor que la última clave del archivo i-1.The reduce function ensures that the first key of file i is greater than the last key of file i-1. Los problemas se notifican como una salida de la fase de reducción con las claves que no están en orden.Any problems are reported as an output of the reduce phase, with the keys that are out of order.

Utilice los siguientes pasos para generar datos, ordenarlos y, a continuación, validar el resultado:Use the following steps to generate data, sort, and then validate the output:

  1. Genere 10 GB de datos que se almacenen en el almacenamiento predeterminado del clúster de HDInsight en /example/data/10GB-sort-input:Generate 10 GB of data, which is stored to the HDInsight cluster's default storage at /example/data/10GB-sort-input:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar teragen -Dmapred.map.tasks=50 100000000 /example/data/10GB-sort-input
    

    -Dmapred.map.tasks indica a Hadoop cuántas tareas de asignación se usarán para el trabajo.The -Dmapred.map.tasks tells Hadoop how many map tasks to use for this job. Los dos parámetros finales indican al trabajo que cree 10 GB de datos y los almacene en /example/data/10GB-sort-input.The final two parameters instruct the job to create 10 GB of data and to store it at /example/data/10GB-sort-input.

  2. Use el siguiente comando para ordenar los datos:Use the following command to sort the data:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar terasort -Dmapred.map.tasks=50 -Dmapred.reduce.tasks=25 /example/data/10GB-sort-input /example/data/10GB-sort-output
    

    -Dmapred.reduce.tasks indica a Hadoop cuántas tareas de reducción se usarán para el trabajo.The -Dmapred.reduce.tasks tells Hadoop how many reduce tasks to use for the job. Los dos parámetros finales son simplemente las ubicaciones de entrada y salida de los datos.The final two parameters are just the input and output locations for data.

  3. Use lo siguiente para validar los datos generados por la ordenación:Use the following to validate the data generated by the sort:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar teravalidate -Dmapred.map.tasks=50 -Dmapred.reduce.tasks=25 /example/data/10GB-sort-output /example/data/10GB-sort-validate
    

Pasos siguientesNext steps

En este artículo, ha obtenido información acerca de cómo ejecutar los ejemplos incluidos en los clústeres de HDInsight basado en Linux.From this article, you learned how to run the samples included with the Linux-based HDInsight clusters. Para obtener acceso a tutoriales sobre cómo usar Pig, Hive y MapReduce con HDInsight, consulte los siguientes temas:For tutorials about using Pig, Hive, and MapReduce with HDInsight, see the following topics: