Sei sulla pagina 1di 16

1

Big Data + Hadoop + Imgenes (2D, 3D, Dicom)


Daniel Fernndez (dfernandezp2@est.ups.edu.ec), Christian Balseca (cbalsecan@est.ups.edu.ec), Juan Cataga
(jcatagnaa@est.ups.edu.ec), Jimmy Puente (jpuenteq@est.ups.edu.ec)

Resumen
Hadoop es una herramienta utilizada actualmente por companas y desarrolladores para el manejo de BigData. Big Data
representa un conjunto de datos enormes, que pueden ser
manejados mediante un clster. El manejo de este tipo de
datos grandes, permite su anlisis y entendimiento. En este
paper se abordarn los temas correspondientes a la relacin
entre Hadoop + BigData + manejo de imgenes. Index Terms
Palabras clave: Hadoop, BigData, imgenes, clster.

Abstract
Hadoop is a tool currently used by companies and developers to manage BigData. Big Data represents an enormous
set of data that can be handled by a cluster. The handling
of such large data enables analysis and understanding. In this
paper relevant to the relationship between Hadoop + BigData
+ image management issues will be addressed.
Keywords: Hadoop, BigData, images, cluster.
I. O BJETIVOS
A. Objetivo General

Analizar el funcionamiento de las herramientas en el


tratamiento de imgenes 2D, 3D, Dicom en grandes
cantidades de datos (BigData) dentro del entorno Hadoop
y poniendo a prueba el trfico de datos.

B. Objetivos Especificos

Investigar tecnologas para el manejo y almacenamiento


masivo de imgenes 2D, 3D, DCOM.
Integrar herramientas que permitan la utilizacion y el
aprovechamiento del entorno hadoop para el tratamiento
de imagenes.
Realizar pruebas que demuestren la funcionalidad de
Hadoop en el tratamiento de imgenes, a travs de
sus datos, generando informacin integradora de los
conocimientos adquiridos.

II. I NTRODUCCIN
Lejos de toda duda, vivimos en la era de la informacin,
las empresas tienen un gran desconocimiento sobre lo que
significa Big Data; Las Empresas no saben cmo administrar
grandes volmenes de datos e informacin almacenada en
diferentes medios o bases de datos, llegando a ser de gran
importancia. El aumento de informacin electrnica en el
mundo pone en peligro nuestra capacidad de procesar la
misma.
Los datos tradicionales y el procesamiento de la informacin
se revelan como procedimientos insuficientes para a hacer
frente a este fenmeno.

Big Data debe ser tomado en cuanta como la forma en


que hoy se incrementan rpidamente los datos en volumen,
velocidad y variedad; esto se debe al gran avance y la
utilizacin de tecnologas de informacin (TICs) tanto como
al consumo diario que las personas hacen de ellas con sus
diferentes medios y propsitos.

A. BigData
Para presentar algunas definiciones sobre el trmino Big
Data, del cual existen innumerables definiciones, entre ellas
se tienen:
Segn Norberto Figuerola en su libro Que hay detras de
big data[1], el trmino aplica a la informacin que no puede
ser procesada o analizada mediante procesos tradicionales.
Para [2], Big Data son cantidades masivas de datos que se
acumulan con el tiempo que son difciles de analizar y manejar utilizando herramientas comunes de gestin de bases de
datos, y para [3], Big Data se refiere al tratamiento y anlisis
de enormes repositorios de datos, tan desproporcionadamente
grandes que resulta imposible tratarlos con las herramientas
de bases de datos y analticas convencionales.
Por su parte, el analista Dan Kusnetzky, del Grupo Kusnetzky, seala que La frase Big Data se refiere a las herramientas, procesos y procedimientos que permitan a una organizacin crear, manipular y administrar grandes conjuntos de
datos e instalaciones de almacenamiento [4]. En Big Data El
Rastro Digital De Nuestros Clientes (J. Giner) [5],Forrester
define Big Data como las tcnicas y tecnologas que hacen que
sea econmico hacer frente a los datos a una escala extrema.
Big Data trata basicamente de 1) Las tcnicas y la tecnologa.
Por ejemplo, significa que una empresa la cual tenga gran
representacin y anlisis de datos para tener un valor agregado
con informacin que no ha sido manejada, debe poseer los
medios necesarios para manejar dicha informacin de manera
precisa y posible en cuanto a facilidades y tecnologas se
refiere as como las formas de hacerlo. 2) Escala extrema de
datos que supera a la tecnologa actual debido a su volumen,
velocidad y variedad. 3) El valor econmico, haciendo que
las soluciones sean asequibles y ayuden a la inversin de
los negocios. Las herramientas, los procesos y procedimientos
que permitan a una organizacin crear, manipular y gestionar
conjuntos de datos muy grandes y las instalaciones de almacenamiento.
[6]Gartner define el Big Data como un gran volumen,
velocidad o variedad de informacin que demanda formas
costeables e innovadoras de procesamiento de informacin
que permitan ideas extendidas, toma de decisiones y automatizacin del proceso.

25.00- vuelos de avin por da, el volumen diario de slo


es ta nica fuente de datos alcanza a los p etabytes. Los
medidores inteligentes y equipo industrial pesado como las
refineras de petrleo y plataformas de perforacin generan
volmenes similares de datos. Otros ejemplos de volmenes
de datos son la conversi n de millones de lecturas anuales para
predecir el consumo de energa, o los terabytes de informacin
creados por tweets cada da.
Figure 1. Bases de datos BigData

B. Estado actual de BigData


.Las investigaciones en Big Data son bastantes en la actualidad; aqu se presentan algunas de ellas:[7] Una encuesta
realizada por LogLogic encuentra que el 49% de las organizaciones estn algo o muy preocupados por la gestin de Big
Data, pero que el 38% no entiende lo que es, y el 27% dice que
tiene una comprensin parcial ; adems, la encuesta encontr
que 59% de las organizaciones carecen de las herramientas
necesarias para gestionar los datos de sus sistemas de TI [7].
Khera explic que: Big Data se trata de muchos terabytes
de datos no estructurados, donde La informacin es poder,
y Big Data, si se gestiona correctamente, puede proporcionar
una cantidad de conocimiento. . . [7]. Segn la encuesta, el
62% mencion que ya haba gestionado ms de un terabyte de
datos; eso indica que el volumen de datos en el mundo est
aumentando a un ritmo casi incomprensible.
Seala Beyer de Gartner[8] y otros expertos que: los
grandes volmenes de datos, o Big Data, requieren grandes
cambios en el servidor, la infraestructura de almacenamiento
y la arquitectura de administracin de la informacin en la
mayora de las empresas. En Encuesta Global de Analisis
Forense de Datos 2014 (D. Remnitz)[7], McKinsey dice que
es necesario prepararse para contratar o reciclar personal, pues
las empresas u organizaciones carecen de personas capacitadas
en Big Data. Adems, proyecta que para el 2018, solo en
Estados Unidos, se necesitarn entre 140 mil y 190 mil nuevos
expertos en mtodos estadsticos y tecnologas de anlisis
de datos, incluyendo el ampliamente publicitado papel de
cientfico de datos. Seala Williams de Catalina, en [7],
que La gente que construy las bases de datos del pasado
no son necesariamente las personas que van a construir las
bases de datos del futuro. Segn el estudio de Worldwide
Big DataTechnology and Services 2013-2017 de IDC [9] ,
La tecnologa y servicios de Big Data crecer con una tasa
anual de crecimiento compuesto del 27% hasta llegar a los
32.400 millones de dlares en 2017, unas seis veces la tasa
de crecimiento del mercado general de tecnologas de la
informacin y comunicaciones.
C. Dimensiones de Big Data
1) Volumen : Las empresas estn inundadas cada da con
mayores datos de todo tipo, fcilmente pueden acumular
terabytes o petabytes de informacin . Generado s por mquina
s, los datos se produce en cantidades mucho mayores que las
tradicionales . Otro ejemplo, un simple jet a reaccin solo
puede generar 10 TB de datos en 30 minutos. Con ms de

2) Velocidad: Aunque los ciclos de negocio se han acelerado, no todos los datos de una organizacin tienen la misma
urgencia de anlisis asociada. La clave para entender en qu
punto del espectro de la velocidad es necesario trabajar (desde
el procesado en lote hasta el flujo de datos continuo) est
asociada a los requerimientos de los procesos y los usuarios.
Contribuir a una mayor velocidad de procesamiento, es la
naturaleza en tiempo real de la creacin de datos. La velocidad
afecta a la latencia: el tiempo de espera entre el momento en
el que se crean los datos, el momento en el que se captan
y el momento en el que estn accesibles. Hoy en da, los
datos se generan de forma continua a una velocidad a la que
a los sistemas tradicionales les resulta imposible captarlos,
almacenarlos y analizarlos.
3) Variedad: A medida que se multiplican los canales de
interaccin con clientes, empleados, proveedores y procesos de
negocio, la informacin de valor es cada vez ms el resultado
de la combinacin de datos de mltiple origen y tipologa,
esto es: la existencia de diferentes tipos y fuentes de datos.
La variedad tiene que ver con gestionar la complejidad de
mltiples tipos de datos. Aqu se generan presentan innumerables formas entre las que se incluyen texto, datos web, tuits,
datos de sensores, audio, vdeo, secuencias de clic, archivos
de registro y mucho ms.
4) Valor y Veracidad:

