Ejemplo MapReduce Hadoop 1

En el mundo actual los datos se han vuelto las estrellas, cuando uno prende la TV y enciende Netflix se da buena cuenta de esas posibilidades, rapidamente nos damos cuenta de que este sistema a averiguado cosas acerca de nuestras preferencias y en base a ellas nos brinda recomendaciones que en la mayoria de los casos son acertadas, esa es su mision conocer perfectamente nuestros gustos para tenernos mas tiempo sentados comodamente disfrutando de la programacion.

Si uno aparte lo utiliza para ver una de las series de casa como House Of Cards, la mayoria cae atrapado en la historia,fue echa tambien en base a el gusto de la mayoria de la poblacion, vamos la jugada es redonda.

Los programas que generalmente observamos, los que vemos pero luego de un rato abandonamos, a las escenas que nos aburren y le damos avanzar o las que rebobinamos, todo eso lo utiliza Netflix para generar la serie y cada capitulo.

Vamos pues a entrar un poco al mundo de BigData de la mano de la programacion MapReduce con el framework Hadoop(java), yo estoy tambien apenas aprendiendo asi que espero junto con varios lograr entender como hacer cosas como las señaladas en las lineas de introduccion.

Como debemos empezar?

• Definir cuáles son los datos de interés.
• Encontrar sus fuentes (históricos o Social Media, entre otros)
• Grabar los datos en el sistema.
• Determinar cómo serán procesados.

MapReduce

Principales características de MapReduce
• Distribución y paralelización (automáticas).
• Tolerancia a fallos y a redundancias.
• Transparencia: su funcionamiento interno y su mantenimiento son transparentes para los desarrolladores.
Es decir, que sólo tienen que programar la lógica de negocio del algoritmo, en vez de necesitar invertir tiempo gestionando errores o parámetros de la computación distribuida.
• Escalabilidad horizontal: permite que, si se necesita más potencia de computación, baste con añadir
más nodos en el clúster.
• Localización de los datos: se desplaza el algoritmo a los datos y no al contrario, como suele suceder
en sistemas distribuidos tradicionales.
• Dispone de herramientas de monitorización.

Fases de MapReduce
Su ejecución consta de dos fases principales, Map y Reduce, ambas programadas por el desarrollador. Se completan
con una etapa interna, llamada “Shuffle and sort”, que permite vincular las dos fases anteriores. Cada una de ellas
tiene una función:

• Map: se aplica en paralelo para cada ítem en la entrada de datos. Gracias a este mapeo, a cada llamada se asignará una lista de pares (key/value,
también conocidos como clave/valor). El resultado es la creación de un grupo por cada clave generada. El framework de mapreduce agrupará
todos los pares con la misma clave de todas las listas.

• Shuffle and sort: tiene dos misiones. Por una parte, se encarga de ordenar por clave (key) todos los resultados emitidos por el mapper; y, por
otra, de recoger todos los valores intermedios pertenecientes a una clave para combinarlos en una lista asociada a ella.

• Reduce: esta función se aplica en paralelo para cada grupo asociado a una clave. El resultado es la producción de una colección de valores para
cada dominio, aunque también puede darse el caso de generar una llamada vacía. El resultado es la obtención de una lista de valores.

Los requesitos para poder ejecutar el ejemplo son:

-VMWare player bajense de las ultimas versiones que halla en la pagina. yo tengo la 6
-cloudera-quickstart yo baje la -4.4.0-1 pero creo que ya hay mas recientes(dentro ya viene todo configurado para empezar)
-Alguna herramienta para procesar texto que no sea el notepad.
-Fuente de dato: , particularmente este ejemplo necesita de este texto en particular ya que fue hecho expreso a la estructura que tiene este documento, El documento es elaborado cada año por la CIA y contiene un resumen de muchos ambitos para cada pais, tales como poblacion total en ese año, sistema politico, divisiones etnicas, lenguajes, religion, mortandad infantil etc. mucha informacion general para cada pais.
Al analizar el documento se observa que viene bien estructurado en bloques definidos y en general contiene la misma informacion para cada pais.
La complicacion real es poder obtener la informacion de cada pais completa toda vez que aunque esta separada en bloques, esta se reparte a lo largo de muchas lineas dentro del documento.
Se encuentra que dentro de cada pais hay una linea donde especifica a que region pertenece
Lo que se quiere obtener del documento es:
El pais que tiene el mayor numero de habitantes por cada region.