Benchmarking ‘Hadoop The Definitive Guide Chapter 2’ approaches

Following the previous post, I thought it could be interesting to execute some benchmarks to check the execution time of each implementation approach on the Hadoop The Definitive Guide book Chapter 2.

To focus on the problem, the book exercise consists of processing a big file performing an aggregation operation with its data. More specifically:

  • For the benchmark, I’ve created a relatively big file (named noa.all) following the instructions defined on the previous post. It’s a txt file with 16.873.949 lines of Weather Data (4.1 Gigabytes). Each line represents the measurement of weather data (we’re only interested in air temperature and year of measurement) from a weather sensor across the globe.
  • The aggregation operation consists of getting the max value of temperature by year.

The implementation approaches proposed by the book are:

  1. Using Unix Commands (cat and awk)
  2. Using Hadoop (with and without a combiner function)
  3. Using Hadoop Streaming with Ruby (with and without a combiner function)
  4. Using Hadoop Streaming with Python (with and without a combiner function)

And these are the execution time results:

Label Approach Time in seconds
1 cat + awk 23.482
2 cat + python script 82.675
3 Hadoop Streaming with combiner + python 84.359
4 cat + ruby script 86.169
5 Hadoop Streaming with combiner + ruby 89.356
6 Hadoop Streaming + python 90.558
7 Hadoop Streaming + ruby 93.952
8 Hadoop with combiner function 114.527
9 Hadoop 123.788

 

It’s easier to appreciate on a graphic:

cropped

Conclusions

It seems clear that the most optimized approach using only one machine is using Unix commands. Python and Ruby are the second and third best options. The overhead using Hadoop with Java code is not justified in this case. In case we need to reduce more the execution times and if we had several machines, we could consider the Hadoop option. As it ‘s explained in the book, in this case, using a 10-node EC2 cluster running High-CPU Extra Large instances, the program takes seven times less than the naive AWK version does.

How to execute the benchmark

I used the Ruby and Python scripts provided by the git repo from the book. They are on the ch02-mr-intro/src/main/python and ch02-mr-intro/src/main/ruby folders.

The script to execute the cat + awk commands, is a modified version of the max_temperature.sh file (ch02-mr-intro/src/main/awk). This is the code:

#!/usr/bin/env bash

target=”/home/user/Projects/Hadoop/noaa.all”;

cat $target |
awk ‘{ temp = substr($0, 88, 5) + 0;
q = substr($0, 93, 1);
if (temp !=9999 && q ~ /[01459]/ && temp > max) max = temp }
END { print max }’

You can download it from here.

Commands executed:

Command
1 time max_temperature_modified.sh
2 time cat noaa.all | max_temperature_map.py | sort | max_temperature_reduce.py
3 time hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.7.1.jar -input noaa.all -output output -mapper max_temperature_map.py -combiner max_temperature_reduce.py -reducer max_temperature_reduce.py
4 time cat noaa.all | max_temperature_map.rb | sort | max_temperature_reduce.rb
5 time hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.7.1.jar -input noaa.all -output output -mapper max_temperature_map.rb -combiner max_temperature_reduce.rb -reducer max_temperature_reduce.rb
6 time hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.7.1.jar -input noaa.all -output output -mapper max_temperature_map.py -reducer max_temperature_reduce.py
7 time hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.7.1.jar -input noaa.all -output output -mapper max_temperature_map.rb -reducer max_temperature_reduce.rb
8 time hadoop MaxTemperatureWithCombiner noaa.all output
9 time hadoop MaxTemperature noaa.all output

You can download a shell script with all the commands from here.

Environment used

Ubuntu 14.04.3

Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz

8 GB Ram

 

Publicado en Big Data, Hadoop | Deja un comentario

Data for ‘Hadoop The Definitive Guide’ book, chapter 2

Some weeks ago I read the book “Hadoop The Definitive Guide“. In the second chapter, the book explains MapReduce followed by an example using information from the National Climatic Data Center (www.ncdc.noaa.gov).

To get the NCDC Weather data, the book refers to the Appendix C. There you can find the link to the book:

http://www.hadoopbook.com

If you go to the link, and navigate to the “Code and Data” menu, you will find the link to the GitHub repository:

http://github.com/tomwhite/hadoop-book/