Valor

En el contexto de Big Data, valor hacer referencia a los


beneficios que se desprenden del uso de Big Data (reduccin
de costes, eficiencia operativa, mejoras de negocio).

Veracidad

La veracidad hace referencia al nivel de fiabilidad asociado a


ciertos tipos de datos. Esforzarse por conseguir unos datos de
alta calidad es un requisito importante y un reto fundamental
de big data, pero incluso los mejores mtodos de limpieza
de datos no pueden eliminar la imprevisibilidad inherente de
algunos datos, como el tiempo, la economa o las futuras
decisiones de compra de un cliente. La necesidad de reconocer
y planificar la incertidumbre es una dimensin de Big Data que
surge a medida que los directivos intentan comprender mejor
el mundo incierto que les rodea.

solucin Hadoop se basa en un desarrollo de Google del ao


2009 denominado MapReduce, y que actua en dos fases. La
primera fase, Map, introduce una query en en el sistema de
nodos. Determinados en que nodos estn los datos relevantes,
se les hace llegar la query, y la procesan en paralelo. En la fase
Reduce, se recopilan las respuestas de cada nodo individual
para componer la respuesta final a la pregunta inicial. Est
respuesta es analizada con respuestas de anlisis especficas.
Figure 2. Dimenciones de BigData

D. Arquitectura de BigData
En el mundo tecnolgico existen varios modelos de arquitecturas de Big Data:
1) Recoleccin o Recopilacin o Fuentes de datos de Big
Data: Pginas Web.Puede ser registrar las huellas en pginas
web, con el seguimiento de clics, que realice el usuario .[10]
Redes sociales. De medios o redes como: Facebook, Twitter,
LinkedIn y blogs. Por ejemplo, como se menciona en [10]
Muchas compaas de seguros ahora utilizan los medios
sociales para investigar las denuncias. Sin embargo, la mayora
de los reguladores todava no permiten a las aseguradoras a
usar los medios sociales para establecer las tasas de poltica
durante el proceso de suscripcin. Por ejemplo, si una aseguradora de vida que ve el perfil de Facebook de un solicitante
indica que ella es una estudiante de aviacin, la aseguradora no
puede usar ese conocimiento para aumentar sus primas debido
a que podra ser considerado un alto riesgo.
2) Carga de datos de Big Data: En esta etapa los datos
se cargan aplicando el concepto de metadatos (datos que
describen otros datos). Adems, de la carga como tal, es la
primera vez que los datos se estructuran [8]. Es de aclarar que
los metadatos son informacin que describe caractersticas de
cualquier dato, como el nombre, la ubicacin, la importancia
percibida, la calidad y sus relaciones con otros objetos de
datos que la empresa considere digno de la gestin [8]. La
siguiente tarea, es la capacidad de usar metadatos, bibliotecas
semnticas, y datos maestros. Se busca vincular los datos entre
el conjunto de datos estructurados y no estructurados con
metadatos y datos maestros. Se debe transformar los datos
no estructurados en datos estructurados. Es importante acudir
a la integridad referencial, la cual ayuda inicialmente con la
clave principal y las dems relaciones en una base de datos
tradicional.
E. Tecnologas de big data
Las caractersticas especficas del Big data requiere innovaciones tecnolgicas en todos los mbitos del tratamiento
de la informacin. Consecuentemente, nuevas herramientas en
lo referente a la captura, almacenamiento, acceso, anlisis y
gestin de los datos que manejamos.
[?]Big data se orientan al tratamiento paralelo de la
informacin. Sobre todas ellas, destaca Apache Hadoop, una
solucin de software libre diseada para el tratamiento de hasta
exabytes de datos distribuidos en mltiples nodos. Hadoop se
ha convertido en un estndar de facto sobre el que se desarrollan herramientas comerciales por compaas tradicionales. La

III. APACHE HADOOP


Es un framework de software (herramienta diseada para
la solucin de problemas particulares) de licencia libre, que
permite trabajar a las aplicaciones con cantidades enormes de
nodos y especialmente de petabytes de datos. Utiliza lenguaje
de programacin Java, el cual le permite su portabilidad,
y actualmente es utilizado por una comunidad grande de
contribuyentes y usuarios finales. Es por eso que es una
herramienta frecuentemente usada para el anlisis de Big Data.
Fue creado por Doug Cutting, que nombr a la herramienta
Hadoop en honor a su elefante de juguete (de ah viene
su logotipo) y fue originalmente desarrollado para apoyar al
proyecto Nutch, que es un motor de bsqueda.

Figure 3. Logotipo de Hadoop

Hadoop genera dos elementos principales que son fundamentales para su operacin: MapReduce y HDFS (sistema
de archivos distribuidos de Hadoop). MapReduce es una
herramienta que permite crear algoritmos para el anlisis de
datos y obtener resultados y HDFS trabaja con base de datos
que admite errores pero tiene alta disponibilidad.
Una de las ventajas principales al usar Hadoop, es que
proporciona estas dos funciones que superan a las plataformas
alternas, y es una solucin rentable al momento de trabajar con
Big Data (gran cantidad de datos) y para crear clsters no se
requiere de supercomputadoras.
Se presenta como una solucin para los programadores
sin experiencia en desarrollo de aplicaciones para entornos
distribuidos, dado que oculta la implementacin de detalles
propios de estos sistemas: paralelizacin de tareas, administracin de procesos, balanceo de carga y tolerancia a fallos.
[11]
Su avance es indudable que ahora es usado por empresas
grandes que manejan la ms alta tecnologa, as como tambin
grandes cantidades de datos, como Yahoo! y Facebook, pero
tambin tiene alcance en el mundo de las finanzas, tecnologa,
telecomunicaciones, entretenimiento, entre otras. Hadoop fue
diseado para que sea veloz y fiable en el anlisis de datos, es
muy til al momento de trabajar en proyectos que requieren
escalabilidad como los mencionados anteriormente.
Desde la primera arquitectura de Hadoop contaba con los
siguientes componentes considerados sus pilares fundamentales:

Sistema de ficheros: Hadoop se apoya para su funcionamiento en un sistema de ficheros distribuidos, denominado HDFS [11]
Hadoop MapReduce: el motor de Hadoop consta de un
planificador de trabajo MapReduce, as como de una serie de
nodos encargados de llevarlos a cabo.[11]
Hadoop Common: conjunto de utilidades que posibilitan la
integracin de subproyectos de Hadoop. [11]
Hadoop tiene la capacidad de ejecutarse en modo local
que por defecto est configurado para ejecutarse en modo no
distribuido y como proceso aislado de Java. Tambin puede
ejecutarse en modo pseudo-distribuido donde cada Hadoop se
ejecuta individualmente. El ltimo modo es distribuido, este
es el modo que usa todos los recursos de Hadoop (disponibles
en el clster) ya que mejora el paralelismo de los procesos.
El sistema HDFS funciona con dos elementos en la arquitectura: el NameNode que se encuentra en el nodo master para
mantener indexados los datos y el DataNode que estn con los
esclavos para almacenar los datos.

A. Framework Hadoop
Hadoop est constituido por subproyectos que complementan y mejoran su funcionabilidad, existen inumerables
proyectos para cada necesidad, algunas son desarrolladas por
empresas privadas aunque siguen siendo dirigidos por Apache.
Lo ms importantes proyectos son: ambari, avro, cassandra,
chukwa, hbase, hive, mahout, pig, spark, zookeeper.

B. Hadoop Java API


Los programas realizados en MapReduce para Hadoop estn
compuestos por tres clases:
1) Clase map: Comprende los mtodos para realizar la
tarea Map, que transforma la informacin en parejas intermedias con clave y valor.
2) Clase reduce: Contiene los mtodos encargados de
realizar la tarea Reduce, es decir toma las parejas de la fase
Map y los analiza.
3) Clase principal: Contiene el mtodo main que como
en la estructura de una API de JAVA, contiene las clases
estticas anteriores y tambin los parmetros de configuracin,
el componente Job. Ejecuta las aplicaciones.

C. Hadoop 2.0
En versiones anteriores solo se admitia un paradigma de
programacin (MapReduce). En esta versin, se incorpora una
nueva herramienta llamada YARN, que es un subproyecto de
Hadoop. YARN permite mas modelos de programacin para
analizar los datos en el mismo sistema HDFS, tambin separa
las gestiones como indica la imagen.

Figure 4. Hadoop vs. Hadoop 2.0

La arquitectura de Hadoop 2.0 quita algunas tareas al


