proyecto bigdata hadoop

Upload: james

Post on 07-Aug-2018

238 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/21/2019 Proyecto Bigdata Hadoop

    1/16

    1

    Big Data + Hadoop + Imágenes (2D, 3D, Dicom)Daniel Fernández ([email protected]), Christian Balseca ([email protected]), Juan Catagña

    ([email protected]), Jimmy Puente ([email protected])

    Resumen

    Hadoop es una herramienta utilizada actualmente por com-panías y desarrolladores para el manejo de BigData. Big Datarepresenta un conjunto de datos enormes, que pueden sermanejados mediante un clúster. El manejo de este tipo dedatos grandes, permite su análisis y entendimiento. En estepaper se abordarán los temas correspondientes a la relaciónentre Hadoop + BigData + manejo de imágenes.   Index Terms—Palabras clave: Hadoop, BigData, imágenes, clúster.

    Abstract

    Hadoop is a tool currently used by companies and devel-

    opers to manage BigData. Big Data represents an enormousset of data that can be handled by a cluster. The handlingof such large data enables analysis and understanding. In thispaper relevant to the relationship between Hadoop + BigData+ image management issues will be addressed.

    Keywords: Hadoop, BigData, images, cluster.

    I. OBJETIVOS

     A. Objetivo General

    •   Analizar el funcionamiento de las herramientas en eltratamiento de imágenes 2D, 3D, Dicom en grandescantidades de datos (BigData) dentro del entorno Hadoopy poniendo a prueba el tráfico de datos.

     B. Objetivos Especificos

    •   Investigar tecnologías para el manejo y almacenamientomasivo de imágenes 2D, 3D, DCOM.

    •   Integrar herramientas que permitan la utilizacion y elaprovechamiento del entorno hadoop para el tratamientode imagenes.

    •   Realizar pruebas que demuestren la funcionalidad deHadoop en el tratamiento de imágenes, a través desus datos, generando información integradora de losconocimientos adquiridos.

    II. INTRODUCCIÓNLejos de toda duda, vivimos en la era de la información,

    las empresas tienen un gran desconocimiento sobre lo quesignifica Big Data; Las Empresas no saben cómo administrargrandes volúmenes de datos e información almacenada endiferentes medios o bases de datos, llegando a ser de granimportancia. El aumento de información electrónica en elmundo pone en peligro nuestra capacidad de procesar lamisma.

    Los datos tradicionales y el procesamiento de la informaciónse revelan como procedimientos insuficientes para a hacerfrente a este fenómeno.

    Big Data debe ser tomado en cuanta como la forma enque hoy se incrementan rápidamente los datos en volumen,velocidad y variedad; esto se debe al gran avance y lautilización de tecnologías de información (TICs) tanto comoal consumo diario que las personas hacen de ellas con susdiferentes medios y propósitos.

     A. BigData

    Para presentar algunas definiciones sobre el término BigData, del cual existen innumerables definiciones, entre ellasse tienen:

    Según Norberto Figuerola en su libro “Que hay detras debig data”[1], el término aplica a la información que no puedeser procesada o analizada mediante procesos tradicionales.Para [2], Big Data son “cantidades masivas de datos que seacumulan con el tiempo que son difíciles de analizar y mane- jar utilizando herramientas comunes de gestión de bases dedatos”, y para [3], Big Data se refiere “al tratamiento y análisisde enormes repositorios de datos, tan desproporcionadamentegrandes que resulta imposible tratarlos con las herramientasde bases de datos y analíticas convencionales”.

    Por su parte, el analista Dan Kusnetzky, del Grupo Kus-netzky, señala que “La frase Big Data se refiere a las her-

    ramientas, procesos y procedimientos que permitan a una or-ganización crear, manipular y administrar grandes conjuntos dedatos e instalaciones de almacenamiento” [4]. En “Big Data ElRastro Digital De Nuestros Clientes” (J. Giner) [5],“Forresterdefine Big Data como las técnicas y tecnologías que hacen quesea económico hacer frente a los datos a una escala extrema.Big Data trata basicamente de 1) Las técnicas y la tecnología.Por ejemplo, significa que una empresa la cual tenga granrepresentación y análisis de datos para tener un valor agregadocon información que no ha sido manejada, debe poseer losmedios necesarios para manejar dicha información de maneraprecisa y posible en cuanto a facilidades y tecnologías serefiere así como las formas de hacerlo. 2) Escala extrema de

    datos que supera a la tecnología actual debido a su volumen,velocidad y variedad. 3) El valor económico, haciendo quelas soluciones sean asequibles y ayuden a la inversión delos negocios. Las herramientas, los procesos y procedimientosque permitan a una organización crear, manipular y gestionarconjuntos de datos muy grandes y las instalaciones de alma-cenamiento”.

    [6]Gartner define el Big Data como “un gran volumen,velocidad o variedad de información que demanda formascosteables e innovadoras de procesamiento de informaciónque permitan ideas extendidas, toma de decisiones y automa-tización del proceso”.

  • 8/21/2019 Proyecto Bigdata Hadoop

    2/16

    2

    Figure 1. Bases de datos “BigData”

     B. Estado actual de BigData

    .Las investigaciones en Big Data son bastantes en la actu-alidad; aquí se presentan algunas de ellas:[7] Una encuestarealizada por LogLogic encuentra que el 49% de las organi-zaciones están algo o muy preocupados por la gestión de BigData, pero que el 38% no entiende lo que es, y el 27% dice quetiene una comprensión parcial ; además, la encuesta encontróque 59% de las organizaciones carecen de las herramientasnecesarias para gestionar los datos de sus sistemas de TI [7].

    Khera explicó que: “Big Data se trata de muchos terabytesde datos no estructurados”, donde “La información es poder,y Big Data, si se gestiona correctamente, puede proporcionaruna cantidad de conocimiento...” [7]. Según la encuesta, el62% mencionó que ya había gestionado más de un terabyte dedatos; eso indica que el volumen de datos en el mundo estáaumentando a un ritmo casi incomprensible.

    Señala Beyer de Gartner[8] y otros expertos que: “losgrandes volúmenes de datos, o Big Data, requieren grandescambios en el servidor, la infraestructura de almacenamientoy la arquitectura de administración de la información en lamayoría de las empresas”. En “Encuesta Global de AnalisisForense de Datos 2014” (D. Remnitz)[7], McKinsey dice quees necesario prepararse para contratar o reciclar personal, pueslas empresas u organizaciones carecen de personas capacitadasen Big Data. Además, “proyecta que para el 2018, solo enEstados Unidos, se necesitarán entre 140 mil y 190 mil nuevosexpertos en métodos estadísticos y tecnologías de análisisde datos, incluyendo el ampliamente publicitado papel decientífico de datos”. Señala Williams de Catalina, en [7],que “La gente que construyó las bases de datos del pasadono son necesariamente las personas que van a construir lasbases de datos del futuro”. Según el estudio de WorldwideBig DataTechnology and Services 2013-2017 de IDC [9] ,“La tecnología y servicios de Big Data crecerá con una tasa

    anual de crecimiento compuesto del 27% hasta llegar a los32.400 millones de dólares en 2017, unas seis veces la tasade crecimiento del mercado general de tecnologías de lainformación y comunicaciones”.

    C. Dimensiones de Big Data

    1) Volumen :  Las empresas están inundadas cada día conmayores datos de todo tipo, fácilmente pueden acumularterabytes o petabytes de información . Generado s por máquinas, los datos se produce en cantidades mucho mayores que lastradicionales . Otro ejemplo, un simple jet a reacción solopuede generar 10 TB de datos en 30 minutos. Con más de

    25.00- vuelos de avión por día, el volumen diario de sóloes ta única fuente de datos alcanza a los p etabytes. Losmedidores inteligentes y equipo industrial pesado como lasrefinerías de petróleo y plataformas de perforación generanvolúmenes similares de datos. Otros ejemplos de volúmenesde datos son la conversió n de millones de lecturas anuales parapredecir el consumo de energía, o los terabytes de informacióncreados por tweets cada día.

    2) Velocidad:  Aunque los ciclos de negocio se han aceler-ado, no todos los datos de una organización tienen la mismaurgencia de análisis asociada. La clave para entender en quépunto del espectro de la velocidad es necesario trabajar (desdeel 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 lanaturaleza en tiempo real de la creación de datos. La velocidadafecta a la latencia: el tiempo de espera entre el momento enel que se crean los datos, el momento en el que se captany el momento en el que están accesibles. Hoy en día, los

    datos se generan de forma continua a una velocidad a la quea los sistemas tradicionales les resulta imposible captarlos,almacenarlos y analizarlos.

    3) Variedad:  A medida que se multiplican los canales deinteracción con clientes, empleados, proveedores y procesos denegocio, la información de valor es cada vez más el resultadode la combinación de datos de múltiple origen y tipología,esto es: la existencia de diferentes tipos y fuentes de datos.La variedad tiene que ver con gestionar la complejidad demúltiples tipos de datos. Aquí se generan presentan innumer-ables formas entre las que se incluyen texto, datos web, tuits,datos de sensores, audio, vídeo, secuencias de clic, archivos

    de registro y mucho más.

    4) Valor y Veracidad:

    •   Valor

    En el contexto de Big Data, valor hacer referencia a losbeneficios que se desprenden del uso de Big Data (reducciónde costes, eficiencia operativa, mejoras de negocio).

    •   Veracidad

    La veracidad hace referencia al nivel de fiabilidad asociado aciertos tipos de datos. Esforzarse por conseguir unos datos dealta calidad es un requisito importante y un reto fundamentalde big data, pero incluso los mejores métodos de limpiezade datos no pueden eliminar la imprevisibilidad inherente dealgunos datos, como el tiempo, la economía o las futurasdecisiones de compra de un cliente. La necesidad de reconocery planificar la incertidumbre es una dimensión de Big Data quesurge a medida que los directivos intentan comprender mejorel mundo incierto que les rodea.

  • 8/21/2019 Proyecto Bigdata Hadoop

    3/16

    3

    Figure 2. Dimenciones de BigData

     D. Arquitectura de BigData

    En el mundo tecnológico existen varios modelos de arqui-tecturas de Big Data:

    1) Recolección o Recopilación o Fuentes de datos de Big

     Data:  Páginas Web.Puede ser registrar las huellas en páginasweb, 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 compañías de seguros ahora utilizan los medios

    sociales para investigar las denuncias. Sin embargo, la mayoríade los reguladores todavía no permiten a las aseguradoras ausar los medios sociales para establecer las tasas de políticadurante el proceso de suscripción. Por ejemplo, si una asegu-radora de vida que ve el perfil de Facebook de un solicitanteindica que ella es una estudiante de aviación, la aseguradora nopuede usar ese conocimiento para aumentar sus primas debidoa que podría ser considerado un alto riesgo”.

    2) Carga de datos de Big Data:   En esta etapa los datosse cargan aplicando el concepto de metadatos (datos quedescriben otros datos). Además, de la carga como tal, es laprimera vez que los datos se estructuran [8]. Es de aclarar quelos metadatos son información que describe características de

    cualquier dato, como el nombre, la ubicación, la importanciapercibida, la calidad y sus relaciones con otros objetos dedatos que la empresa considere digno de la gestión [8]. Lasiguiente tarea, es la capacidad de usar metadatos, bibliotecassemánticas, y datos maestros. Se busca vincular los datos entreel conjunto de datos estructurados y no estructurados conmetadatos y datos maestros. Se debe transformar los datosno estructurados en datos estructurados. Es importante acudira la integridad referencial, la cual ayuda inicialmente con laclave principal y las demás relaciones en una base de datostradicional.

     E. Tecnologías de big dataLas características específicas del “Big data” requiere in-

    novaciones tecnológicas en todos los ámbitos del tratamientode la información. Consecuentemente, nuevas herramientas enlo referente a la captura, almacenamiento, acceso, análisis ygestión de los datos que manejamos.

    [?]“Big data” se orientan al tratamiento paralelo de lainformación. Sobre todas ellas, destaca Apache Hadoop, unasolución de software libre diseñada para el tratamiento de hastaexabytes de datos distribuidos en múltiples nodos. Hadoop seha convertido en un estándar de facto sobre el que se desarrol-lan herramientas comerciales por compañías tradicionales. La

    solución Hadoop se basa en un desarrollo de Google del año2009 denominado MapReduce, y que actua en dos fases. Laprimera fase, Map, introduce una query en en el sistema denodos. Determinados en que nodos están los datos relevantes,se les hace llegar la query, y la procesan en paralelo. En la faseReduce, se recopilan las respuestas de cada nodo individualpara componer la respuesta final a la pregunta inicial. Estárespuesta es analizada con respuestas de análisis específicas.

    III. APACHE HADOOP

    Es un framework de software (herramienta diseñada parala solución de problemas particulares) de licencia libre, quepermite trabajar a las aplicaciones con cantidades enormes denodos y especialmente de petabytes de datos. Utiliza lenguajede programación Java, el cual le permite su portabilidad,y actualmente es utilizado por una comunidad grande decontribuyentes y usuarios finales. Es por eso que es unaherramienta frecuentemente usada para el análisis 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 alproyecto Nutch, que es un motor de búsqueda.

    Figure 3. Logotipo de Hadoop

    Hadoop genera dos elementos principales que son funda-mentales para su operación: MapReduce y HDFS (sistemade archivos distribuidos de Hadoop). MapReduce es una

    herramienta que permite crear algoritmos para el análisis dedatos y obtener resultados y HDFS trabaja con base de datosque admite errores pero tiene alta disponibilidad.

    Una de las ventajas principales al usar Hadoop, es queproporciona estas dos funciones que superan a las plataformasalternas, y es una solución rentable al momento de trabajar conBig Data (gran cantidad de datos) y para crear clústers no serequiere de supercomputadoras.

    Se presenta como una solución para los programadoressin experiencia en desarrollo de aplicaciones para entornosdistribuidos, dado que oculta la implementación de detallespropios de estos sistemas: paralelización de tareas, adminis-tración de procesos, balanceo de carga y tolerancia a fallos.

    [11]Su avance es indudable que ahora es usado por empresas

    grandes que manejan la más alta tecnología, así como tambiéngrandes cantidades de datos, como Yahoo! y Facebook, perotambién tiene alcance en el mundo de las finanzas, tecnología,telecomunicaciones, entretenimiento, entre otras. Hadoop fuediseñado para que sea veloz y fiable en el análisis de datos, esmuy útil al momento de trabajar en proyectos que requierenescalabilidad como los mencionados anteriormente.

    Desde la primera arquitectura de Hadoop contaba con lossiguientes componentes considerados sus pilares fundamen-tales:

  • 8/21/2019 Proyecto Bigdata Hadoop

    4/16

    4

    Sistema de ficheros: Hadoop se apoya para su fun-cionamiento en un sistema de ficheros distribuidos, denom-inado HDFS [11]

    Hadoop MapReduce: el motor de Hadoop consta de unplanificador de trabajo MapReduce, así como de una serie denodos encargados de llevarlos a cabo.[11]

    Hadoop Common: conjunto de utilidades que posibilitan la

    integración de subproyectos de Hadoop. [11]Hadoop tiene la capacidad de ejecutarse en modo localque por defecto está configurado para ejecutarse en modo nodistribuido y como proceso aislado de Java. También puedeejecutarse en modo pseudo-distribuido donde cada Hadoop seejecuta individualmente. El último modo es distribuido, estees el modo que usa todos los recursos de Hadoop (disponiblesen el clúster) ya que mejora el paralelismo de los procesos.

    El sistema HDFS funciona con dos elementos en la arqui-tectura: el NameNode que se encuentra en el nodo master paramantener indexados los datos y el DataNode que están con losesclavos para almacenar los datos.

     A. Framework Hadoop

    Hadoop está constituido por subproyectos que comple-mentan y mejoran su funcionabilidad, existen inumerablesproyectos para cada necesidad, algunas son desarrolladas porempresas privadas aunque siguen siendo dirigidos por Apache.Lo más importantes proyectos son: ambari, avro, cassandra,chukwa, hbase, hive, mahout, pig, spark, zookeeper.

     B. Hadoop Java API 

    Los programas realizados en MapReduce para Hadoop estáncompuestos por tres clases:

    1) Clase map:   Comprende los métodos para realizar latarea Map, que transforma la información en parejas inter-medias con clave y valor.

    2) Clase reduce:   Contiene los métodos encargados derealizar la tarea Reduce, es decir toma las parejas de la faseMap y los analiza.

    3) Clase principal:   Contiene el método main que comoen la estructura de una API de JAVA, contiene las clasesestáticas anteriores y también los parámetros de configuración,el componente Job. Ejecuta las aplicaciones.

    C. Hadoop 2.0

    En versiones anteriores solo se admitia un paradigma deprogramación (MapReduce). En esta versión, se incorpora unanueva herramienta llamada YARN, que es un subproyecto deHadoop. YARN permite mas modelos de programación paraanalizar los datos en el mismo sistema HDFS, también separalas 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 deYARN, un resourceManager global y un AplicationMaster poraplicación (AM). ResourceManager reemplaza al jobtacker enciertas tareas y se encarga del nodo master y un NodeManagerpor cada slave.

    El ResourceManager es la ultima autoridad que arbitra losrecursos entre las aplicaciones en el sistema. El Application-Master por aplicación es una entidad especifica que se encargade negociar los recursos con el ResourceManager y trabajar

    con los NodeManager para ejecutar y supervisar las tareas quelo componen [11].El ResourceManager usa un recurso llamado Scheduler que

    es un planificador puro, es decir que no realiza seguimientosni monitoreo. Por otro lado el NodeManager se encuentra encada nodo esclavo y sirve para ejecutar las aplicaciones y elseguimiento de los recursos.

    1) HADOOP COMMON: Hadoop Common se refiere a lacolección de utilidades y librerias communes para soportarotros módulos de Hadoop. Es una parte esencial del modulodel framework de Apache Hadoop, así como el HDFS, HadoopYARN y Hadoop MapReduce. Como todos los otros módulos,Hadoop Common assume que los fallos el hardware son

    communes y que esotos deben ser automáticamente manejadosmediante software, a través de Hadoop Framework.

    Hadoop Common también es conocido como Hadoop Core.

    IV. HADOOP D ISTRIBUTION F IL E SYSTEM

    Para entender cómo funciona el HDFS, es necesario analizartambién el funcionamiento de los sistemas de archivos dis-tribuidos.

     A. HDFS 

    Se refieren a cualquier sistema de archivos que permita elacceso a datos desde múltiples máquinas dentro de la red.

    Las máquinas clientes, no tendrán acceso (en general) a losbloques de almacenamiento de forma directa, sino que accedena ellos a través de un protocolo de red. [11] El primer sistemade este tipo se desarrolló en la década de 1970, y fue SunMicrosystems quienes crearon el sistema de archivos de redNFS (Network File System), el cual utilizaba el Modelo OSIpara distribuir archivos en un entorno de computadoras de árealocal (LAN).

    Los sistemas de archivos distribuidos almacena archivosen una o más maquinas denominadas servidores y los haceaccesibles a otros maquinas denominadas clientes, donde semanipulan como si fueran locales. Para que un sistema de

  • 8/21/2019 Proyecto Bigdata Hadoop

    5/16

    5

    archivos sea tolerante a fallas, debe tolerar la perdida derecurso de almacenamiento, es decir la perdida de disco siel sistema es local o la perdida de nodos de almacenamientosi es distribuido (en un clúster).

    La principal funcionalidad es que éstos solucionan el prob-lema de bajas prestaciones, debido a alta latencia, cuellos de

    botella de red, problemas de escalabilidad y sobrecarga, entreotros. En general, mejoran el rendimiento de sistemas.

    Para que estos sitemas sean tolerables a las fallas, debenorientar y distribuir datos en múltiples servidores. De éstamanera se logra mayor desempeño, manteniendo la integri-dad de los sistemas, tolerando pérdidas de recursos, perosobretodo, manteniendo datos disponibles.

    Metas de los sistemas de archivos distribuidos [9]:

    •  Transparencia en el acceso•  Transparencia en la localización•  Transparencia en la concurrencia•  Transparencia ante las fallas•   Héterogeneidad•   Escalabilidad•  Transparencia en la replicación•  Transparencia en la migración•  Tolerante a la partición de red

    HDFS (Hadoop Distribution File System) es un sistema deficheros, creado por Hadoop, con la capacidad de trabajarenormes cantidades de información, dichos datos son divididosy almacenados en los discos locales de los nodos dentro delclúster. Dentro de sus características esta que es enfocadoa aplicaciones que tienen el modelo de una sola escritura ymuchas lecturas, simplificando la coherencia de los datos, dis-minuye la necesidad de requisitos de control de concurrenciadando un acceso de alto rendimiento. Otra característica quele hace única es que ubica al archivo de forma lógica en vezde mover al archivo.

    HDFS es un sistema compuesto de varios nodos inter-conectados que contienen los archivos y los directorios. Suarquitectura es similar a las herramientas anteriores de unmaster y varios slaves, en este sistema el nodo principal tomael nombre de NameNode que regula el acceso a clientes a losficheros, por otro lado los DataNodes se encargan de gestionarla información de los discos locales de cada nodo [11]. Ambosson componentes software que trabajan de forma individualentre sistemas operativos heterogéneos. HDFS fue diseñadoen un lenguaje Java y por esta razón es un sistema portableen todos los sistemas que manejen este lenguaje.

    Figure 5. Nodos interconectados en HDFS

    HDFS almacena los ficheros partiéndolos en bloques (pordefecto de 64 MB). Con esto se consigue minimizar el costede las búsquedas. Usa una arquitectura Master-Slave dondeel maestro es el NameNode que se encarga de gestionar los

    ficheros y los metadatos. Estos metadatos contienen informa-ción sobre el fichero, bloquees y la localización de estos enlos DataNodes. Los DataNodes tienen la responsabilidad dealmacenar y recuperar los bloques así como también formanun cluster donde los bloques se replican (por defecto 3 veces)sobre los DataNodes para garantizar la tolerancia a fallos[12].

    Figure 6. Carga de un fichero en HDFS

    V. MAPREDUCE

    Es un proceso que apareció por parte de Google a finalesdel 2004 con el objetivo de crear un framework para quetrabaje con grandes cantidades de datos sin que tenga queusar supercomputadoras. Es un modelo sencillo que requiere

  • 8/21/2019 Proyecto Bigdata Hadoop

    6/16

    6

    implementación dela programación Map y Reduce, que seaplicará a cada dato de entrada, y el resto de tareas comoasignación de trabajos entre otros los realiza el entorno deejecución.

    El motor de datos MapReduce controla el sistema deficheros de forma planificada. Esto es denominado JobTracker,a través de este los clientes envían trabajos tipo MapReduce.El planificador los envía a los nodos disponibles en el clústerpara que ejecuten las funciones Map y Reduce en cada nodoy tratando de reducir el tráfico de red dando prioridad a losnodos que necesitan para reducir trabajo al nodo principal(ya que Hadoop trabaja en una estructura maestro/esclavo).El JobTracker se sitúa en el maestro mientras que los esclavosposeen un TaskTracker. En un clúster típico, se ejecuta unTaskTracker por nodo de cómputo. [11]

    Cada vez que se envía un trabajo a un clúster, el Jobtrackerescoge el plan de ejecución en base a la cantidad de ficherosque va a procesar, de ahí en adelante elige que nodo loejecuta y se encarga únicamente de supervisar que esta tareasea completada. En el caso de fallar una tarea, el JobTracker

    relanza la tarea, posiblemente en un nodo diferente, existiendoun límite predefinido de intentos en el que dicha tarea falle deforma reiterada. [11]

    Las aplicaciones de éste modelo se ejecutan en dos partes:Map: que realiza la ingestión y la transformación de los

    datos de entrada, en la cual los registros de entrada sonprocesados en paralelo. [11]

    Reduce: fase de la agregación o resumen, donde todos losregistros asociados entre si deben ser procesados juntos poruna misma entidad. [11]

    Figure 7. Explicación sencilla proceso Map y Reduce

    La forma de ejecutar de Hadoop MapReduce es dividir enfragmentos la entrada de datos, cada fragmento lo trabaja deforma independiente por la función Map creando grupos loscuales se ordenan y pasa a la función reduce.

    Cuando Map ejecuta una tarea lo hace en cualquiera de losnodos del clúster, pero si realiza varias tareas a la vez, éstelo hace en forma paralela, pero el objetivo principal del Mapes formar parejas de los registros de entrada, y a la salida losdivide en particiones que son ordenadas por claves. El reduce

    trabaja en estos pares (valor y clave) procesándoles y con laposibilidad de trabajar en paralelo para ser más eficaz. Lasfunciones Map y Reduce están definidas ambas con respectoa datos estructurados en parejas: clave, valor. [11]

    La función Map se ejecuta de forma paralela sobre cadapareja de entrada y crea listas intermedias en cada uno,mientras que la función Reduce es aplicada a cada grupo deparejas que tengan la misma clave para generar una nueva lista

    compacta. Entre estas fases existe una operación que agrupalos pares con la misma clave, el proceso acaba con la funciónreduce ya que el resultado (ficheros) queda grabado en elsistema de ficheros distribuidos, este proceso se simplifica enla siguiente imagen:

    Figure 8. Fases de MapReduce

    Cada aplicación MapReduce es dividida en unidades máspequeñas denominadas tareas y ya que las tareas pueden sermayores al número de nodos, requiere una planificación quese encarga de ordenar el proceso de ejecución asignando tareasen cola a los nodos que se van liberando. Tiene la ventaja deque es sincronizado mediante una “barrera” que no permiteque empiece una función antes de que acabe la otra; esto es,no puede empezar Reduce sin que acabe Map.

    Figure 9. Combiner y Partitioner

  • 8/21/2019 Proyecto Bigdata Hadoop

    7/16

    7

    MapReduce tiene un manejo de errores ya que trabaja enservidores de gama baja y las memorias RAM y el disco duropueden fallar. Este proceso se encarga de seguir corriendo lostasks a pesar de que un clúster se caiga o falle. A parte de lomencionado existen dos procesos más llamados “combiner”y “partitioner”. El partitioner se encarga de asignar clave alas parejas intermedias con el objetivo de asignar el mismonúmero de claves a cada reduce pero no toma en cuentael valor, así que no necesariamente serán equilibrados. Elcombiner es el punto más alto de MapReduce, en algunoscasos pueden existir procesos repetidos y todos deben sersubidos a la red y esta función evita de modo que los fusionaantes de ser enviados.

     A. Clúster 

    Un cluster de computadoras, es un conjunto de equipos decómputo que se comportan como una supercomputadora única.Son utilizados principalmente para la solución de problemasde alto costo computacional referentes a las ciencias, lasingenierías y el comercio.[13]

    Figure 10. Clúster de computadoras

    1) Definición:  El término cluster se aplica a un conjuntoo conglomerado de computadores, construido utilizando com-ponentes de hardware comunes y en la mayoría de los casos,software libre; los computadores se interconectan mediantealguna tecnología de red. El cluster puede estar conformadopor nodos dedicados o por nodos no dedicados.[14]

    En un cluster con nodos dedicados, los nodos no disponende teclado, mouse ni monitor y su uso está exclusivamentededicado a realizar tareas relacionadas con el cluster.

    Mientras que, en un cluster con nodos no dedicados, losnodos disponen de teclado, mouse y monitor y su uso estáexclusivamente dedicado a realizar tareas relacionadas con elcluster, el cluster hace uso de los ciclos de reloj que el usuariodel computador no esta utilizando para realizar sus tareas.

    Simplemente, un cluster es un grupo de múltiples com-putadores unidos mediante una red de alta velocidad, de talforma que el conjunto es visto como un único computador,más potente que los comunes de escritorio.[14].

    2) Historia:  Sus inicios fueron en las décadas de los 50 y60. El fundamento principal fue la llamada Ley de Amdahl,la cual describe matemáticamente cuánto se puede esperar de

    hacer en paralelo una serie de tareas mediante una arquitecturaque lo permita [13]. Esta historia también va de la mano con lade las primeras redes de computadores puesto que un clústerson computadoras interconectadas. Hay que recordar que así fue como nacio ARPANET, la primera red de computadorasbásicas, que posteriormente se convertiría en lo que ahoraconocemos como Internet.

    En 1984, VAXcluster fue un sistema operativo creado conel propósito de proporcionar ventajas del procesamiento enparalelo, manteniendo fiabilidad de datos. Fue uno de losprimeros softwares que obtuvieron éxito comercial.

    Seguido de este, los siguientes principios comerciales segeneraron en 1994 y fueron Tandem Himalaya y el IBM S/390.Este último más enfocado en el uso empresarial.

    Un elemento fundamental en el desarrollo de clústers fue elsoftware Parallel Virtual Machine, el cual era fuente abierta.Estaba basado en comunicaciones TCP/IP, permitiendo lacreación de un superconductor virtual del protocolo TCP/IP.Este sistema permitió el desarrollo de un proyecto de la NASAen 1993 [13].

    En 1995, se pudo generar un clúster que ya era capaz derealizar cálculos firmemente. Fue concebido bajo el conceptode “ser un superordenador”.

    3) Desarrollo:  Los clusters se han desarrollado en variasramas, como son las aplicaciones para solución de alto cóm-puto, servidores Web y comercio electrónico, así como basesde datos de alto rendimiento, entre otros usos.

    El incremento del uso de clústers se debe al fácil acceso ennuestros días a computadoras económicas con potentes micro-procesadores, a la existencia de redes de altas velocidades, así como el desarrollo de software para efectuar programaciónparalela o computación distribuida. Pero principalmente laexistencia de los clusters esta motivada por la necesidad de

    potencia computacional para la solución de problemas muycomplejos [13].4) Componentes de un clúster:

    1) Nodos. Pueden ser simples computadores, sistemasmulti-procesador o estaciones de trabajo.

    2) Sistemas Operativos. Debe ser de fácil uso y acceso así como permitir múltiples procesos y usuarios.

    3) Conexiones de red. Los nodos de un clúster puedenconectarse mediante una simple red Ethernet, o puedeutilizar tecnologías especiales de alta velocidad comoFast Ethernet, Gigabit Ethernet, entre otras.

    4) Middleware. El middleware es un software que general-mente actúa 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 sensación alusuario de que utiliza un único computador muy potente.

    •   Herramientas para la optimización y mantenimiento delsistema: migración de procesos, checkpoint-restart (de-tener uno o varios procesos, migrarlos a otro nodo y con-tinuar su funcionamiento), balanceo de carga, toleranciaa fallos, etc.

    •   Escalabilidad: debe poder detectar automáticamentenuevos nodos conectados al cluster para proceder a suutilización. [14]

  • 8/21/2019 Proyecto Bigdata Hadoop

    8/16

    8

    Figure 11. Componentes de un clúster

    5) Beneficios de la tecnología clúster:   Las aplicacionesparalelas escalables requieren: buen rendimiento, baja latencia,comunicaciones que dispongan de gran ancho de banda, redesescalables y acceso rápido a archivos. Un cluster puede

    satisfacer estos requerimientos usando los recursos que tieneasociados a él.Los clusters ofrecen las siguientes características a un costo

    relativamente bajo:•  Alto Rendimiento (High Performance).•  Alta Disponibilidad (High Availability).•  Alta Eficiencia (High Throughput).•  Escalabilidad.

    La tecnología cluster permite a las organizaciones incrementarsu capacidad de procesamiento usando tecnología estándar,tanto en componentes de hardware como de software quepueden adquirirse a un costo relativamente ghvhgvhgvhgvhgvbajo[14].

    VI. TRATAMIENTO DE IMAGENES 2D 3D DICOM  C ONHADOOP

     A. Introduccion

    En primer lugar debemos conocer que Hadoop no poseeningún formato en concreto para trabajar con imágenes [15].El procesamiento digital de imágenes conlleva un alto costoen tiempo y en utilización de recursos por lo que dado el granpoder de procesamiento de Hadoop podría ser utilizado para elprocesamiento de imágenes también. Para tal efecto debemosdar un breve repaso al funcionamiento de Hadoop.

    El entorno de computación distribuida Hadoop utiliza su

    propio sistema de archivos denominado HDFS, el cual permitedistribuir los datos a través de un clúster, se utiliza estetipo de formato de archivos porque permite dividir los datosenviándolos a cada uno de los nodos, cumpliendo así conel paradigma de MapReduce, que consiste en dos partes:toma uno de esos pares de llave/valor y da como resultadoun conjunto de pares llave/valor llamados intermedios loscuales se agrupan por la misma llave para después pasar ala función Reduce que se encarga de recibir un par llave/valory un conjunto de valores asociados a él y da como resultadootro conjunto de valores (normalmente dicho conjunto sólocontiene un elemento).[16]

    Dado que no podemos utilizar datos de tipo imagen conel sistema de archivos tradicional de Hadoop, no podremosdesarrollar aplicaciones que trabajen con imágenes. Es allí cuando para el procesamiento de imágenes en Hadoop debe-mos utilizar la librería llamada HIPI (Hadoop Image Process-ing Interface). Esta librería permite la agrupación y desagru-pación de imágenes y es utilizada debido a que el sistema dearchivos HDFS es incapaz de trabajar con este tipo de archivos(imágenes).

    Figure 12. Logo de la libreria HIPI

     B. Conceptos Generales

    1) Imagen 2D:  Una imagen en 2D se puede definir comouna imagen expresada sobre los ejes X e Y del plano carte-siano, y que no permiten comportamientos propios de cuerposen el espacio. [A]

    Una gráfica 2D tiene dos ejes (X e Y). La mayoría delos dibujos, fotografías, pinturas y libros de formato de laimagen son de dos dimensiones. Las animaciones 2D sonplanas, aunque se puede crear la sensación de profundidaden algunos de los elementos que usan luz y sombra. Losdibujos animados como "Scooby-Doo" y "Los Picapiedra" sonejemplos de animación 2D. Las películas estándar son 2D;

    hay una impresión de profundidad, ya que se registran enel mundo real, pero la imagen aparece plana en la pantalla.[B] Los términos "2D" o "bidimensional" se pueden utilizarmetafóricamente para referirse a un elemento de trabajo o deun trabajo que carece de sustancia, matiz o ideas suficientes.[B] Un personaje de ficción que está mal escrito y carece depersonalidad puede ser descrito como de dos dimensiones o,más informalmente, 2D.

    2) Imagen en 3D:  Resultado final del proceso de render-izado de un modelo en 3D. Una imagen en 3D, en definitiva,es una imagen en dos dimensiones que simula las tres di-mensiones, pero proviene de un “mundo conceptual en 3D”.Ese “mundo en 3d” permite que puedan generarse múltiples

    imágenes en 3D desde diferentes perspectivas. Una imagenen 3D puede almacenarse en cualquier formato gráfico ráster.Múltiples imágenes en 3D constituyen una animación 3d. Elproceso de la creación de gráficos tridimensionales comienzacon un grupo de fórmulas matemáticas y se convierte en ungráfico en 3D. Las fórmulas matemáticas (junto con el uso deobjetos externos, como imágenes para las texturas) describenobjetos poligonales, tonalidades, texturas, sombras, reflejos,transparencias, translucidez, refracciones, iluminación (directa,indirecta y global), profundidad de campo, desenfoques pormovimiento, ambiente, punto de vista, etc. Toda esa informa-ción constituye un modelo en 3D.

  • 8/21/2019 Proyecto Bigdata Hadoop

    9/16

    9

    3) Formatos de Archivos de Entrada:   Apache HadoopMapReduce posee sus propios formatos de entrada dearchivos. Cualquier clase de trabajo que se maneje en Hadoopdebe estar contenido en alguno de estos tipos de archivos,InputFormat describe los formatos de entrada de los archivosutilizados. MapReduce incluye varios formatos de entradapredefinidos tales como TextInputFormat, el cual es el Input-Format por defecto de Hadoop. El formato TextInputFormatlee archivos de texto plano sin formato dividos por líneas.Los archivos que son detectados poseen la extensión . gz yson descomprimidos usando el CompressionCodec apropiado.Entre los formatos mas conocidos constan los siguientes:CombineFileInputFormat, CompositeInputFormat, DBInput-Format, FileInputFormat, MultiFileInputFormat, NLineInput-Format, SequenceFileInputFormat [17].

    4) Formato de Archivos de Salida: De igual manera que losarchivos de entrada, los archivos de salida poseen formatos

    específicos y propios. OutputFormat contiene las especifi-caciones de los ficheros de salida, TextOutputFormat es elformato de archivo de salida por defecto. Otros formatos desalida son: DBOutputFormat, FileOutputFormat, MultipleOut-putFormat, SequenceFileOutputFormat. Las acciones que llevaa cabo MapRedeuce en cuanto a los ficheros de OutputFormatconsiste en: validar las especificaciones de salida y propor-cionar la implementación utilizada para escribir los archivosde salida de trabajo, estos archivos se guardan en el sistemade archivos distribuido [18].

    5) Clase JobConf:  Es una clase de Java incluida en el APIde Hadoop usada para configurar el trabajo de MapReduce,entre estos los aspectos de Map, Reduce, Combiner y archivosde entrada y salida [19].

    6) Librería HIPI (Hadoop Image Processing Interface):

    Usada en el entorno de MapReduce usada principalmentepara el cómputo de imágenes en entornos de computacióndistribuida, pero para poder trabajar con dicha librería primerodebemos crear un contenedor de imágen denominado HIB

    (Hipi Image Bundle) el cual agrupa varias imágenes com-binadas en un archivo más grande. Esta librería nos proveeuna API (Application Programming Interface) para tareas deprocesamiento de imágenes en un entorno de computacióndistribuida. La ejecución de dicha de librería es similar a lade un trabajo en MapReduce, con la única diferencia queprimeramente se prepara un contenedor para las imágenescon las que se va a trabajar. Dicho contenedor es conocidocomo HipiImageBundle (HIB), el cuál es un conjunto deimágenes combinadas en un archivo grande junto a ciertosmetadatos usados para describir algunos aspectos referentes alas imágenes.

    Figure 13. Diagrama Creacion Contenedor HIB

    7) DICOM: DICOM (digital Imaging and Communicationsin Medicine)por sus siglas en inglés, o Imagenologia Digitaly Comunicaniones en Medicina, es el estándar para imágenesradiológicas. DICOM es el formato universal para PACS(Picture Archiving and Communications System), DICOMpermite la utilización de las mismas en estaciones de trabajo,tanto con imágenes de tomografías, resonancias magnéticas,

    etc.8) Amazon Elastic MapReduce:  Servicio web de la com-

    pañía Amazon que funciona bajo demanda y que permitela utilización de nodo a nivel escalable, ha sido diseñadopara proporcionar procesamiento escalable al alcance de losdesarrolladores. Funciona bajo el sistema de archivos HDFS.

    C. Usando la libreria HIPI 

    Dada la dificultad de Hadoop para trabajar con imágenes,estas pueden ser de cualquier formato, hemos de tener encuenta la importancia de la librería HIPI para trabajar conimágenes. En un inicio de desarrollo de Hadoop no se con-

    templó la utilización de imágenes por lo que en este frameworkno se dispone de un sistema de archivos de imágenes enespecífico, aquí es donde cobra vital importancia la creaciónde una librería particular para este tipo de implementación.Dicha librería nos otorga clases que trabajan bajo el mismoparadigma de MapReduce con toda su funcionalidad peroutilizadas en el manejo de imágenes. Básicamente el usode la librería se compone de dos partes esenciales: crear elcontenedor de archivos y desarrollar el código para el cómputode imágenes. Una vez que se recibe el contenedor de imágenesHIB, se deshace dicho contenedor, se reparten las imágenesentre los nodos de ejecución que haya en el clúster y seprocede con el proceso de Mapper. Los pares de clave-valor

    son barajados y se reparten entre los Reducer para finalmentedevolver los datos resultantes. En el caso de las imágenes lospares de clave-valor varían según la programación que hayasido usada, por ejemplo se podrían agrupar las imágenes segúnel tipo de cámara con el que hayan sido tomadas.

    La librería HIPI por si sola no modifica el comportamientode MapReduce, pero una vez que Mapper toma el control,el usuario puede modificar los parámetros para procesar lasimágenes. Los contenedores HIB se almacena con la extensión.tar en GNU/Linux y son implementados a través de laclase HipiImageBundle. Para crear un nuevo contendor debe-mos crear un nuevo objeto HipiImageBundle y pasar como

  • 8/21/2019 Proyecto Bigdata Hadoop

    10/16

    10

    parámetro el directorio en donde queremos que se almaceneel contenedor generado, este objeto permite acceder a los datosde configuración que se despliegan en el clúster. Muchos deestos valores de configuración solo permiten ser consultadospero algunos valores también permiten su modificación.

    Para añadir imágenes se crea un fichero tipo File en el cualindicamos el directorio en el cual se encuentran los archivos ydebe ser convertido a un objeto de tipo FileInputStream, final-mente para añadir la imagen utilizamos el método addImagepasando como parámetros el objeto de tipo FileInputStream yel tipo de imagen. La clase FloatImage de la librería HIPI esuna representación de una imagen como un conjunto de pixelesespecificados con un solo punto flotante de precisión[2.0], esun conjunto de tres dimensiones de valores de punto flotantepor lo que puede ser tratado como una matriz, permitiéndonosrealizar las siguientes tareas: Crear un FloatImage, obtenero modificar los valores de los pixeles, convertir a escala degrises, operaciones aritméticas(permite escalar la imagen) eImage Cropping(usado para obtener solo ciertas secciones dela imagen). [20].

    Figure 14. Esquema HIPI

     D. Casos de Uso

    Unos de los casos más conocidos en los cuales ha fun-cionado el esquema de computación distribuida es en The NewYork Times, el cual utiliza Hadoop y EC2 (Amazon ElasticCompute Cloud) para convertir 4 Tera bytes de imágenes TIFFen imágenes PNG de 800 KB para ser mostradas en la Weben 36 horas [21].

    Un caso de implementación de Hadoop propuesto por laFacultad de Ciencias Físicas y Matemáticas de la Universidadde Chile con el fin de paralelizar un algoritmo para la detecciónde cúmulos de galaxias. Como antecedente se da a conocer

    que existe un algoritmo de detección que funciona de manerasecuencial y por lo tanto sería de gran utilidad implementarlode forma de paralela [22]. De la Escuela Politécnica del Litoral(ESPOL) se conocen varias implementaciones de Hadoop paraanalizar imágenes. Una de estas implementaciones habla deprocesamiento de imágenes producto de una investigaciónsobre bacterias y su comportamiento. En dicho trabajo sepretende encontrar las paredes de células epiteliales de plantasde tipo Arabidopsis Thaiana, para este caso se desarrollóun algoritmo que ayuda a detectar estructuras curvilíneas,desarrollado en C++ [23]. En otro caso de uso de Hadoop delas misma ESPOL es usado para la creación de un Módulo de

    Búsqueda de personas dentro de una base de datos de rostros[24].

    VII. INSTALACION DE HADOOP Y SUS HERRAMIENTAS

     A. Pasos Previos

    Hay que tomar en cuenta que existen pasos los cuales selos debe hacer como usuario root, también vamos a especificar

    en cada paso lo que se hace en el nodo maestro y en el nodoesclavo y lo que se realizara en ambos nodo Para nuestroejemplo se uso: master = nodo maestro, nodo = nodo esclavo.El primer paso a realizar es colocar ips estáticas tanto el nodomaster como en el esclavo.

    Figure 15. Configuración Hmaster

    Configuración nodo

    Figure 16. Configuracion Nodo

    Para este paso es importante que debemos trabajar en root,para ingresar a root usamos el siguiente comando: # su, se nospedirá la contraseña del usuario root y luego continuamos coneste proceso.

    En master # hostnamectl set-hostname masterEn nodo: # hostnamectl set-hostname nodoUna vez cambiado el nombre cerramos el terminal y abri-

    mos otro y si visualizara los cambios realizados, para verificar

  • 8/21/2019 Proyecto Bigdata Hadoop

    11/16

    11

    escribimos: # hostname, y nos saldrá el nombre del host.A continuación daremos permisos de administrador tanto almaestro como al nodo, ingresando a el fichero sudoers. # nano /etc/sudoers. Buscamos donde diga root y debajo de esta partecolocamos de igual manera, agregamos el nombre del usuariode donde estamos trabajando, ALL=(ALL)ALL.

    De igual manera lo hacemos en el nodo esclavo debido a quese 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 líneas (direcciones IP ynombre de los nodos) esto se realizara en los dos nodos enmaster y el esclavo:

    1 7 2 . 1 7 . 4 0 . 7 9 m a st e r1 7 2 . 1 7 . 4 0 . 8 0 no do

    2) Crear usuario hadoop.:  Este proceso se realizara en el

    nodo maestro y en el esclavo# u s e r a d d h ad oo p# p a ss w d h a do o p

    3) Configuración de la llave para servicios de hadoop:

    Es recomendable dejar las configuraciones por defecto, esdecir le damos enter al momento que nos pedirá nombre ycontraseña de la clave, de manera que la clave se creara conlas configuraciones que vienen por defecto en los dos nodos(master y esclavo) .

    # s u h ad oo p

    En el nodo master ingresamos los siguientes comandos:

    $ s s h−keygen   − t r s a$ s s h−copy−i d   − i ~ / . s s h / i d _ r s a . p ub

    hadoop@master$ s s h−copy−i d   − i ~ / . s s h / i d _ r s a . p ub

    hadoop@nodo$ chmo d 0 60 0 ~ / . 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:

    $ chmo d 0 60 0 ~ / . 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) Instalación de Oracle Java SDK: Copiar y desempaque-

    tar el jdk:Ingresamos a la carpeta dond se encuentra el paquete jdk-

    8u45-linux-x64.tar.gz y lo copiamos en el directorio /opt conel siguiente comando.

    # c p j d k −8u45−l i n u x−x64 . ta r . gz / opt /  

    Entramos a /opt y desempaquetamos el archivo .tar.gz.Movemos el archivo desempaquetado a una nueva carpeta

    llamada jdkEn el nodo maestro ingresamos los siguientes comandos

    # c d / o p t /  # l s# t a r   −z x f j dk −8u45−l 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 sololo hace el maestro

    # s c p   −r j d k n od o : / o p t

    Es importante revisar desde el nodo si se encuentra elarchivo recibido en el nodo esclavo.

    # l s / o p t /  

    6) En cada nodo, vamos a usar la alternatives:  En cadanodo, vamos a usar la alternatives herramienta para configurarOracle Java como marco predeterminado Java, ( al ingresal elsegundo comando nos salra un menú para escoger una opcionosotros debemos elegir la opción /usr/bin/java). En el nodomaestro 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 / usr / b i n / j av a j av a /  opt / j dk / b i n / j a v a 2

    # a l t e r n a t i v e s   −−c o nf i g j av a # s e l e c ta p p r o p r i a t e p r o g ra m ( / o p t / j d k / b i n / j a v a )

    # a l t e r n a t i v e s   −− i n s t a l l / usr / b i n / j a r j a r / opt / j d k / b i n / j a r 2

    # a l t e r n a t i v e s   −− i n s t a l l / usr / b i n / j av a c j av ac / o p t / j d k / b i n / j a v a c 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

    7) Comprobamos si todo está bien ejecutado:  En el nodomaestro y en el esclavo ingresamos los siguientes comandos

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

    8) Establecer las variables ambientales editando el sigu-

    iente fichero:  En el nodo maestro y en el esclavo ingresamoslos siguientes comandos

    # n a no / 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=/ op t / jd kex po rt JRE_HOME=/ op t / jd k / jr eex po rt PATH=$PATH : / op t / jd k / bi n : / op t / jd k / 

     j r e / b i na 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

    # s o u r c e / e t c / b a s h r c# ec ho $JAVA_HOME

    10) Instalación y configuración de hadoop 2.6.0: Copiar ydesempaquetar hadoop.

    Al igual java copiamos el archivo hadoop-2.6.0.tar.gz aldirectorio /opt. En master ingresamos los siguientes comandos:

    # c p h ad oo p  −2 . 6 . 0 . t a r . g z / o p t /  

    Ahora procedemos a desempaquetar Hadoop.

  • 8/21/2019 Proyecto Bigdata Hadoop

    12/16

    12

    # t a r   −z x f h ad oo p  −2 . 6 . 0 . t a r . g z# r m hadoop  −2 . 6 . 0 . t a r . g z# mv hadoop  −2 . 6 . 0 h a do o p

    11) Copiamos /opt/hadoop a los nodos esclavos: En masteringresamos el siguiente comando:

    # s c p   −r hadoop nodo : / op t

    12) Editamos el fichero .bashrc en todos los nodos:  En elnodo master y el esclavo ingresamos los siguientes comandos:

    # nano / home / hadoop / . bas hr c

    Y agregamos las siguientes lineas al final del archivo quese abrira.

    e x p o r t HADOOP_PREFIX= / op t / had oope x p o r t HADOOP_HOME=$HADOOP_PREFIXe x p o r t HADOOP_COMMON_HOME=$HADOOP_PREFIXe x p o r t HADOOP_HDFS_HOME=$HADOOP_PREFIXe x p o r t HADOOP_MAPRED_HOME=$HADOOP_PREFIXe x p o r t HADOOP_YARN_HOME=$HADOOP_PREFIX

    13) Editar /opt/hadoop/etc/hadoop/core-site.xml:   En elnodo master y el esclavo ingresamos los siguientes comandos:

    # nano / opt / hadoop / e tc / hadoop / core −s i t e . x ml

    Añadir las siguientes líneas al archivo.Importante copiar las líneas en el medio de (), y debemos pegar las lineas sin editarlas.

    < p r o p e r t y >f s . defa ul t FS h dfs : / / mas ter :90 00 / < / pr o per 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 siguientescomandos:

    # chown hadoop / opt / hadoop /    −R# chgr p hadoop / op t / hadoop /    −R# m kdi r / home / hadoop / da t an ode# chown hadoop / home/ hadoop / dat ano de /  # chgr p hadoop / home / hadoop / da t a node /  

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

     / o p t / hadoop / e t c / h adoop / hdf s−s i t e . xml

    En el nodo master y el esclavo ingresamos los siguientescomandos:

    # nano / opt / hadoop / e tc / hadoop / hdfs −s i t e . x ml

    Y modificar las siguientes lineas:

    < p r o p e r t y >< name> df s . r e p l i c a t i o n < / name>1< / pr o per t y >< p r o p e r t y >d fs . pe rmi ss ion s

    < val ue > f a l s e < / va l ue >< / pr o per t y >< p r o p e r t y >d fs . data nod e . da ta . di r /home/ hadoop / datanod e < / pr o per t y >

    16) Crear el directorio de datos HDFS NameNode y dar 

     permisos:   En el nodo master y el esclavo ingresamos lossiguientes comandos:

    # mkdir / home/ hadoop / namenode# chown hadoop / home/ hadoop / namenode /  # chgr p hadoop / home / hadoop / namenode /  

    17) Editar hdfs-site.xml:   Editar /opt/hadoop/etc/hadoop/hdfs-site.xml. En el nodo mastery el esclavo ingresamos los siguientes comandos:

    # nano / opt / hadoop / e tc / hadoop / hdfs −s i t e . x ml

    Añadimos las siguientes líneas al archivo.

    < p r o p e r t y > df s . namenode . da ta . d ir /home / hadoop / namenode < / pr o per t y >

    18) Editar mapred-site.xml:   Edite /opt/hadoop/etc/hadoop/mapred-site.xml. En el nodo master yel esclavo se deberan ejecutar los comandos:

    En esta parte no vamos a encontrar el archivo mapred-site.xml solamente encontraremos uno con la extensiónmapred-site.xml.template por lo que crearemos un nuevoarchivo mapred-site.xml copiando lo del template al nuevoarchivo creado. Ejecutando la siguiente línea de comando:

    #cp / op t / hadoop / et c / hadoop / mapred−s i t e .xml . te mp la te / opt / 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) añadimos lassiguientes líneas. # nano /opt/hadoop/etc/hadoop/mapred-site.xml.

    Añadimos las siguientes líneas al archivo.

    < p r o p e r t y >mapreduce . framework . nameyarn < / pr o per t y >

    DESDE ESTE PASO HASTA EL FINAL, LOS COMAN-DOS LOS VAMOS A REALIZAR SOLO EN EL NODOMASTER.

    19) Editar yarn-site.xml :   Editar el siguiente archivo /opt/hadoop/etc/hadoop/yarn-site.xml

    # nano / opt / hadoop / e tc / hadoop / yarn−s i t e . x ml

    Añadimos las siguientes líneas al archivo.

    < p r o p e r t y >ya rn . res our cem an age r . hostname master

  • 8/21/2019 Proyecto Bigdata Hadoop

    13/16

    13

    < / pr o per t y >< p r o p e r t y >y arn . node manage r . hostname < /name>mast er < / pr o per t y >< p r o p e r t y >y arn . no demanag er . aux−s e r v i c e s < / n ame >< val ue > m ap r edu ce_s huf f l e < / va l ue >< / pr o per t y >

    20) Editar slaves : Editar /opt/hadoop/etc/hadoop/slaves enmaster (para que maestro puede iniciar todos los serviciosnecesarios en esclavos automáticamente)

    # nano / opt / hadoop / e t c / hadoop / s l av es

    A continuación vamos a borrar lo que nos aparesca en elfichero y añadimos las siguientes líneas al archivo. masternodo

    21) Desactivar cortafuegos e IPv6 :   Hadoop no soportaIPv6 - problemas con la escucha en todas las interfaces através 0.0.0.0

    # s y s t e mc t l s to p f i r e w a l l d

    22) Editar sysctl.conf :   Editar /etc/sysctl.conf con el co-mando:

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

    Añadir las siguientes lineas al final.

    n e t . i p v 6 . c o n f . a l l . d i s a b l e _ i p v 6 = 1n e t . i p v 6 . c o n f . d e f a u l t . d i s a b l e _ i p v 6 = 1

    23) Ingresamos a Hadoop:  Ingresamos a hadoop y corre-mos dfs y el hilo yarn.

    # s u h ad oo p$ h d f s n am en od e   −f o r m a t

    $ s t a r t  −df s . sh$ s t a r t  −yar n . sh

    Para comprobar si hemos hecho bien el proceso de insta-lación probamos ingresando jps . en donde tanto en hmastercomo esclavo se visualizaran las herramientas propias de cadauno, ingresando en el siguiente link : http://master:50070/ .

    Vemos que el nodo principal se compone de un Resource-Manager, NodeManager (HILO), NameNode y DataNode(HDFS). Un nodo esclavo actúa como un NodeManager y unDataNode.

    Figure 17. Información de Nodos

    C. Instalando libreria HIPI 

    Previamente se debe tener configurado Hadoop y ademasdebemos instalar Apache Ant que sirve para compilar elcodigo, despues de instalado se debe comprobar que esta enel sistema

    $ w hi ch a n t / u s r / l o c a l / b i n / a n t

    Hay dos formas de instalar la libreria la primera es clnandouna distribucion desde GitHub o descargando un archivo .jarprecompilado.

    Para clonarlo utilizamos la siguiente lina de codigo

    $ g i t c l o n e g i t @ g i t h ub . c om : u v a gf x / h i p i . g i t

    Generalmente CentOS no reconoce el comando git por loque debe ser instalado con el siguiente comando

    yum i n s t a l l g i t

    Después de que el repositorio se ha clonado, debe editardos líneas en el build.xml

    b u i l d . x ml :. . .

    < p r o p e r t y name = " h a do op . home " v a l u e =" / op t / hadoop  −2 . 6 . 0 / s h a r e / h a do o p " / >

    < p r o p e r t y name = " h a do op . 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 . x ml :. . .

    < p r o p e r t y name = " h a do op . home " v a l u e =" / us r / lo c a l / Ce ll a r / hadoop / 2 . 5 . 1 /  l i b e x e c / s h a r e / h a do o p " / >

    < p r o p e r t y name = " h a do op . v e r s i o n " v a l u e= " 2 . 5 . 1 " / >

    . . .

  • 8/21/2019 Proyecto Bigdata Hadoop

    14/16

    14

    Construimos los Programas HIPI Biblioteca y el Ejemplo

    $ a n t. . .h i p i :[ j a v a c ] C o mp i li n g 3 0 s o u r c e f i l e s t o /  

    u s e r s / h o r t o n / h i p i / l i b[ j a r ] B u i l d i n g j a r : / u s e r s / h o r t o n / h i p i /  

    l i b / h i p i   −2 . 0 . j a r[ e ch o ] H ip i l i b r a r y b u i l t .

    com pi l e :[ j a v a c ] C o mp i li n g 1 s o u r c e f i l e t o / u s e r s

     / h o r t o n / h i p i / b i n[ j a r ] B u i l d i n g j a r : / u s e r s / h o r t o n / h i p i /  

    e x a m pl e s / c o v a r i a n c e . j a r[ e ch o ] C o v a r i a n ce b u i l t .a l l :

    BUILD SUCCESSFULT o t a l t i me : 3 s e co n ds

    HIPI esta ahora instalada en la maquina y podemmosactualizar la version con el siguiente comando

    $ g i t p u l l o r i g in r e l e a s eFrom gi t hub . com : uvagf x / h i p i∗   b ra nc h r e l e a s e   −> FETCH_HEADA l r e ad y up−to−d a t e .

     D. Instalacion de Ganglia

    1) Descargar :  Ganglia de la página web oficial

    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 / g a n g l i a /  f i l e s / 3 . 6 . 0 / g a n g li a   −3 . 6 . 0 . t a r . g z

    Para esto, se lo hace directamente con una línea de comandodesde el terminal:

    # w ge t 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 /  ga ng li a / f i l e s / 3 . 6 . 0 / g an gl ia   −3 . 6 . 0 . t a r .gz

    Nos mostrará el progreso en pantalla así como el estado enporcentaje y la velocidad de descarga.

    2) Habrá que instalar dependencias: Instalar las dependen-cias

    # yum i n s t a l l f r e e t y p e d e v e l rpm−b u i l dphp 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 ld e ve l p yt ho n d e ve l p c re d e ve l a u t oc o n f  

    automak e l i b t o o l e xp at d ev el r r d t o o ld e v e l a p r d e v e l g cc c ++ make p k g co n f ig

    −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 .org / pub / epe l /6 / x86_64 / l ib co nf us e  −devel−2. 7−4. e l 6 . x86_6 4 . rpm

    4) Construir los RPMs: Construir RPM

    # r p m b u i l d   −t b g a ng l ia   −3 . 6 . 0 . t a r . g z

    5) Instalar los RPMs en el master :   Instalar RPM en elmaster

    cd / ro ot / rp mbu il d /RPMS/ x86_64 /  yum i n s t a l l   ∗ . rpm   −y

    Copiar los RPMs en los nodos a excepcion del paquetemetad. Para esto, lo eliminamos.

    # rm   −r f g a ng l ia −gmetad  ∗ . rpm

    Luego copiamos en una carpeta temporal “/tmp”

    # s c p   ∗ . rpm node1 : / tmp

    Y hacemos ssh

    # s s h n o d e 1

    Accedemos a la carpeta temporal

    # / t mp

    Descargamos el libconfuse

    # h t t p s : / / d l . f e do r a pr oj ec t . o r g / pub / e pe l / 6 /  x86_64 / l i bc on f us e   −2. 7−4. e l 6 . x86_6 4 . rpm

    Y lo instalamos:

    # yum i n s t a l l / tmp / ∗ . rpm y

    6) Editar el archivo “gmetad.conf” :  Editar para configu-rarlo

    # v i / e t c / ga ng l i a / gm etad . conf  

    Buscar la línea:

    d a ta _ so u rc e my c l ú s t e r l o c a l h o s t

    y reemplazarla por

    d a t a _ s o u r c e " [ n o m b re _ d e _ cl u s t er ] " 1 m a s te r

    7) Edita el archivo “gmond.conf”: Editar gmond.conf 

    # v i / e t c / ga ng l i a / gmond . conf  

    Buscar las líneas:

    c l u s t e r {name = " u n s p e c i f i e d "o wn er = " u n s p e c i f i e d "l a t l o n g = " u n s p e c i f i e d "u r l = " u n s p e c i f i e d "}

    reemplazarlas por:

    c l u s t e r {name = " [ n o m b r e _ d e _ c l u s t e r ] "o wn er = " u n s p e c i f i e d "l a t l o n g = " u n s p e c i f i e d "u r l = " u n s p e c i f i e d "}

    Buscar dos líneas:

  • 8/21/2019 Proyecto Bigdata Hadoop

    15/16

    15

    m c a s t _ j o i n = 2 3 9 . 2 . 1 1 . 7 1

    y modificarlas de la siguiente manera

    # m c a s t _ j o i n = 2 3 9 . 2 . 1 1 . 7 1

    Ahora hay que configurar el gmond.conf en los nodos :Se hace un ssh al nodo:

    # s s h [ nombr e_nodo ]

    Modificar el archivo

    # v i / e t c / ga ng l i a / gmond . conf  

    En el parámetro de nombre de clúster, modificar la mismalínea que en el master:

    n a m e = 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 línea

    m c a s t _ j o i n = 2 3 9 . 2 . 1 1 . 7 1

    por# m c a s t _ j o i n = 2 3 9 . 2 . 1 1 . 7 1

    Adicionalmente se deben invalidar todas las líneas que semuestran a continuación, añadiendo el símbolo “#” en elinterior de los corchetes:

    u d p _ r e c v _ c ha n n e l {( a ñ ad i r c o r ch e t es a l a s l í n e a s a qu í d e nt r o )}

    Y también las de:

    t c p _ a cc e p t c a nn e l {( a ñ ad i r c o r ch e t es a l a s l í n e a s a qu í d e nt r o )

    }Salir de la conexión con el nodo

    # e x i t

    8) Instalar Ganglia-Web:   Primero descargarla desde lalínea de comandos

    #wget h t t p : / / downl oads . s our ce f o r g e . ne t /  p r o j ec t / gan gl i a / 3. 1 . 1% 20% 28Wi en%29/  g a n g l i a −web −3 . 1 . 1

    Entrar a la carpeta donde se descargó

    # cd / r o ot / Downl oads / ga ng l i a

    y poner# yum i n s t a l l ga ng l ia −web −3. 1 . 1−1. noa rch .

    rpm y

    Para asegurarse de que los servicios se inicien en el booteo,hay que usar las siguientes líneas desde el master:

    # c h kc o nf i g h t t p d o n# c h k c o n f i g g me ta d o n# c h k c o n f i g gmond o n# s e r v i c e h t t p d s t a r t# s e r v i c e g me ta d 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 [ nombr e_nodo ]# c h k c o n f i g gmond o n# s e r v i c e gmond s t a r t

    Y cerrar la conexión con el nodo:

    # e x i t

    9) Fin de instalación::   Ahora se puede entrar desde elnavegador (Firefox) y poner directamente en la barra dedirecciones:

    m a s t e r / g a n g l i a

    y mostrará ganglia ejecutándose.

    REFERENCES

    [1] N. Figuerola, “Que hay detras de big data.” [Online]. Avail-able: https://articulosit.files.wordpress.com/2013/03/que-hay-detrc3a1s-de-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. Bollatt i, “BigData en la educacion,” p. 3. [Online].

    Available: http://universoup.es/5/explorandoelhorizonte/los-big-data-en-la-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-la-avalancha-de-datos-se-ha-convertido-en-un-importante-beneficio/ 

    [5] J. L. C. Giner. Big data el rastro digital de nuestrosclientes. [Online]. Available: http://www.esade.edu/web/esp/about-esade/today/news/viewelement/311123/1/big-data,-el-rastro-digital-de-nuestros-clientes

    [6] Reporte de gartner analiza big data alrededorde tecnologia de datos. [Online]. Available:http://searchdatacenter.techtarget.com/es/noticias/2240171952/Reporte-de-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-servidores-openpower-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]. Avail-able: http://www.abc.es/tecnologia/redes/20150205/abci-google-plus-twitter-facebook-linkedin-youtube-201502051014.html

    [11] M. Rodriguez, “Herramientas para big data entornohadoop,” 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,” inProcesamiento 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 datosno 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  Proce-samiento de grandes volumenes de datos en entornos Cloud Computingutilizando Hadoop MapReduce, Almeria, Apr. 2013, p. 122, en Univer-sidad de Almeria.

    [18] Gomez Martinez Carlos, “Salida Formatos de Archivos,” in   Proce-samiento de grandes volumenes de datos en entornos Cloud Computingutilizando Hadoop MapReduce, Almeria, Apr. 2013, p. 124, universidadde Almeria.

  • 8/21/2019 Proyecto Bigdata Hadoop

    16/16

    16

    [19] Gomez Martinez C, “Clase JobConf,” in   Procesamiento de grandesvolumenes 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. 127–131, universidad deAlmeria.

    [21] Sana Nawazish Ali, “Hadoop usado en el New York Times,” in  Bench-marking Distributed System in the Cloud: Yahoo! YCSB, Pamplona,p. 33, universidad Publica de Navarra.

    [22] Marcel Andre Augsburger Becerra, “Algortimo de Deteccion,” in   Par-alelizacion 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   Utiliza-cion de la plataforma Hadoop para implementar un programa dis-tribuido que permita encontrar las paredes de celulas de la epidermis de

     plantas modificadas geneticamente, Guayaquil, 2010, pp. 1–5, eSPOL.[24] Merchan Angel, Plaza Juan, and Moreno Juan, “Reconocimento de

    Rostros,” in   Implementacion de un modulo de busqueda de personasdentro de una base de datos en un ambiente distribuido usando Hadoop

     y los servicios web de Amazon (AWS), Guayaquil, p. 2, por ESPOL.