Laboratorio No. V - Hadoop-1
Laboratorio No. V - Hadoop-1
Laboratorio No. V - Hadoop-1
Introducción:
Hadoop MapReduce es un framework de software para procesar grandes conjuntos de datos.
Utiliza muchas computadoras en paralelo que se ejecutan en un clúster. Los hosts de la
computadora funcionan como si fueran una computadora grande.
En esta práctica lanzaremos nuestro primer trabajo MapReduce usando uno de los trabajos de
ejemplo que vienen con la propia distribución de Hadoop. Este trabajo se denomina wordcount
y básicamente cuenta el número de ocurrencias de cada palabra de un fichero. En posteriores
prácticas veremos más detalles de cómo funciona este programa MapReduce.
Found 3 items
$ echo -e "Hadoop is the Elephant King! \\nA yellow and elegant thing.\\nHe never forgets\\nUseful data,
or lets\\nAn extraneous element cling! " > HadoopPoem0.txt
$ echo -e "A wonderful king is Hadoop.\\nThe elephant plays well with Sqoop.\\nBut what helps him to
thrive\\nAre Impala, and Hive,\\nAnd HDFS in the group." > HadoopPoem1.txt
$ echo -e "Hadoop is an elegant fellow.\\nAn elephant gentle and mellow.\\nHe never gets mad,\\nOr does
anything bad,\\nBecause, at his core, he is yellow." > HadoopPoem2.txt
Ahora, elimine los resultados anteriores, y ejecute la aplicación con los nuevos archivos de
texto como entrada.
Para realizar un análisis de sentimiento básico, cuenta las palabras positivas y las negativas de un
conjunto de datos. Divide la diferencia por la suma para calcular una puntuación de sentimiento
general.
En este ejemplo, Map y Reduce se compilan como clases separadas para mantener ejemplos de
códigos cortos y que sean fáciles de leer. MrManager maneja la configuración, define el trabajo y
proporciona el método principal.
MrManager agrega los resultados de sus contadores personalizados al final de la lista de contadores
estándar. Los puntajes de sentimiento y positividad aparecen después del resultado estándar.
Una puntuación de positividad del 50% o superior indica que las palabras de la entrada tienden a
ser en su mayoría positivas. En el caso de Shakespeare, cae solo un 1% por debajo de ese mETA.
Sin embargo, este es un ejemplo rudimentario de un análisis de sentimiento. Si el contenido
incluye frases como "not unhappy,"("no soy feliz"), eso contaría como dos palabras negativas,
aunque la intención general de la frase sea positiva. Puede implementar algoritmos de análisis de
sentimiento más sólidos si así se requiere.
org.myorg.Map$Gauge
NEGATIVE=42163
POSITIVE=41184
**********
**********
Se ofrece una plantilla del mapper y reducer en Perl en el directorio wordcount/streaming_api/ con
comentarios para ayudar a su implementación. No es necesario realizar la práctica en Perl, se puede usar
también Python o incluso es posible instalar otro lenguaje en el cluster.
5. Y revisaremos la salida
En esta práctica veremos como Hive nos permite acceder a ficheros del HDFS como si se tratase
de tablas de una base de datos, con un lenguaje llamado HiveQL que es muy similar a SQL.
2. Descomprimir el dataset
3. Subirlo al HDFS
4. Podemos ver como es el contenido de uno de los ficheros del dataset (todos contienen
la misma información):
[hadoop@ quickstart movielens-100k]$ hadoop fs –
tail movierating/u2.base | tail
Básicamente cada fichero que hemos subido al HDFS contiene la siguiente información
separada por tabulaciones:
5. Lanzamos Hive
6. Creamos un mapeo para los ficheros que hemos subido al directorio movierating
hive> create external table movierating (userid INT, movieid INT, rating
INT) row format delimited fields terminated by '\t' location
'/user/hadoop/movierating'; <dar ENTER>
7. Y ahora ya podemos ejecutar consultas sobre esos ficheros como si todos los ficheros
del directorio se tratasen de una sola tabla de una base de datos SQL:
hive> select count(*) from movierating; <dar ENTER>
Query ID = hadoop_20150527201633_6acd64cd-3f12-479f-b2e0-
87464f722322 Total jobs = 1
Launching Job 1 out of 1
Number of reduce tasks determined at compile time: 1
In order to change the average load for a reducer (in bytes):
set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
set mapred.reduce.tasks=<number>
Starting Job = job_201505272009_0001, Tracking URL = http://hadoop-
master:50030/jobdetails.jsp?jobid=job_201505272009_0001
sec
OK
581140
1 1 5
1 2 3
1 3 4
1 4 3
1 5 3
Time taken: 0.12 seconds, Fetched: 5 row(s)
9. He incluso podemos crear nuevas tablas a partir de los resultados de una consulta:
rawDataSize=10644]
OK
hive> quit;
Práctica 6: Machine learning con Mahout
En esta práctica veremos cómo utilizar la librería de machine learning Mahout para
obtener recomendaciones del películas.
Podemos ver como es el contenido de uno de los ficheros del dataset (todos contienen
la misma información):
Básicamente cada fichero que hemos subido al HDFS contiene la siguiente información
separada por tabulaciones:
2. Crearemos una lista con los identificadores de los usuarios de los cuales queremos obtener
las recomendaciones. Para ello crearemos un fichero en el disco local llamado users y dentro
de ese fichero pondremos el siguiente contenido (asegurarse de no dejar ninguna línea en
blanco al final del fichero): (Puede utilizar el editor gedit)
1
2
3
5. Podemos monitorizar el progreso del trabajo a través del interfaz web del JobTracker:
[461:5.0,789:5.0,1226:5.0,236:5.0,475:5.0,1143:4.7997327,896:4.798386,311:4.79
7
055,337:4.7516527,903:4.750977]
Referencias:
MapReduce. https://maprdocs.mapr.com/52/ClstrAdmin.html
Documentation Cloudera
https://www.cloudera.com/documentation/enterprise/5-9-x/topics/cloudera_quickstart_vm.html