jobtacker y por ende asoma dos nuevos componentes dentro de
YARN, un resourceManager global y un AplicationMaster por
aplicacin (AM). ResourceManager reemplaza al jobtacker en
ciertas tareas y se encarga del nodo master y un NodeManager
por cada slave.
El ResourceManager es la ultima autoridad que arbitra los
recursos entre las aplicaciones en el sistema. El ApplicationMaster por aplicacin es una entidad especifica que se encarga
de negociar los recursos con el ResourceManager y trabajar
con los NodeManager para ejecutar y supervisar las tareas que
lo componen [11].
El ResourceManager usa un recurso llamado Scheduler que
es un planificador puro, es decir que no realiza seguimientos
ni monitoreo. Por otro lado el NodeManager se encuentra en
cada nodo esclavo y sirve para ejecutar las aplicaciones y el
seguimiento de los recursos.
1) HADOOP COMMON: Hadoop Common se refiere a la
coleccin de utilidades y librerias communes para soportar
otros mdulos de Hadoop. Es una parte esencial del modulo
del framework de Apache Hadoop, as como el HDFS, Hadoop
YARN y Hadoop MapReduce. Como todos los otros mdulos,
Hadoop Common assume que los fallos el hardware son
communes y que esotos deben ser automticamente manejados
mediante software, a travs de Hadoop Framework.
Hadoop Common tambin es conocido como Hadoop Core.
IV. H ADOOP D ISTRIBUTION F ILE S YSTEM
Para entender cmo funciona el HDFS, es necesario analizar
tambin el funcionamiento de los sistemas de archivos distribuidos.
A. HDFS
Se refieren a cualquier sistema de archivos que permita el
acceso a datos desde mltiples mquinas dentro de la red.
Las mquinas clientes, no tendrn acceso (en general) a los
bloques de almacenamiento de forma directa, sino que acceden
a ellos a travs de un protocolo de red. [11] El primer sistema
de este tipo se desarroll en la dcada de 1970, y fue Sun
Microsystems quienes crearon el sistema de archivos de red
NFS (Network File System), el cual utilizaba el Modelo OSI
para distribuir archivos en un entorno de computadoras de rea
local (LAN).
Los sistemas de archivos distribuidos almacena archivos
en una o ms maquinas denominadas servidores y los hace
accesibles a otros maquinas denominadas clientes, donde se
manipulan como si fueran locales. Para que un sistema de

archivos sea tolerante a fallas, debe tolerar la perdida de


recurso de almacenamiento, es decir la perdida de disco si
el sistema es local o la perdida de nodos de almacenamiento
si es distribuido (en un clster).
La principal funcionalidad es que stos solucionan el problema de bajas prestaciones, debido a alta latencia, cuellos de
botella de red, problemas de escalabilidad y sobrecarga, entre
otros. En general, mejoran el rendimiento de sistemas.
Para que estos sitemas sean tolerables a las fallas, deben
orientar y distribuir datos en mltiples servidores. De sta
manera se logra mayor desempeo, manteniendo la integridad de los sistemas, tolerando prdidas de recursos, pero
sobretodo, manteniendo datos disponibles.
Metas de los sistemas de archivos distribuidos [9]:

Transparencia en el acceso
Transparencia en la localizacin
Transparencia en la concurrencia
Transparencia ante las fallas
Hterogeneidad
Escalabilidad
Transparencia en la replicacin
Transparencia en la migracin
Tolerante a la particin de red

Figure 5. Nodos interconectados en HDFS

HDFS almacena los ficheros partindolos en bloques (por


defecto de 64 MB). Con esto se consigue minimizar el coste
de las bsquedas. Usa una arquitectura Master-Slave donde
el maestro es el NameNode que se encarga de gestionar los
ficheros y los metadatos. Estos metadatos contienen informacin sobre el fichero, bloquees y la localizacin de estos en
los DataNodes. Los DataNodes tienen la responsabilidad de
almacenar y recuperar los bloques as como tambin forman
un cluster donde los bloques se replican (por defecto 3 veces)
sobre los DataNodes para garantizar la tolerancia a fallos[12].

HDFS (Hadoop Distribution File System) es un sistema de


ficheros, creado por Hadoop, con la capacidad de trabajar
enormes cantidades de informacin, dichos datos son divididos
y almacenados en los discos locales de los nodos dentro del
clster. Dentro de sus caractersticas esta que es enfocado
a aplicaciones que tienen el modelo de una sola escritura y
muchas lecturas, simplificando la coherencia de los datos, disminuye la necesidad de requisitos de control de concurrencia
dando un acceso de alto rendimiento. Otra caracterstica que
le hace nica es que ubica al archivo de forma lgica en vez
de mover al archivo.
HDFS es un sistema compuesto de varios nodos interconectados que contienen los archivos y los directorios. Su
arquitectura es similar a las herramientas anteriores de un
master y varios slaves, en este sistema el nodo principal toma
el nombre de NameNode que regula el acceso a clientes a los
ficheros, por otro lado los DataNodes se encargan de gestionar
la informacin de los discos locales de cada nodo [11]. Ambos
son componentes software que trabajan de forma individual
entre sistemas operativos heterogneos. HDFS fue diseado
en un lenguaje Java y por esta razn es un sistema portable
en todos los sistemas que manejen este lenguaje.

Figure 6. Carga de un fichero en HDFS

V. MAPREDUCE
Es un proceso que apareci por parte de Google a finales
del 2004 con el objetivo de crear un framework para que
trabaje con grandes cantidades de datos sin que tenga que
usar supercomputadoras. Es un modelo sencillo que requiere

implementacin dela programacin Map y Reduce, que se


aplicar a cada dato de entrada, y el resto de tareas como
asignacin de trabajos entre otros los realiza el entorno de
ejecucin.
El motor de datos MapReduce controla el sistema de
ficheros de forma planificada. Esto es denominado JobTracker,
a travs de este los clientes envan trabajos tipo MapReduce.
El planificador los enva a los nodos disponibles en el clster
para que ejecuten las funciones Map y Reduce en cada nodo
y tratando de reducir el trfico de red dando prioridad a los
nodos que necesitan para reducir trabajo al nodo principal
(ya que Hadoop trabaja en una estructura maestro/esclavo).
El JobTracker se sita en el maestro mientras que los esclavos
poseen un TaskTracker. En un clster tpico, se ejecuta un
TaskTracker por nodo de cmputo. [11]
Cada vez que se enva un trabajo a un clster, el Jobtracker
escoge el plan de ejecucin en base a la cantidad de ficheros
que va a procesar, de ah en adelante elige que nodo lo
ejecuta y se encarga nicamente de supervisar que esta tarea
sea completada. En el caso de fallar una tarea, el JobTracker
relanza la tarea, posiblemente en un nodo diferente, existiendo
un lmite predefinido de intentos en el que dicha tarea falle de
forma reiterada. [11]
Las aplicaciones de ste modelo se ejecutan en dos partes:
Map: que realiza la ingestin y la transformacin de los
datos de entrada, en la cual los registros de entrada son
procesados en paralelo. [11]
Reduce: fase de la agregacin o resumen, donde todos los
registros asociados entre si deben ser procesados juntos por
una misma entidad. [11]

trabaja en estos pares (valor y clave) procesndoles y con la


posibilidad de trabajar en paralelo para ser ms eficaz. Las
funciones Map y Reduce estn definidas ambas con respecto
a datos estructurados en parejas: clave, valor. [11]
La funcin Map se ejecuta de forma paralela sobre cada
pareja de entrada y crea listas intermedias en cada uno,
mientras que la funcin Reduce es aplicada a cada grupo de
parejas que tengan la misma clave para generar una nueva lista
compacta. Entre estas fases existe una operacin que agrupa
los pares con la misma clave, el proceso acaba con la funcin
reduce ya que el resultado (ficheros) queda grabado en el
sistema de ficheros distribuidos, este proceso se simplifica en
la siguiente imagen:

Figure 8. Fases de MapReduce

Cada aplicacin MapReduce es dividida en unidades ms


pequeas denominadas tareas y ya que las tareas pueden ser
mayores al nmero de nodos, requiere una planificacin que
se encarga de ordenar el proceso de ejecucin asignando tareas
en cola a los nodos que se van liberando. Tiene la ventaja de
que es sincronizado mediante una barrera que no permite
que empiece una funcin antes de que acabe la otra; esto es,
no puede empezar Reduce sin que acabe Map.

Figure 7. Explicacin sencilla proceso Map y Reduce

La forma de ejecutar de Hadoop MapReduce es dividir en


fragmentos la entrada de datos, cada fragmento lo trabaja de
forma independiente por la funcin Map creando grupos los
cuales se ordenan y pasa a la funcin reduce.
Cuando Map ejecuta una tarea lo hace en cualquiera de los
nodos del clster, pero si realiza varias tareas a la vez, ste
lo hace en forma paralela, pero el objetivo principal del Map
es formar parejas de los registros de entrada, y a la salida los
divide en particiones que son ordenadas por claves. El reduce

