COMO USAR HADOOP. Y sobrevivir a la experiencia



Documentos relacionados
Modelo de Gobierno de Datos con SPARK

Instalación Hadoop. Guía para Debian y derivados

Comprender un poco más de los que es Apache Pig y Hadoop. El tutorial de cerdo muestra cómo ejecutar dos scripts de cerdo en modo local y el

Manual de instalación y configuración de hadoop en linux

Desarrollo de un entorno basado en MapReduce para la ejecución distribuida de algoritmos genéticos paralelos

Comandos HDF Breve manual

Qué ofrece Autentia Real Business Solutions S.L?

Índice. Introducción Qué es? Conceptos clave Instalación Ejemplo Hola Mundo Procedimientos Almacenados

public static void main(string[ ] args) { Numero f1 = new Numero(3); Numero f2 = new Numero(4); Numero f3 = f1; f1.value = f2.value; Numero f4 = null;

Escalar aplicaciones a cantidades masivas de datos Usando computadoras baratas muchas

1. Creación del repositorio

Índice. Presentación Stratebi Introducción Qué es? Características Principales Instalación & Configuración Comandos

Alessandro Chacón Ernesto Level Ricardo Santana

La API Java MapReduce Una breve introducción

Hadoop. Cómo vender un cluster Hadoop?

GUI A D E I NSTALA CIO N D E AX IS

INSTITUTO GEOFISICO DEL PERÚ CENTRO NACIONAL DE DATOS GEOFISICOS - CDNG

Arquitectura Cliente/Servidor. Invocación de Métodos Remotos RMI: Remote Method Invocation. Llamadas a Métodos Remotos

1. Manejo de memoria estática 2. Manejo de memoria dinámica

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Introducción al lenguaje Java

PROGRAMACION DISTRIBUIDA MobileTracker: Ejemplo de implementación con RMI

Manual de usuario TFGPredicción.

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Modelo de Objetos Distribuidos

Seminario de Java. Contenido

Diseño y Evaluación de Configuraciones. Componentes software para cargar el sistema

Roberto Díaz Morales MLG 24/06/2013

Primera Escuela de la Red Temática SVO. Madrid, Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

# the. in the next command references the cloudera home directory # in hdfs, /user/cloudera

Apéndice B. Instalación de DSpace

Qué ofrece Autentia Real Business Solutions S.L?

CONTENIDO. Serialización. Carga dinamica de stubs RMI AVANZADO. Callbacks. Carga dinámica de Stubs

Manual del Protocolo XML-RPC de Mensajería Negocios

Universidad ORT - Arquitectura de Software. Requisitos

USANDO SERVLETS EN UN SERVIDOR WEB RESIN

Uso básico de la terminal

Java RMI Remote Method Invocation. Invocación Remota de Métodos en Java

Resumen. Abstract. 2. Generalidades. 1. Introducción. Palabras Clave: Hadoop, MapReduce, Lynx, Búsquedas, Optimización.

Práctica 7: Invocación Web Services con REST

Java RMI. las RPC de Java. Parte I. Luis Fernando Llana Díaz. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Tutorial básico del entorno de desarrollo Eclipse.

JAVA: Applets. Diseño de aplicaciones web.

Práctica 2: Java Remote Method Invocation (RMI)

Big Data. Analisís de grandes cantidades de datos. Sergio Marchena Quirós

Examen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN

APACHE HADOOP. Daniel Portela Paz Javier Villarreal García Luis Barroso Vázquez Álvaro Guzmán López

Tomcat Instalación. Norman Sáez 15 de agosto de 2007

Java. Mtro. Manuel Suárez Gutiérrez

CURSOS DE VERANO 2014

1. Visión general de RMI

Instituto Tecnológico de Costa Rica Escuela de Ingeniería en Computación

Area51 - Manual de instalación

Benemérita Universidad Autónoma del Estado de Puebla

Multitarea en Java. Rafa Caballero - UCM

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación

Universidad ORT - Arquitecturas de Software sobre plataforma JEE Web Services (parte 1)

Iniciar flujo a partir de un archivo XML

Práctica 4: Java Remote Method Invocation (RMI)

Programación de páginas web dinámicas con CGIs

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

INTRODUCCIÓN A JAVA. Índice

Big data A través de una implementación

GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN

RMI [Remote Method Invocation]

Técnicas Avanzadas de Testing Automatizado

Introducción a ZEUS. Introducción. Curso Doctorado Sistemas Multi-agente. Zeus es una herramienta de desarrollo de SMA.

Diseño de Sistemas Distribuidos Máster en Ciencia y Tecnología Informática Curso

Práctica 5: Common Object Request Broker Architecture CORBA

Parallel Virtual File System (PVFS)

INSTALACION DE UN SERVIDOR PENTAHO 5.2 CON POSTGRESQL 9.1 EN LINUX CENTOS 6.6 de 32 BITS

TEMA 5: Control de la Concurrencia en Java (API Estándar)

Manual de Usuario FTP Manager

Agregar Nueva Empresa en Millennium Revisión: 10/7/2014

Ejemplo de montar un NFS

PROGRAMACIÓN EN JAVA

Resumen. Abstract. Palabras Claves: Hive, Hadoop, MapReduce, ESPOL.

Servidor FTP en Ubuntu Juan Antonio Fañas

Introducción a Hadoop

Ingeniería del Software Arquitectura Física en 3 niveles

ANEXO 3 MANUAL PARA INSTALACION PERSONALIZADA DE ABIESWEB EN LINUX

PRÁCTICA 1 MANUAL BÁSICO DE ECLIPSE

Práctica 1: Herramientas básicas:

Requisitos. Universidad ORT Arquitectura de Software

EXTENSIÓN DE UML PARA APLICACIONES WEB

Aplicaciones Cliente - Servidor

Los bloques DLL (Figura A.1) externos permiten al usuario escribir su propio código y

FSD Práctica Invocación Remota: JavaRMI. Estudio Previo. Información

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes

Programación Orientada a Objetos con Java

CTSQL Monitor Unix. En este documento se describe el proceso de instalación y configuración básica para monitorizar. BASE 100, S.A.

CURSO: DESARROLLADOR PARA APACHE HADOOP

PROGRAMACION DISTRIBUIDA

INSTALACION DE UN SERVIDOR PENTAHO 5.2 CON POSTGRESQL 9.1 EN LINUX CENTOS 6.6 de 32 BITS

Clases Java para comunicaciones en red

1. El entorno de desarrollo Eclipse

Introducción a ANTLR. Procesadores de Lenguaje. 1 de 25

Transcripción:

COMO USAR HADOOP Y sobrevivir a la experiencia

ORGANIZACIÓN Descripción Hadoop: Procesos involucrados Esquema de Funcionamiento Instalación de Hadoop Instalación Local Descripción de Instalación en Cluster

ORGANIZACIÓN HDFS: Acceder al sistema de ficheros de Hadoop. Carga y descarga de Información Ejecución de Procesos Lanzamiento, ejecución y verificación de procesos (en local) Lanzamiento, ejecución y verificacion de procesos (cluster)

REPOSITORIO DE INFORMACÓN https://www.tsc.uc3m.es/~hmolina/mlgp Acceso restringido con password del Departamento

HADOOP Instalación, configuración y uso

FLUJO DE DATOS DE HADOOP Figure 2-1. MapReduce logical data flow Java MapReduce Having run through how the MapReduce program works, the next step is to express it in code. We need three things: a map function, a reduce function, and some code to run the job. The map function is represented by the Mapper class, which declares an abstract map() method. Example 2-3 shows the implementation of our map method. Example 2-3. Mapper for maximum temperature example import java.io.ioexception;

The number of reduce tasks is not governed by the size of the input, but is specified independently. In The Default MapReduce Job on page 225, you will see how to ARQUITECTURA TÍPICA Figure 2-3. MapReduce data flow with a single reduce task

ARQUITECTURA MÚLTIPLES REDUCTORES Figure 2-4. MapReduce data flow with multiple reduce tasks

ARQUITECTURA SIN REDUCTORES Figure 2-5. MapReduce data flow with no reduce tasks

HADOOP Varias formas de ejecución: En modo Standalone: No se necesita configurar nada. En modo Servidor - nodo local: Un sistema basado en cliente servidor, pero que se ejecuta en modo local todo. En modo distribuido: Infraestructura completa con varios nodos de almacenamiento, ejecución, etc...

MODO STANDALONE Descomprimir la distribución de Hadoop Establecer variable JAVA_HOME Et Voilà!!!!

PRUEBA Descomprimir BBDD de Reuters Ejecutar el comando: hadoop jar hadoop-examples-1.1.2.jar hadoop jar hadoop-examples-1.1.2.jar wordcount dir_reuters dir_output El directorio dir_output no debe existir Observar demora

ESTRUCTURA DE HADOOP

CONFIGURACIÓN EN MODO SERVIDOR LOCAL Creamos un directorio llamado conf_single Copiamos los contenidos de conf a conf_single

CONFIGURACIÓN DEL SERVIDOR MAESTRO CORE-SITE.XML Define el servidor que contendrá el sistema de ficheros <configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/tmp/hadoop/tmp</value> </property> </configuration>

HDFS-SITE.XML Define la configuración del comportamiento del sistema distribuido de ficheros <configuration> <property> <name>dfs.name.dir</name> <value>/tmp/hadoop/name</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.data.dir</name> <value>/tmp/hadoop/data</value> </property> </configuration> En instalaciones standalone se configura que la información no esté replicada. En configuraciones en cluster, la información DEBE estar replicada

CONFIGURACIÓN DEL JOBTRACKER MAPRED-SITE.XML Configura el coordinador de tareas <configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> <property> <name>mapred.system.dir</name> <value>/hadoop/mapred/system</value> </property> <property> <name>mapred.local.dir</name> <value>/tmp/hadoop/tmp_mapred</value> </property> </configuration>

OTROS FICHEROS Hay que editar el fichero hadoop-env.sh # The java implementation to use. Required. export JAVA_HOME="/Library/Java/JavaVirtualMachines/ jdk1.7.0_21.jdk/contents/home" export HADOOP_OPTS="-Djava.net.preferIPv4Stack=true -server"

INICIALIZACION DEL DFS Ejecutar: hadoop --config conf_single namenode -format hadoop-daemon.sh --config conf_single start namenode hadoop --config conf_single dfs -mkdir /user hadoop --config conf_single dfs -chmod 755 /user hadoop --config conf_single dfs -mkdir /tmp hadoop --config conf_single dfs -chmod 777 /tmp hadoop --config conf_single dfs -mkdir /mapred hadoop --config conf_single dfs -chmod 755 /mapred

INICIAR EL SISTEMA bin/start-all.sh --config conf_single Acceso al estado de los sistemas: NameNode (DFS) http://localhost:50070 JobTracker: http://localhost:50030

ACCESO AL SISTEMA DE FICHEROS El comando bin/hadoop invoca la API básica de hadoop. La aplicación dfs de la API básica permite el acceso al sistema de ficheros. bin/hadoop --config conf_single dfs

DFS Basado en los comandos UNIX hadoop --config conf_single dfs -ls hadoop --config conf_single dfs -mkdir hadoop --config conf_single dfs -chown hadoop --config conf_single dfs -chmod

DFS Para subir ficheros del ordenador local al DFS hadoop --config conf_single dfs -put src dst hadoop --config conf_single dfs -copyfromlocal src dst Para descargar ficheros hadoop --config conf_single dfs -get src dst hadoop --config conf_single dfs -copytolocal

INVOCAR UNA APLICACION Si está en un fichero jar: hadoop jar FICHERO_JAR.jar ClaseMain [parametros]

PRIMERA PRUEBA: CONTAR PALABRAS Se utilizará el programas ejemplos proporcionados por hadoop: hadoop --config conf_cluster jar hadoop-examples-1.1.2.jar En particular wordcount hadoop --config conf_cluster jar hadoop-examples-1.1.2.jar wordcount

INTEGRACIÓN DE HADOOP Y PYTHON

MAPPER -> REDUCER Los datos se presentan por tuplas: <llave><dato> y se deben presentar <llave><dato>

The number of reduce tasks is not governed by the size of the input, but is specified independently. In The Default MapReduce Job on page 225, you will see how to ARQUITECTURA TÍPICA Figure 2-3. MapReduce data flow with a single reduce task

CALCULO DE MAXIMA TEMPERATURA ANUAL Base de datos de sensores en E.E.U.U. Datos no ordenados tipo texto Estructura simple Datos de interes: Año: cols 15 a 18 Temperatura: cols 104 a 106. Si vale 9999 no es lectura válida Col 137 debe valer 0 o 1

import java.io.ioexception; import org.apache.hadoop.io.intwritable; import org.apache.hadoop.io.longwritable; import org.apache.hadoop.io.text; import org.apache.hadoop.mapreduce.mapper; public class MaxTemperatureMapper extends Mapper<LongWritable, Text, Text, IntWritable> { private static final int MISSING = 999; @Override public void map (LongWritable key, Text value, Context context) throws IOException, InterruptedException { String line = value.tostring(); String year = line.substring(14,18); int airtemperature; String quality = line.substring(136,137); if (quality.matches("[01]") ) { airtemperature = Integer.parseInt(line.substring(103,106).trim()); if (airtemperature!= MISSING ) context.write(new Text(year), new IntWritable(airTemperature)); } } }

import java.io.ioexception; import org.apache.hadoop.io.intwritable; import org.apache.hadoop.io.text; import org.apache.hadoop.mapreduce.reducer; public class MaxTemperatureReducer extends Reducer<Text, IntWritable, Text, IntWritable> { @Override public void reduce(text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException{ int maxvalue = Integer.MIN_VALUE; for (IntWritable value : values ) { maxvalue = Math.max(maxValue, value.get()); } context.write(key, new IntWritable(maxValue)); }

import org.apache.hadoop.fs.path; import org.apache.hadoop.io.intwritable; import org.apache.hadoop.io.text; import org.apache.hadoop.mapreduce.job; import org.apache.hadoop.mapreduce.lib.input.fileinputformat; import org.apache.hadoop.mapreduce.lib.output.fileoutputformat; public class MaxTemperature { /** * @param args */ public static void main(string[] args) throws Exception{ if (args.length!= 2) { System.err.println("Usage: MaxTemperature <input path> <output path>"); System.exit(-1); } Job job = new Job(); job.setjarbyclass(maxtemperature.class); job.setjobname("max Temperature"); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); job.setmapperclass(maxtemperaturemapper.class); job.setreducerclass(maxtemperaturereducer.class); job.setoutputkeyclass(text.class); job.setoutputvalueclass(intwritable.class); } System.exit(job.waitForCompletion(true)? 0 : 1); }

EJEMPLO MAX TEMPERATURE Ejemplo básico de MaxTem hadoop jar MaxTemp.jar MaxTemperature\ <dfs_src> \ <dfs_dst>

TÉCNICAS Streaming: Las aplicaciones para hacer MAP y REDUCE se escriben en un lenguaje que permita leer información desde STDIN, y escribir a STDOUT Se invoca una aplicación Hadoop que distribuye un proceso a los nodos de cómputo, el cual invoca la aplicación de MAP/REDUCE que se le ha indicado

hadoop jar../../hadoop-1.1.2/contrib/streaming/hadoopstreaming-1.1.2.jar hadoop jar \ contrib/streaming/hadoop-streaming-1.1.2.jar \ -input {DFSDIR}/input -output {DFSDIR}/output_py \ -mapper {GLOBAL_DIR}/map.py \ -reducer {GLOBAL_DIR}/reduce.py

STREAMING (CONT) La aplicación que hace MAP/REDUCE DEBE SER ACCESIBLE en el sistema de ficheros normal de cada nodo (no en el DFS de Hadoop) Solución: Copiar los ficheros a clusterdata

The number of reduce tasks is not governed by the size of the input, but is specified independently. In The Default MapReduce Job on page 225, you will see how to ARQUITECTURA COMBINER Figure 2-3. MapReduce data flow with a single reduce task

import org.apache.hadoop.fs.path; import org.apache.hadoop.io.intwritable; import org.apache.hadoop.io.text; import org.apache.hadoop.mapreduce.job; import org.apache.hadoop.mapreduce.lib.input.fileinputformat; import org.apache.hadoop.mapreduce.lib.output.fileoutputformat; public class MaxTemperature { /** * @param args */ public static void main(string[] args) throws Exception{ if (args.length!= 2) { System.err.println("Usage: MaxTemperature <input path> <output path>"); System.exit(-1); } Job job = new Job(); job.setjarbyclass(maxtemperature.class); job.setjobname("max Temperature"); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); job.setmapperclass(maxtemperaturemapper.class); job.setcombinerclass(maxtemperaturereducer.class); job.setreducerclass(maxtemperaturereducer.class); job.setoutputkeyclass(text.class); job.setoutputvalueclass(intwritable.class); } System.exit(job.waitForCompletion(true)? 0 : 1); }

CON COMBINER hadoop jar../../hadoop-1.1.2/contrib/streaming/hadoopstreaming-1.1.2.jar hadoop jar hadoop-streaming-1.1.2.jar \ -input {DFSDIR}/input -output {DFSDIR}/output_py \ -mapper {GLOBAL_DIR}/map.py \ -combiner {GLOBAL_DIR}/reduce.py -reducer {GLOBAL_DIR}/reduce.py

http://nostromo.tsc.uc3m.es:50030/jobtracker.jsp http://subserver1.tsc.uc3m.es:50070/dfshealth.jsp

BIBILIOGRAFIA Hadoop: The Definitive Guide. 3rd Edition.Tom White. O Reilly Writing an Hadoop MapReduce Program in Python Hadoop 1.1.2 Documentation