Here is the interesting part:

“A sample of the NCDC weather dataset that is used throughout the book can be found at https://github.com/tomwhite/hadoop-book/tree/master/input/ncdc/all.

“The full dataset is stored on Amazon S3 in the hadoopbook bucket, and if you have an AWS account you can copy it to a EC2-based Hadoop cluster using Hadoop’s distcp command.”

So that’s it. If you are interested, you can try with AWS. In my case I prefer to get the data directly from the NCDC Web, so I found this link:

https://www.ncdc.noaa.gov/cdo-web/datasets

Here is the step by step procedure:

  1. Click on Legacy Applications -> Global Hourly Data
  2. Click on FTP button

Then you’ll arrive to the ftp with all the data from 1901 to 2015:

ftp://ftp.ncdc.noaa.gov/pub/data/noaa/

I hope this is useful for someone!

PD. Remember, to follow the book exercise, it’s necessary to preprocess the files generating only one by year. The reason to do so, according to the book, is that process of smaller number of relatively large files is easier and more efficient. You can use this shell script to do this:

#!/usr/bin/env bash

# NCDC Weather file to load into hadoop
target=”/home/user/Projects/Hadoop/data/noaa”;

# Un-gzip each station file and concat into one file
echo “reporter:status:Un-gzipping $target” >&2
for file in $target/2005/*
do
gunzip -c $file >> $target.all
echo “reporter:status:Processed $file” >&2
done

You can download it from here.

Publicado en Big Data, Hadoop | 1 Comentario

Feliz 2013 a todos!

Un año duro, realmente duro para todos. Esperemos que este 2013 que empieza sea un punto de inflexión hacia mejor…

Publicado en Uncategorized | 1 Comentario

CIU. una autèntica fal·làcia interessada.

Primer de tot, em disculpo per avançat de les errades que cometré escrivint amb el meu català d’un barri perifèric de Barcelona. Després, crec necessari deixar-hi clar el meu origen, ja que, de ben segur, influeix al 100% a la meva opinió que seguidament exposaré. Sóc fill d’un andalús que va arribar a Catalunya quan tenia 5 anys i d’una catalana amb arrels una mica més llunyanes, però també a Andalusia. No vull buscar quin percentatge de  catalans es troben a la mateixa situació, però no crec que digui cap bestiesa si la situo almenys en el 40-50% de la població catalana.

Després d’aquesta justificació, diré que, respectant-lo totalment, no em sento part del sentiment independentista aparegut just DESPRÉS de la visita del nostre President a Madrid. Si, dic bé, ell diu que es després de l’11 de setembre, però siguem clars… aquest sentiment va aparèixer de forma totalment oportunista e interessada uns dies més tard, el 20 de setembre, després de la negativa de Rajoy al pacte fiscal. Rajoy, sense gaires llums per variar, no es va adonar que li feia la millor campanya possible al nostre President. I ell va veure l’oportunitat ràpidament. O potser tot era part de la seva estratègia, qui sap. La qüestió de fons es, ¿Seria capaç de jugar amb els sentiments de la població catalana per tal de mantenir-se al poder i continuar la seva debacle neoliberal retalladora? I tant que sí.

I, he de dir que ha fet un gran treball. La seva campanya evoca un sentiment messiànic, alliberador, que de no conèixer la història, els seus pactes continus amb la dreta espanyola i les seves retallades, seria capaç de embriagar la ment catalana més innocent. Però no la meva.

Tornem a ser clars. Aquest sentiment de CIU no es independentista. Es “simple y llanamente” com diria un ex-profe meu, un atac a Madrid per aconseguir millorar l’injust balanç fiscal que tenim. Si hagués dit això el President, potser inclús l’hauria votat. Però no, ha optat per la via de l’engany sentimental. I això no ho puc perdonar. La realitat passa, sota la meva opinió, per que qui demà vagi a votar per la independència a CIU estarà caient en engany innocent, enlluernat per un sentiment fals. Una autèntica fal·làcia interessada que ha creat més crispació, incertesa sobre el futur i una despesa en unes eleccions possiblement estalviables.

Llavors,  Què faré? Què proposo? Molt senzill. Recordem l’essència real del 15M: “No les votes”. No votem els partits que han sigut els propulsors d’aquesta crisi. Tots sabem qui son. Els que contínuament dicten lleis en contra nostre i a favor de les grans multinacionals on després “treballen” i els bancs els quals els financen. Els que no recordo en quin moment ens van representar realment.  Els corruptes.

Votem partits minoritaris, donem aire fresc a aquest País governat per una oligarquia que no pateix la crisi i ens ofega.

Publicado en Uncategorized | Etiquetado , | Deja un comentario

Otro mundo es posible, sin 25S

Con un poquito de fiebre escribo este post, en el día que va entre el último Salvados (magnífico, como siempre) y el tan preparado y nombrado 25S.

Y escribo esto porque quiero decir que creo que se equivocan. ¿Quiénes? Los que quieren cambiar las cosas saliendo a la calle, con pancartas. Los que estarán rodeando el Congreso mañana. Los que gritarán y se sentarán con las manos arriba. Los que gastarán sus energías creyendo en una utópica victoria de la justicia y la moralidad a base de slogans con rimas satíricas y una convincente cara de tener la razón. Éstos, estarán allí el tiempo que se les deje hasta que sean desalojados. Esperemos que sin violencia por ninguna de las partes. En el mejor de los casos, eso es lo que pasará. Nada más. Será una acción totalmente irrelevante dentro de una semana. Asumidlo. Ya se intentó y no sirvió de nada. Hace falta algo más. Hace falta llegar a las personas antes que al Congreso.

Parece mentira como la sociedad evoluciona en algunos aspectos y en otros no. Tenemos tecnología que nos permite comunicarnos prácticamente gratis con cualquier persona del mundo, pero continuamos utilizando los mismos métodos arcaicos de protesta, pancartas, pitos y poco más, que hace más de un siglo…

Os propongo algo:

Dedicad el tiempo que gastáis en preparar este tipo de movilizaciones a:

  1. Formar un PARTIDO POLÍTICO. Temporal o por tiempo indefinido, me da igual. Ni de derechas, ni de izquierdas, ni de centro. Un Partido Político por y para el cambio de la situación actual.
  2. Buscar un equipo de personas capacitadas y motivadas para cambiar esto: economistas,  empresarios, emprendedores, expertos en investigación y desarrollo, etc.
  3. Nombrar un líder. Una puñetera cabeza visible. Alguien capacitado y que sepa que van a ir a por él en cuánto aparezca. Que hable y difunda la idea con tranquilidad y firmeza. Que no tenga nada que ocultar, porque lo sacarán. Y si no hay nada, lo sacarán igual.
  4. Preparar un programa electoral. Que sea claro y suficientemente corto como para aplicar en una única legislatura. Como propuestas personales, yo incluiría:
    1. Acciones penales para los culpables de la crisis (políticos, banqueros, empresarios, quien sea.)
    2. Compromiso de no tomar más medidas que asfixien la economía.
    3. Referéndum para que el pueblo decida si pagar en su totalidad la deuda (devolviéndola en tal caso sin intereses y en los plazos que el nuevo Gobierno considerara aceptables) o declararla deuda odiosa, ya que se ha contraído a espaldas del ciudadano, sin su consentimiento y con fines de enriquecimiento personal y  corporativo.
    4. Ley de transparencia que afecte a todos los procesos políticos tanto a nivel de estado como de comunidades y ayuntamientos.
    5. Ley anti-corrupción, que vele por evitar cualquier tipo de abuso asociado al poder.
    6. Reforma del sistema judicial. Para que de una vez por todas sea independiente y no sea el representante de la voluntad de los dos partidos mayoritarios.
    7. Reforma de la ley electoral, de forma que no se discriminen a los partidos minoritarios respecto a los mayoritarios.
    8. Reforma del sistema de votación. Que podamos en cualquier momento recuperar nuestra “parcela de soberanía” y participar en los procesos legislativos. Algo parecido a lo que hacen en Suiza con sus referéndums.
  5. Difundir ese programa electoral de todas las formas posibles. Llegar a toda la población.
  6. Fijar una hoja de ruta para llegar al poder. Una posible vía, una vez conseguidos los apoyos suficientes (creo que no sería tan difícil tal y como estamos) sería declarar una huelga TOTAL INDEFINIDA hasta forzar unas nuevas elecciones.
  7. Huir y desmarcaros de cualquier asociación, partido o lo que sea, que exista ya. El líder debe dejar claro que no hay ideología de ningún tipo más que del puro sentido común. Que no se pretende romper el estado, ni hacer una comuna hippie, ni expropiar a ningún ricachón ni vivir en comunas. Sólo se pretende hacer lo mejor para el ciudadano, cosa que nuestros políticos vendido-parásitos no hacen desde que existe esta cosa que podríamos llamar pseudo-mierdocracia del siglo pasado.

La sociedad está dormida, anestesiada, pero creo que ESTO y no ir al congreso es lo que en el fondo todos estamos pidiendo a gritos. Desbloquear el sistema. Hackearlo, si soys tecnofriquis. Pero sin romper nada.

Ahora, a ponerme a parir.

 

 

Publicado en Uncategorized | Etiquetado , | 1 Comentario

Reset de la BIOS, trucos trikis y sustitos varios

Escribo este post por si alguien se encuentra con la misma situación que me encontré yo hace un par de días y no quiere acabar en una tienda de informática y que le cobren por una parida así.

Había comprado dos módulos de RAM para mi ordenador, los puse y encendí el PC. No pasaba de la pantalla de arranque inicial, así que forcé el apagar y volví a encender. Los siguientes intentos fueron aún peor. Ya no iba nada. La pantalla no se encendía. No pitaba. Empezaba a girar el ventilador, se encendía la luz del disco duro, la del CD… y se apagaba. Después de unos segundos se intentaba volver a encender … y volvía a apagarse.

Después de momentos de tensión y pensar qué podía ser lo peor… (tenía pinta de haberse tostado algo…) probé con unas plegarias al salvador más socorrido de estos tiempos: Google. Encontré a alguien que parecía que le había pasado lo mismo y le aconsejaban hacer un reset de la BIOS. Ok, y… ¿Cómo haces un reset de la BIOS?

Ahora viene la parte triki del tema. Encontraréis vídeos y posts explicando detalladamente como se hace. Es MUY simple:

  1. Apagas y desenchufas el PC.
  2. Buscas un jumper que tenga tres patillas, dos conectadas y una libre. En los tutoriales que he leído pone que suele estar cerca del chip de la  BIOS y/o de la pila. Otra opción que he leído es quitar la pila, pero por lo visto puedes tener que esperar hasta 24horas de esta manera… no sé.
  3. Cambia la posición del jumper, de forma que se conecte la patilla del medio y la que estaba suelta. Esperas unos 15 segundos y vuelves a dejarlo como estaba.
  4. Fin. Arrancas de nuevo y debería salir un mensaje indicando que la BIOS ha vuelto a sus valores de fábrica.

Pues con esto el PC volvió a la vida. Cosas curiosas que pasan.

Como comentario, decir que mi PC es un HP Pavilion a6641es. Y la placa base es esta:

El jumper se encuentra en la esquina superior derecha, en la foto es de color azul.

 

Publicado en Uncategorized | Etiquetado | Deja un comentario

La policía siempre gana

  1. Controlar Internet.
  2. Endurecer el código penal a quien convoque actos que alteren el orden público. (descontando ir a gritar y saltar con una bandera por las calles).
  3. Tipificar como atentado a la autoridad a la resistencia pasiva.
  4. Criminalizardesinformar.
  5. Reventar manifestaciones. Desprestigiar. Controlar los medios de masas. Atolondrar a la población.
  6. Generar pánico.
  7. Indultar a los que ejercen torturas (la “violencia legal”).
  8. Mentir al pueblo. Reírse. Descaradamente.
  9. Juzgar, pero que las pruebas “no se reproduzcan”.
  10. Eso sí, recortes los que hagan falta, pero a nuestros jefes hay que tenerlos contentos…

Mientras, con la primera de riesgo de España con nuevo máximo anual, el jefe del Estado nos avergüenza mundialmente con sus aventuras por África.

No me extraña que la gente que pueda huya… lo más rápido y los más lejos que pueda.

Este es el país en el que vivimos. Una suma de 1984 y el quijote de la Mancha. Pero en versión cutre.

Una pena.

Publicado en Uncategorized | Deja un comentario