Figure 9. Combiner y Partitioner

MapReduce tiene un manejo de errores ya que trabaja en


servidores de gama baja y las memorias RAM y el disco duro
pueden fallar. Este proceso se encarga de seguir corriendo los
tasks a pesar de que un clster se caiga o falle. A parte de lo
mencionado existen dos procesos ms llamados combiner
y partitioner. El partitioner se encarga de asignar clave a
las parejas intermedias con el objetivo de asignar el mismo
nmero de claves a cada reduce pero no toma en cuenta
el valor, as que no necesariamente sern equilibrados. El
combiner es el punto ms alto de MapReduce, en algunos
casos pueden existir procesos repetidos y todos deben ser
subidos a la red y esta funcin evita de modo que los fusiona
antes de ser enviados.
A. Clster
Un cluster de computadoras, es un conjunto de equipos de
cmputo que se comportan como una supercomputadora nica.
Son utilizados principalmente para la solucin de problemas
de alto costo computacional referentes a las ciencias, las
ingenieras y el comercio.[13]

Figure 10. Clster de computadoras

1) Definicin: El trmino cluster se aplica a un conjunto


o conglomerado de computadores, construido utilizando componentes de hardware comunes y en la mayora de los casos,
software libre; los computadores se interconectan mediante
alguna tecnologa de red. El cluster puede estar conformado
por nodos dedicados o por nodos no dedicados.[14]
En un cluster con nodos dedicados, los nodos no disponen
de teclado, mouse ni monitor y su uso est exclusivamente
dedicado a realizar tareas relacionadas con el cluster.
Mientras que, en un cluster con nodos no dedicados, los
nodos disponen de teclado, mouse y monitor y su uso est
exclusivamente dedicado a realizar tareas relacionadas con el
cluster, el cluster hace uso de los ciclos de reloj que el usuario
del computador no esta utilizando para realizar sus tareas.
Simplemente, un cluster es un grupo de mltiples computadores unidos mediante una red de alta velocidad, de tal
forma que el conjunto es visto como un nico computador,
ms potente que los comunes de escritorio.[14].
2) Historia: Sus inicios fueron en las dcadas de los 50 y
60. El fundamento principal fue la llamada Ley de Amdahl,
la cual describe matemticamente cunto se puede esperar de

hacer en paralelo una serie de tareas mediante una arquitectura


que lo permita [13]. Esta historia tambin va de la mano con la
de las primeras redes de computadores puesto que un clster
son computadoras interconectadas. Hay que recordar que as
fue como nacio ARPANET, la primera red de computadoras
bsicas, que posteriormente se convertira en lo que ahora
conocemos como Internet.
En 1984, VAXcluster fue un sistema operativo creado con
el propsito de proporcionar ventajas del procesamiento en
paralelo, manteniendo fiabilidad de datos. Fue uno de los
primeros softwares que obtuvieron xito comercial.
Seguido de este, los siguientes principios comerciales se
generaron en 1994 y fueron Tandem Himalaya y el IBM S/390.
Este ltimo ms enfocado en el uso empresarial.
Un elemento fundamental en el desarrollo de clsters fue el
software Parallel Virtual Machine, el cual era fuente abierta.
Estaba basado en comunicaciones TCP/IP, permitiendo la
creacin de un superconductor virtual del protocolo TCP/IP.
Este sistema permiti el desarrollo de un proyecto de la NASA
en 1993 [13].
En 1995, se pudo generar un clster que ya era capaz de
realizar clculos firmemente. Fue concebido bajo el concepto
de ser un superordenador.
3) Desarrollo: Los clusters se han desarrollado en varias
ramas, como son las aplicaciones para solucin de alto cmputo, servidores Web y comercio electrnico, as como bases
de datos de alto rendimiento, entre otros usos.
El incremento del uso de clsters se debe al fcil acceso en
nuestros das a computadoras econmicas con potentes microprocesadores, a la existencia de redes de altas velocidades, as
como el desarrollo de software para efectuar programacin
paralela o computacin distribuida. Pero principalmente la
existencia de los clusters esta motivada por la necesidad de
potencia computacional para la solucin de problemas muy
complejos [13].
4) Componentes de un clster:
1) Nodos. Pueden ser simples computadores, sistemas
multi-procesador o estaciones de trabajo.
2) Sistemas Operativos. Debe ser de fcil uso y acceso as
como permitir mltiples procesos y usuarios.
3) Conexiones de red. Los nodos de un clster pueden
conectarse mediante una simple red Ethernet, o puede
utilizar tecnologas especiales de alta velocidad como
Fast Ethernet, Gigabit Ethernet, entre otras.
4) Middleware. El middleware es un software que generalmente acta entre el sistema operativo y las aplicaciones
con la finalidad de proveer:
Un interfaz nico de acceso al sistema, denominado SSI
(Single System Image), el cual genera la sensacin al
usuario de que utiliza un nico computador muy potente.
Herramientas para la optimizacin y mantenimiento del
sistema: migracin de procesos, checkpoint-restart (detener uno o varios procesos, migrarlos a otro nodo y continuar su funcionamiento), balanceo de carga, tolerancia
a fallos, etc.
Escalabilidad: debe poder detectar automticamente
nuevos nodos conectados al cluster para proceder a su
utilizacin. [14]

Dado que no podemos utilizar datos de tipo imagen con


el sistema de archivos tradicional de Hadoop, no podremos
desarrollar aplicaciones que trabajen con imgenes. Es all
cuando para el procesamiento de imgenes en Hadoop debemos utilizar la librera llamada HIPI (Hadoop Image Processing Interface). Esta librera permite la agrupacin y desagrupacin de imgenes y es utilizada debido a que el sistema de
archivos HDFS es incapaz de trabajar con este tipo de archivos
(imgenes).

Figure 11. Componentes de un clster

5) Beneficios de la tecnologa clster: Las aplicaciones


paralelas escalables requieren: buen rendimiento, baja latencia,
comunicaciones que dispongan de gran ancho de banda, redes
escalables y acceso rpido a archivos. Un cluster puede
satisfacer estos requerimientos usando los recursos que tiene
asociados a l.
Los clusters ofrecen las siguientes caractersticas a un costo
relativamente bajo:
Alto Rendimiento (High Performance).
Alta Disponibilidad (High Availability).
Alta Eficiencia (High Throughput).
Escalabilidad.
La tecnologa cluster permite a las organizaciones incrementar
su capacidad de procesamiento usando tecnologa estndar,
tanto en componentes de hardware como de software que
pueden adquirirse a un costo relativamente ghvhgvhgvhgvhgv
bajo[14].
VI. T RATAMIENTO DE IMAGENES 2D 3D DICOM CON
H ADOOP
A. Introduccion
En primer lugar debemos conocer que Hadoop no posee
ningn formato en concreto para trabajar con imgenes [15].
El procesamiento digital de imgenes conlleva un alto costo
en tiempo y en utilizacin de recursos por lo que dado el gran
poder de procesamiento de Hadoop podra ser utilizado para el
procesamiento de imgenes tambin. Para tal efecto debemos
dar un breve repaso al funcionamiento de Hadoop.
El entorno de computacin distribuida Hadoop utiliza su
propio sistema de archivos denominado HDFS, el cual permite
distribuir los datos a travs de un clster, se utiliza este
tipo de formato de archivos porque permite dividir los datos
envindolos a cada uno de los nodos, cumpliendo as con
el paradigma de MapReduce, que consiste en dos partes:
toma uno de esos pares de llave/valor y da como resultado
un conjunto de pares llave/valor llamados intermedios los
cuales se agrupan por la misma llave para despus pasar a
la funcin Reduce que se encarga de recibir un par llave/valor
y un conjunto de valores asociados a l y da como resultado
otro conjunto de valores (normalmente dicho conjunto slo
contiene un elemento).[16]

Figure 12. Logo de la libreria HIPI

B. Conceptos Generales
1) Imagen 2D: Una imagen en 2D se puede definir como
una imagen expresada sobre los ejes X e Y del plano cartesiano, y que no permiten comportamientos propios de cuerpos
en el espacio. [A]
Una grfica 2D tiene dos ejes (X e Y). La mayora de
los dibujos, fotografas, pinturas y libros de formato de la
imagen son de dos dimensiones. Las animaciones 2D son
planas, aunque se puede crear la sensacin de profundidad
en algunos de los elementos que usan luz y sombra. Los
dibujos animados como "Scooby-Doo" y "Los Picapiedra" son
ejemplos de animacin 2D. Las pelculas estndar son 2D;
hay una impresin de profundidad, ya que se registran en
el mundo real, pero la imagen aparece plana en la pantalla.
[B] Los trminos "2D" o "bidimensional" se pueden utilizar
metafricamente para referirse a un elemento de trabajo o de
un trabajo que carece de sustancia, matiz o ideas suficientes.
[B] Un personaje de ficcin que est mal escrito y carece de
personalidad puede ser descrito como de dos dimensiones o,
ms informalmente, 2D.
2) Imagen en 3D: Resultado final del proceso de renderizado de un modelo en 3D. Una imagen en 3D, en definitiva,
es una imagen en dos dimensiones que simula las tres dimensiones, pero proviene de un mundo conceptual en 3D.
Ese mundo en 3d permite que puedan generarse mltiples
imgenes en 3D desde diferentes perspectivas. Una imagen
en 3D puede almacenarse en cualquier formato grfico rster.
Mltiples imgenes en 3D constituyen una animacin 3d. El
proceso de la creacin de grficos tridimensionales comienza
con un grupo de frmulas matemticas y se convierte en un
grfico en 3D. Las frmulas matemticas (junto con el uso de
objetos externos, como imgenes para las texturas) describen
objetos poligonales, tonalidades, texturas, sombras, reflejos,
transparencias, translucidez, refracciones, iluminacin (directa,
indirecta y global), profundidad de campo, desenfoques por
movimiento, ambiente, punto de vista, etc. Toda esa informacin constituye un modelo en 3D.

3) Formatos de Archivos de Entrada: Apache Hadoop


MapReduce posee sus propios formatos de entrada de
archivos. Cualquier clase de trabajo que se maneje en Hadoop
debe estar contenido en alguno de estos tipos de archivos,
InputFormat describe los formatos de entrada de los archivos
utilizados. MapReduce incluye varios formatos de entrada
predefinidos tales como TextInputFormat, el cual es el InputFormat por defecto de Hadoop. El formato TextInputFormat
lee archivos de texto plano sin formato dividos por lneas.
Los archivos que son detectados poseen la extensin . gz y
son descomprimidos usando el CompressionCodec apropiado.
Entre los formatos mas conocidos constan los siguientes:
CombineFileInputFormat, CompositeInputFormat, DBInputFormat, FileInputFormat, MultiFileInputFormat, NLineInputFormat, SequenceFileInputFormat [17].

4) Formato de Archivos de Salida: De igual manera que los


archivos de entrada, los archivos de salida poseen formatos
especficos y propios. OutputFormat contiene las especificaciones de los ficheros de salida, TextOutputFormat es el
formato de archivo de salida por defecto. Otros formatos de
salida son: DBOutputFormat, FileOutputFormat, MultipleOutputFormat, SequenceFileOutputFormat. Las acciones que lleva
a cabo MapRedeuce en cuanto a los ficheros de OutputFormat
consiste en: validar las especificaciones de salida y proporcionar la implementacin utilizada para escribir los archivos
de salida de trabajo, estos archivos se guardan en el sistema
de archivos distribuido [18].

5) Clase JobConf: Es una clase de Java incluida en el API


de Hadoop usada para configurar el trabajo de MapReduce,
entre estos los aspectos de Map, Reduce, Combiner y archivos
de entrada y salida [19].

6) Librera HIPI (Hadoop Image Processing Interface):


Usada en el entorno de MapReduce usada principalmente
para el cmputo de imgenes en entornos de computacin
distribuida, pero para poder trabajar con dicha librera primero
debemos crear un contenedor de imgen denominado HIB
(Hipi Image Bundle) el cual agrupa varias imgenes combinadas en un archivo ms grande. Esta librera nos provee
una API (Application Programming Interface) para tareas de
procesamiento de imgenes en un entorno de computacin
distribuida. La ejecucin de dicha de librera es similar a la
de un trabajo en MapReduce, con la nica diferencia que
primeramente se prepara un contenedor para las imgenes
con las que se va a trabajar. Dicho contenedor es conocido
como HipiImageBundle (HIB), el cul es un conjunto de
imgenes combinadas en un archivo grande junto a ciertos
metadatos usados para describir algunos aspectos referentes a
las imgenes.

Figure 13. Diagrama Creacion Contenedor HIB

7) DICOM: DICOM (digital Imaging and Communications


in Medicine)por sus siglas en ingls, o Imagenologia Digital
y Comunicaniones en Medicina, es el estndar para imgenes
radiolgicas. DICOM es el formato universal para PACS
(Picture Archiving and Communications System), DICOM
permite la utilizacin de las mismas en estaciones de trabajo,
tanto con imgenes de tomografas, resonancias magnticas,
etc.
8) Amazon Elastic MapReduce: Servicio web de la compaa Amazon que funciona bajo demanda y que permite
la utilizacin de nodo a nivel escalable, ha sido diseado
para proporcionar procesamiento escalable al alcance de los
desarrolladores. Funciona bajo el sistema de archivos HDFS.
C. Usando la libreria HIPI
Dada la dificultad de Hadoop para trabajar con imgenes,
estas pueden ser de cualquier formato, hemos de tener en
cuenta la importancia de la librera HIPI para trabajar con
imgenes. En un inicio de desarrollo de Hadoop no se contempl la utilizacin de imgenes por lo que en este framework
no se dispone de un sistema de archivos de imgenes en
especfico, aqu es donde cobra vital importancia la creacin
de una librera particular para este tipo de implementacin.
Dicha librera nos otorga clases que trabajan bajo el mismo
paradigma de MapReduce con toda su funcionalidad pero
utilizadas en el manejo de imgenes. Bsicamente el uso
de la librera se compone de dos partes esenciales: crear el
contenedor de archivos y desarrollar el cdigo para el cmputo
de imgenes. Una vez que se recibe el contenedor de imgenes
HIB, se deshace dicho contenedor, se reparten las imgenes
entre los nodos de ejecucin que haya en el clster y se
procede con el proceso de Mapper. Los pares de clave-valor
son barajados y se reparten entre los Reducer para finalmente
devolver los datos resultantes. En el caso de las imgenes los
pares de clave-valor varan segn la programacin que haya
sido usada, por ejemplo se podran agrupar las imgenes segn
el tipo de cmara con el que hayan sido tomadas.
La librera HIPI por si sola no modifica el comportamiento
de MapReduce, pero una vez que Mapper toma el control,
el usuario puede modificar los parmetros para procesar las
imgenes. Los contenedores HIB se almacena con la extensin
.tar en GNU/Linux y son implementados a travs de la
clase HipiImageBundle. Para crear un nuevo contendor debemos crear un nuevo objeto HipiImageBundle y pasar como

10

parmetro el directorio en donde queremos que se almacene


el contenedor generado, este objeto permite acceder a los datos
de configuracin que se despliegan en el clster. Muchos de
estos valores de configuracin solo permiten ser consultados
pero algunos valores tambin permiten su modificacin.
Para aadir imgenes se crea un fichero tipo File en el cual
indicamos el directorio en el cual se encuentran los archivos y
debe ser convertido a un objeto de tipo FileInputStream, finalmente para aadir la imagen utilizamos el mtodo addImage
pasando como parmetros el objeto de tipo FileInputStream y
el tipo de imagen. La clase FloatImage de la librera HIPI es
una representacin de una imagen como un conjunto de pixeles
especificados con un solo punto flotante de precisin[2.0], es
un conjunto de tres dimensiones de valores de punto flotante
por lo que puede ser tratado como una matriz, permitindonos
realizar las siguientes tareas: Crear un FloatImage, obtener
o modificar los valores de los pixeles, convertir a escala de
grises, operaciones aritmticas(permite escalar la imagen) e
Image Cropping(usado para obtener solo ciertas secciones de
la imagen). [20].

Bsqueda de personas dentro de una base de datos de rostros


[24].
VII. I NSTALACION DE H ADOOP Y SUS HERRAMIENTAS
A. Pasos Previos
Hay que tomar en cuenta que existen pasos los cuales se
los debe hacer como usuario root, tambin vamos a especificar
en cada paso lo que se hace en el nodo maestro y en el nodo
esclavo y lo que se realizara en ambos nodo Para nuestro
ejemplo se uso: master = nodo maestro, nodo = nodo esclavo.
El primer paso a realizar es colocar ips estticas tanto el nodo
master como en el esclavo.

Figure 15. Configuracin Hmaster

Configuracin nodo
Figure 14. Esquema HIPI

D. Casos de Uso
Unos de los casos ms conocidos en los cuales ha funcionado el esquema de computacin distribuida es en The New
York Times, el cual utiliza Hadoop y EC2 (Amazon Elastic
Compute Cloud) para convertir 4 Tera bytes de imgenes TIFF
en imgenes PNG de 800 KB para ser mostradas en la Web
en 36 horas [21].
Un caso de implementacin de Hadoop propuesto por la
Facultad de Ciencias Fsicas y Matemticas de la Universidad
de Chile con el fin de paralelizar un algoritmo para la deteccin
de cmulos de galaxias. Como antecedente se da a conocer
que existe un algoritmo de deteccin que funciona de manera
secuencial y por lo tanto sera de gran utilidad implementarlo
de forma de paralela [22]. De la Escuela Politcnica del Litoral
(ESPOL) se conocen varias implementaciones de Hadoop para
analizar imgenes. Una de estas implementaciones habla de
procesamiento de imgenes producto de una investigacin
sobre bacterias y su comportamiento. En dicho trabajo se
pretende encontrar las paredes de clulas epiteliales de plantas
de tipo Arabidopsis Thaiana, para este caso se desarroll
un algoritmo que ayuda a detectar estructuras curvilneas,
desarrollado en C++ [23]. En otro caso de uso de Hadoop de
las misma ESPOL es usado para la creacin de un Mdulo de

Figure 16. Configuracion Nodo

Para este paso es importante que debemos trabajar en root,


para ingresar a root usamos el siguiente comando: # su, se nos
pedir la contrasea del usuario root y luego continuamos con
este proceso.
En master # hostnamectl set-hostname master
En nodo: # hostnamectl set-hostname nodo
Una vez cambiado el nombre cerramos el terminal y abrimos otro y si visualizara los cambios realizados, para verificar

11

escribimos: # hostname, y nos saldr el nombre del host.


A continuacin daremos permisos de administrador tanto al
maestro como al nodo, ingresando a el fichero sudoers. # nano
/etc/sudoers. Buscamos donde diga root y debajo de esta parte
colocamos de igual manera, agregamos el nombre del usuario
de donde estamos trabajando, <nombre_usuario> ALL=(ALL)
ALL.
De igual manera lo hacemos en el nodo esclavo debido a que
se necesitaran permisos para realizar algunos procedimientos
B. Proceso de Instalacion
1) Editar el archivo de hosts, esto se lo debe realizar
en todos los nodos.: Escribir el siguiente comando: # nano
/etc/hosts. Agregue las siguientes lneas (direcciones IP y
nombre de los nodos) esto se realizara en los dos nodos en
master y el esclavo:
172.17.40.79 master
1 7 2 . 1 7 . 4 0 . 8 0 nodo
2) Crear usuario hadoop.: Este proceso se realizara en el
nodo maestro y en el esclavo
# u s e r a d d hadoop
# passwd hadoop

#
#
#
#

cd / o p t /
ls
t a r z x f j d k 8u45l i n u x x64 . t a r . gz
mv j d k 1 . 8 . 0 _45 j d k

5) Ahora copiamos /opt/jdk a todos los esclavos: Esto solo


lo hace el maestro
# s c p r j d k nodo : / o p t
Es importante revisar desde el nodo si se encuentra el
archivo recibido en el nodo esclavo.
# l s / opt /
6) En cada nodo, vamos a usar la alternatives: En cada
nodo, vamos a usar la alternatives herramienta para configurar
Oracle Java como marco predeterminado Java, ( al ingresal el
segundo comando nos salra un men para escoger una opcio
nosotros debemos elegir la opcin /usr/bin/java). En el nodo
maestro y en el esclavo ingresamos los siguientes comandos:
# a l t e r n a t i v e s i n s t a l l / u s r / b i n / j a v a j a v a /
opt / jdk / bin / java 2
# a l t e r n a t i v e s c o n f i g j a v a # s e l e c t
a p p r o p r i a t e program ( / opt / jdk / bin / j a v a )
# a l t e r n a t i v e s i n s t a l l / u s r / b i n / j a r j a r / o p t
/ jdk / bin / j a r 2
# a l t e r n a t i v e s i n s t a l l / u s r / b i n / j a v a c j a v a c
/ opt / jdk / bin / javac 2
# a l t e r n a t i v e s s e t j a r / o p t / j d k / b i n / j a r
# a l t e r n a t i v e s s e t j a v a c / o p t / j d k / b i n / j a v a c

3) Configuracin de la llave para servicios de hadoop:


Es recomendable dejar las configuraciones por defecto, es
decir le damos enter al momento que nos pedir nombre y
contrasea de la clave, de manera que la clave se creara con
las configuraciones que vienen por defecto en los dos nodos
(master y esclavo) .

7) Comprobamos si todo est bien ejecutado: En el nodo


maestro y en el esclavo ingresamos los siguientes comandos

# s u hadoop

# j a v a v e r s i o n

En el nodo master ingresamos los siguientes comandos:


$ s s h k e y g e n t r s a
$ s s h copyi d i ~ / . s s h / i d _ r s a . pub
hadoop@master
$ s s h copyi d i ~ / . s s h / i d _ r s a . pub
hadoop@nodo
$ chmod 0600 ~ / . s s h / a u t h o r i z e d _ k e y s
$ su
En el nodo esclavo ingresamos los siguientes comandos:
$ chmod 0600 ~ / . s s h / a u t h o r i z e d _ k e y s
$ su
Esto ser til cuando queremos iniciar todos los servicios
de Hadoop en todos los nodos esclavos.
4) Instalacin de Oracle Java SDK: Copiar y desempaquetar el jdk:
Ingresamos a la carpeta dond se encuentra el paquete jdk8u45-linux-x64.tar.gz y lo copiamos en el directorio /opt con
el siguiente comando.
# cp j d k 8u45l i n u x x64 . t a r . gz / o p t /
Entramos a /opt y desempaquetamos el archivo .tar.gz.
Movemos el archivo desempaquetado a una nueva carpeta
llamada jdk
En el nodo maestro ingresamos los siguientes comandos

8) Establecer las variables ambientales editando el siguiente fichero: En el nodo maestro y en el esclavo ingresamos
los siguientes comandos
# nano / e t c / b a s h r c
Al final del archivo copiamos las siguiente lineas.
e x p o r t JAVA_HOME= / o p t / j d k
e x p o r t JRE_HOME= / o p t / j d k / j r e
e x p o r t PATH=$PATH : / o p t / j d k / b i n : / o p t / j d k /
j r e / bin
a l i a s l l = l s l c o l o r
a l i a s cp = cp i
a l i a s mv= mv i
a l i a s rm = rm i
9) Comprobacion: Compruebe que todo este bien
# source / etc / bashrc
# e c h o $JAVA_HOME
10) Instalacin y configuracin de hadoop 2.6.0: Copiar y
desempaquetar hadoop.
Al igual java copiamos el archivo hadoop-2.6.0.tar.gz al
directorio /opt. En master ingresamos los siguientes comandos:
# cp hadoop 2 . 6 . 0 . t a r . gz / o p t /
Ahora procedemos a desempaquetar Hadoop.

12

# t a r z x f hadoop 2 . 6 . 0 . t a r . gz
# rm hadoop 2 . 6 . 0 . t a r . gz
# mv hadoop 2 . 6 . 0 hadoop
11) Copiamos /opt/hadoop a los nodos esclavos: En master
ingresamos el siguiente comando:
# s c p r hadoop nodo : / o p t
12) Editamos el fichero .bashrc en todos los nodos: En el
nodo master y el esclavo ingresamos los siguientes comandos:
# nano / home / hadoop / . b a s h r c
Y agregamos las siguientes lineas al final del archivo que
se abrira.
export
export
export
export
export
export

HADOOP_PREFIX= / o p t / hadoop
HADOOP_HOME=$HADOOP_PREFIX
HADOOP_COMMON_HOME=$HADOOP_PREFIX
HADOOP_HDFS_HOME=$HADOOP_PREFIX
HADOOP_MAPRED_HOME=$HADOOP_PREFIX
HADOOP_YARN_HOME=$HADOOP_PREFIX

<value > f a l s e </ value >


</ p r o p e r t y >
<property >
<name> d f s . d a t a n o d e . d a t a . d i r < / name>
< v a l u e > / home / hadoop / d a t a n o d e < / v a l u e >
</ p r o p e r t y >
16) Crear el directorio de datos HDFS NameNode y dar
permisos: En el nodo master y el esclavo ingresamos los
siguientes comandos:
# m k d i r / home / hadoop / namenode
# chown hadoop / home / hadoop / namenode /
# c h g r p hadoop / home / hadoop / namenode /
17) Editar
hdfs-site.xml:
Editar
/opt/hadoop/etc/hadoop/hdfs-site.xml. En el nodo master
y el esclavo ingresamos los siguientes comandos:
# nano / o p t / hadoop / e t c / hadoop / h d f s s i t e . xml
Aadimos las siguientes lneas al archivo.

<property >
<name> d f s . namenode . d a t a . d i r < / name>
< v a l u e > / home / hadoop / namenode < / v a l u e >
# nano / o p t / hadoop / e t c / hadoop / c o r e s i t e . xml </ p r o p e r t y >

13) Editar /opt/hadoop/etc/hadoop/core-site.xml: En el


nodo master y el esclavo ingresamos los siguientes comandos:

Aadir las siguientes lneas al archivo.


Importante copiar las lneas en el medio de (<configuration>), y debemos pegar las lineas sin editarlas.
<property >
<name> f s . d e f a u l t F S < / name>
<value >hdfs : / / master :9000/ </ value >
</ p r o p e r t y >
14) Crear directorios : Crear directorios de datos HDFS
DataNode en cada nodo de la propiedad y el cambio de
/opt/hadoop :
En el nodo master y el esclavo ingresamos los siguientes
comandos:
#
#
#
#
#

chown
chgrp
mkdir
chown
chgrp

hadoop / o p t / hadoop / R
hadoop / o p t / hadoop / R
/ home / hadoop / d a t a n o d e
hadoop / home / hadoop / d a t a n o d e /
hadoop / home / hadoop / d a t a n o d e /

15) Editar hdfs-site.xml: Editar el siguiente archivo


/ o p t / hadoop / e t c / hadoop / h d f s s i t e . xml

18) Editar
mapred-site.xml:
Edite
/opt/hadoop/etc/hadoop/mapred-site.xml. En el nodo master y
el esclavo se deberan ejecutar los comandos:
En esta parte no vamos a encontrar el archivo mapredsite.xml solamente encontraremos uno con la extensin
mapred-site.xml.template por lo que crearemos un nuevo
archivo mapred-site.xml copiando lo del template al nuevo
archivo creado. Ejecutando la siguiente lnea de comando:
# cp / o p t / hadoop / e t c / hadoop / mapred s i t e .
xml . t e m p l a t e / o p t / hadoop / e t c / hadoop /
mapred s i t e . xml
A continuacion vamos a editar nuestro archivo
(/opt/hadoop/etc/hadoop/mapred-site.xml)
aadimos
las
siguientes lneas. # nano /opt/hadoop/etc/hadoop/mapredsite.xml.
Aadimos las siguientes lneas al archivo.
<property >
<name> m a p r e d u c e . f r a m e w o r k . name < / name>
< v a l u e > y a r n < / v a l u e > <!and n o t l o c a l (!)>
</ p r o p e r t y >

En el nodo master y el esclavo ingresamos los siguientes


comandos:

DESDE ESTE PASO HASTA EL FINAL, LOS COMANDOS LOS VAMOS A REALIZAR SOLO EN EL NODO
MASTER.
# nano / o p t / hadoop / e t c / hadoop / h d f s s i t e . xml
19) Editar yarn-site.xml : Editar el siguiente archivo
Y modificar las siguientes lineas:
/opt/hadoop/etc/hadoop/yarn-site.xml

<property >
<name> d f s . r e p l i c a t i o n < / name>
< v a l u e >1 </ v a l u e >
</ p r o p e r t y >
<property >
<name> d f s . p e r m i s s i o n s < / name>

# nano / o p t / hadoop / e t c / hadoop / y a r n s i t e . xml


Aadimos las siguientes lneas al archivo.
<property >
<name> y a r n . r e s o u r c e m a n a g e r . hostname < / name>
<value >master </ value >

13

</ p r o p e r t y >
<property >
<name> y a r n . n o d e m a n a g e r . hostname < / name>
< v a l u e > m a s t e r < / v a l u e > <! o r nodo >
</ p r o p e r t y >
<property >
<name> y a r n . n o d e m a n a g e r . auxs e r v i c e s < / name>
<value >mapreduce_shuffle </ value >
</ p r o p e r t y >

20) Editar slaves : Editar /opt/hadoop/etc/hadoop/slaves en


master (para que maestro puede iniciar todos los servicios
necesarios en esclavos automticamente)
# nano / o p t / hadoop / e t c / hadoop / s l a v e s
Figure 17. Informacin de Nodos

A continuacin vamos a borrar lo que nos aparesca en el


fichero y aadimos las siguientes lneas al archivo. master
nodo

C. Instalando libreria HIPI

21) Desactivar cortafuegos e IPv6 : Hadoop no soporta


IPv6 - problemas con la escucha en todas las interfaces a
travs 0.0.0.0

Previamente se debe tener configurado Hadoop y ademas


debemos instalar Apache Ant que sirve para compilar el
codigo, despues de instalado se debe comprobar que esta en
el sistema

# systemctl stop firewalld

$ which a n t
/ usr / l o c a l / bin / ant

22) Editar sysctl.conf : Editar /etc/sysctl.conf con el comando:

Hay dos formas de instalar la libreria la primera es clnando


una distribucion desde GitHub o descargando un archivo .jar
precompilado.
Para clonarlo utilizamos la siguiente lina de codigo

# nano / e t c / s y s c t l . c o n f

$ g i t c l o n e g i t @ g i t h u b . com : u v a g f x / h i p i . g i t

Aadir las siguientes lineas al final.

Generalmente CentOS no reconoce el comando git por lo


que debe ser instalado con el siguiente comando
yum i n s t a l l

net . ipv6 . conf . a l l . disable_ipv6 = 1


net . ipv6 . conf . d e f a u l t . disable_ipv6 = 1

23) Ingresamos a Hadoop: Ingresamos a hadoop y corremos dfs y el hilo yarn.


#
$
$
$

s u hadoop
h d f s namenode f o r m a t
s t a r t d f s . s h
s t a r t y a r n . s h

Para comprobar si hemos hecho bien el proceso de instalacin probamos ingresando jps . en donde tanto en hmaster
como esclavo se visualizaran las herramientas propias de cada
uno, ingresando en el siguiente link : http://master:50070/ .
Vemos que el nodo principal se compone de un ResourceManager, NodeManager (HILO), NameNode y DataNode
(HDFS). Un nodo esclavo acta como un NodeManager y un
DataNode.

git

Despus de que el repositorio se ha clonado, debe editar


dos lneas en el build.xml
b u i l d . xml :
...
< p r o p e r t y name = " hadoop . home " v a l u e =
" / o p t / hadoop 2 . 6 . 0 / s h a r e / hadoop " / >
< p r o p e r t y name = " hadoop . v e r s i o n " v a l u e
= "2.6.0" />
...
El valor correcto de hadoop.home y hadoop.version puede
ser diferente en su sistema de lo que se muestra arriba.
b u i l d . xml :
...
< p r o p e r t y name = " hadoop . home " v a l u e =
" / u s r / l o c a l / C e l l a r / hadoop / 2 . 5 . 1 /
l i b e x e c / s h a r e / hadoop " / >
< p r o p e r t y name = " hadoop . v e r s i o n " v a l u e
= "2.5.1" />
...

14

Construimos los Programas HIPI Biblioteca y el Ejemplo


$ ant
...
hipi :
[ j a v a c ] C o m p i l i n g 30 s o u r c e f i l e s t o /
users / horton / hipi / l i b
[ j a r ] Building j a r : / users / horton / hipi /
l i b / hipi 2.0. j a r
[ echo ] Hipi l i b r a r y b u i l t .
compile :
[ j a v a c ] Compiling 1 source f i l e to / u s e r s
/ horton / hipi / bin
[ j a r ] Building j a r : / users / horton / hipi /
examples / c o v a r i a n c e . j a r
[ echo ] Covariance b u i l t .
all :
BUILD SUCCESSFUL
Total time : 3 seconds
HIPI esta ahora instalada en la maquina y podemmos
actualizar la version con el siguiente comando
$ git pull origin release
From g i t h u b . com : u v a g f x / h i p i
b r a n c h r e l e a s e > FETCH_HEAD
A l r e a d y upt o d a t e .

4) Construir los RPMs: Construir RPM


# r p m b u i l d t b g a n g l i a 3 . 6 . 0 . t a r . gz
5) Instalar los RPMs en el master : Instalar RPM en el
master
cd / r o o t / r p m b u i l d / RPMS / x86_64 /
yum i n s t a l l . rpm y
Copiar los RPMs en los nodos a excepcion del paquete
metad. Para esto, lo eliminamos.
# rm r f g a n g l i a gmetad . rpm
Luego copiamos en una carpeta temporal /tmp
# s c p . rpm node1 : / tmp
Y hacemos ssh
# s s h node1
Accedemos a la carpeta temporal
# / tmp
Descargamos el libconfuse
# h t t p s : / / d l . f e d o r a p r o j e c t . o r g / pub / e p e l / 6 /
x86_64 / l i b c o n f u s e 2.7 4. e l 6 . x86_64 . rpm
Y lo instalamos:
# yum i n s t a l l / tmp / . rpm y
6) Editar el archivo gmetad.conf : Editar para configurarlo

D. Instalacion de Ganglia
1) Descargar : Ganglia de la pgina web oficial
http : / / sourceforge . net / projects / ganglia /
f i l e s / 3 . 6 . 0 / g a n g l i a 3 . 6 . 0 . t a r . gz
Para esto, se lo hace directamente con una lnea de comando
desde el terminal:
# wget h t t p : / / s o u r c e f o r g e . n e t / p r o j e c t s /
ganglia / f i l e s / 3 . 6 . 0 / ganglia 3.6.0. t a r .
gz
Nos mostrar el progreso en pantalla as como el estado en
porcentaje y la velocidad de descarga.
2) Habr que instalar dependencias: Instalar las dependencias
# yum i n s t a l l f r e e t y p e d e v e l rpmb u i l d
php h t t p d l i b p n g d e v e l l i b a r t l g p l
devel python devel pcre devel autoconf
automake l i b t o o l e x p a t d e v e l r r d t o o l
d e v e l a p r d e v e l g c c c ++ make p k g c o n f i g
y
3) Se procede a instalar libconfuse: Instalar libconfuse
# yum i n s t a l l h t t p s : / / d l . f e d o r a p r o j e c t .
o r g / pub / e p e l / 6 / x86_64 / l i b c o n f u s e d e v e l
2.7 4. e l 6 . x86_64 . rpm

# v i / e t c / g a n g l i a / gmetad . c o n f
Buscar la lnea:
d a t a _ s o u r c e my c l s t e r l o c a l h o s t
y reemplazarla por
data_source "[ nombre_de_cluster ]" 1 master
7) Edita el archivo gmond.conf: Editar gmond.conf
# v i / e t c / g a n g l i a / gmond . c o n f
Buscar las lneas:
cluster {
name = " u n s p e c i f i e d "
owner = " u n s p e c i f i e d "
latlong = " unspecified "
url = " unspecified "
}
reemplazarlas por:
cluster {
name = " [ n o m b r e _ d e _ c l u s t e r ] "
owner = " u n s p e c i f i e d "
latlong = " unspecified "
url = " unspecified "
}
Buscar dos lneas:

15

mcast_join = 239.2.11.71
y modificarlas de la siguiente manera
# mcast_join = 239.2.11.71
Ahora hay que configurar el gmond.conf en los nodos :
Se hace un ssh al nodo:
# s s h [ nombre_nodo ]
Modificar el archivo
# v i / e t c / g a n g l i a / gmond . c o n f
En el parmetro de nombre de clster, modificar la misma
lnea que en el master:
name = u n s p e c i f i e d
por:
name = [ n o m b r e _ c l u s t e r ]
y la lnea
mcast_join = 239.2.11.71
por
# mcast_join = 239.2.11.71
Adicionalmente se deben invalidar todas las lneas que se
muestran a continuacin, aadiendo el smbolo # en el
interior de los corchetes:
udp_recv_channel {
( aadir corchetes a las l n e a s aqu dentro )
}
Y tambin las de:
tcp_accept cannel {
( aadir corchetes a las l n e a s aqu dentro )
}
Salir de la conexin con el nodo
# exit
8) Instalar Ganglia-Web: Primero descargarla desde la
lnea de comandos
# wget h t t p : / / d o w n l o a d s . s o u r c e f o r g e . n e t /
p r o j e c t / g a n g l i a /3.1.1%20%28 Wien %29/
g a n g l i a web 3 . 1 . 1
Entrar a la carpeta donde se descarg
# cd / r o o t / Downloads / g a n g l i a
y poner
# yum i n s t a l l g a n g l i a web 3 .1 .1 1 . n o a r c h .
rpm y
Para asegurarse de que los servicios se inicien en el booteo,
hay que usar las siguientes lneas desde el master:
#
#
#
#
#
#

c h k c o n f i g h t t p d on
c h k c o n f i g gmetad on
c h k c o n f i g gmond on
service httpd s t a r t
s e r v i c e gmetad s t a r t
s e r v i c e gmond s t a r t

Igualmente en el nodo:
# s s h [ nombre_nodo ]
# c h k c o n f i g gmond on
# s e r v i c e gmond s t a r t
Y cerrar la conexin con el nodo:
# exit
9) Fin de instalacin:: Ahora se puede entrar desde el
navegador (Firefox) y poner directamente en la barra de
direcciones:
master / ganglia
y mostrar ganglia ejecutndose.
R EFERENCES
[1] N. Figuerola, Que hay detras de big data. [Online]. Available: https://articulosit.files.wordpress.com/2013/03/que-hay-detrc3a1sde-big-data1.pdf
[2] M. P. Marques, Big Data Tecnicas herramientas y aplicaciones.
[Online]. Available: http://directa.org.mx/cr-por-nestor-marquez/
[3] R. Bollatti, BigData en la educacion, p. 3. [Online].
Available: http://universoup.es/5/explorandoelhorizonte/los-big-data-enla-educacion/
[4] J. G. Cantero, Como la avalancha de datos se ha
convertido en un importante beneficio, p. 21. [Online].
Available: https://boscolg.wordpress.com/2012/11/16/big-data-como-laavalancha-de-datos-se-ha-convertido-en-un-importante-beneficio/
[5] J. L. C. Giner. Big data el rastro digital de nuestros
clientes. [Online]. Available: http://www.esade.edu/web/esp/aboutesade/today/news/viewelement/311123/1/big-data,-el-rastro-digital-denuestros-clientes
[6] Reporte
de
gartner
analiza
big
data
alrededor
de
tecnologia
de
datos.
[Online].
Available:
http://searchdatacenter.techtarget.com/es/noticias/2240171952/Reportede-Gartner-analiza-big-data-alrededor-de-tecnologia-de-datos
[7] D. Remnitz, Encuesta Global de Analisis Forense de Datos 2014.
[Online]. Available: http://www.ey.com
[8] Big
data
desafios
y
aplicaciones
OVH.
[Online].
Available:
http://www.cioal.com/2015/03/09/ibm-conecta-servidoresopenpower-la-nube-de-softlayer/
[9] Conceptos de sistemas de archivos distribuidos. [Online]. Available:
http://www.eslared.org.ve
[10] Google
abre
la
puerta
a
potenciar
a
las
redes
sociales
en
sus
busquedas
ABCes.
[Online].
Available:
http://www.abc.es/tecnologia/redes/20150205/abci-google-plustwitter-facebook-linkedin-youtube-201502051014.html
[11] M.
Rodriguez,
Herramientas
para
big
data
entorno
hadoop,
pp.
59,60,65,66,67,73.
[Online].
Available:
http://repositorio.bib.upct.es:8080/jspui/bitstream/10317/4402/1/tfg482.pdf
[12] L. M. Gracia, Que es HDFS. [Online]. Available:
https://unpocodejava.wordpress.com/2013/07/24/que-es-hdfs/
[13] EcuRed. Cluster computadoras EcuRed. [Online]. Available:
www.ecured.cu
[14] Clusters
definiciones.
[Online].
Available:
http://clusterfie.epn.edu.ec/clusters/Definiciones/definiciones.html
[15] Carlos Gomez Martinez, Tratamiento de imagenes con Hadoop, in
Procesamiento de grandes volumenes de datos en entornos Cloud
Computing utilizando Hadoop MapReduce, Almeria, Apr. 2013, p. 135,
universidad de Almeria.
[16] Emmanuel Barajas Gonzalez, HDFS, in Diseno de una arquitectura
para procesamiento paralelo y distribuido de conjuntos masivos de datos
no estructurados para el proyecto de Smarter Traffic de CUCEA e IBM,
Guadalajara, 2013, p. 11, universidad de Guadalajara.
[17] Carlos Gomez Martinez, Formatos de Archivos de Entrada, in Procesamiento de grandes volumenes de datos en entornos Cloud Computing
utilizando Hadoop MapReduce, Almeria, Apr. 2013, p. 122, en Universidad de Almeria.
[18] Gomez Martinez Carlos, Salida Formatos de Archivos, in Procesamiento de grandes volumenes de datos en entornos Cloud Computing
utilizando Hadoop MapReduce, Almeria, Apr. 2013, p. 124, universidad
de Almeria.

16

[19] Gomez Martinez C, Clase JobConf, in Procesamiento de grandes


volumenes de datos en entornos Cloud Computing utilizando Hadoop
MapReduce, Almeria, Apr. 2013, p. 118, universida Almeria.
[20] Carlos G Martinez, Uso de la libreria HIPI, in Procesamiento de
grandes volumenes de datos en entornos Cloud Computing utilizando
Hadoop MapReduce, Almeria, Apr. 2013, pp. 127131, universidad de
Almeria.
[21] Sana Nawazish Ali, Hadoop usado en el New York Times, in Benchmarking Distributed System in the Cloud: Yahoo! YCSB, Pamplona,
p. 33, universidad Publica de Navarra.
[22] Marcel Andre Augsburger Becerra, Algortimo de Deteccion, in Paralelizacion de un algoritmo para la deteccion de cumulos de galaxias,
Santiago de Chile, Jan. 2012, p. 4, universidad de Chile.
[23] Gustavo Irving Cali Mena, Analisis de Paredes Celulares, in Utilizacion de la plataforma Hadoop para implementar un programa distribuido que permita encontrar las paredes de celulas de la epidermis de
plantas modificadas geneticamente, Guayaquil, 2010, pp. 15, eSPOL.
[24] Merchan Angel, Plaza Juan, and Moreno Juan, Reconocimento de
Rostros, in Implementacion de un modulo de busqueda de personas
dentro de una base de datos en un ambiente distribuido usando Hadoop
y los servicios web de Amazon (AWS), Guayaquil, p. 2, por ESPOL.

Potrebbero piacerti anche