hadoop and pig and mapreduce

35
Hadoop Pig And Map- Reduce

Upload: cristian-vitales-munoz

Post on 13-Jul-2015

237 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: Hadoop And Pig And MapReduce

Hadoop – Pig And Map-Reduce

Page 2: Hadoop And Pig And MapReduce

1 Comprender el problema actual y las

soluciones big data

2 Conocer la tecnología de

map/reduce y poder entender su

funcionamiento

3 Capacidad de instalación de Hadoop en

local y testeo sobre un WordCount

4 Capacidad de instalación de Pig en

local y testeo.

Objetivos

Page 3: Hadoop And Pig And MapReduce

1 Big Data – Un Problema

2 El Map Reduce como solución

3 Hadoop

4 Simplificación con Pig

Page 4: Hadoop And Pig And MapReduce

Big Data – Un problema

Page 5: Hadoop And Pig And MapReduce

1. Internet es enorme:

2. 20+B de páginas * 20KB/datos 400TBytes

3. Un ordenador lee alrededor de 30/35MB/seg

1. 4 meses para leer la web

2. De 400 discos duros para almacenarla

4. Mucha más complicación para hacer algo con

esos datos.

1.1 El problema

Page 6: Hadoop And Pig And MapReduce

• Paralelizamos el problema

• El mismo problema con 1000 maquinas < 3

horas

• pero…

• Compleja programación

• Comunicación entre maquinas

• Fallo de alguna maquina

• Optimización

• etc

1.2 La ventaja?

Page 7: Hadoop And Pig And MapReduce

1.3 Solución

Page 8: Hadoop And Pig And MapReduce

El Map Reduce como solución

Page 9: Hadoop And Pig And MapReduce

2.1 Map Reduce

Objetivo : Cuantos Tweets tiene twitter por cada Usuario?

Page 10: Hadoop And Pig And MapReduce

2.1 Map Reduce

Input : Clave Fila / Valor Información de un tweet

Page 11: Hadoop And Pig And MapReduce

2.1 Map Reduce

Map : Clave de salida : user_id, valor 1

Page 12: Hadoop And Pig And MapReduce

2.1 Map Reduce

Ordenamos por user_id

Page 13: Hadoop And Pig And MapReduce

2.1 Map Reduce

Reduce : Por cada user_id , sumamos el value del map (1)

Page 14: Hadoop And Pig And MapReduce

2.1 Map Reduce

Output : user_id , tweet_count

Page 15: Hadoop And Pig And MapReduce

2.1 Map Reduce

Contra mas maquinas añadamos al cluster, mas rápido el procesamiento de la información

Page 16: Hadoop And Pig And MapReduce

Análisis típicamente en Java

Los prototipos requieren de compilación

Código complejo

Alta probabilidad de error

2.2 Problemas

Page 17: Hadoop And Pig And MapReduce

Lenguaje de alto nivel

Más fácil que el SQL?

Procesa la información paso a paso

2.3 Pig entra en acción

Page 18: Hadoop And Pig And MapReduce

2.3 ¿Por qué Pig?

Porqué somos capaces de entender el siguiente script :P

Page 19: Hadoop And Pig And MapReduce

Hadoop

Page 20: Hadoop And Pig And MapReduce

1 Arquitectura

2 Word Count - Explicación

3 Instalación

4 Ejecución Word Count

Page 21: Hadoop And Pig And MapReduce

3.1 Arquitectura de Hadoop

Page 22: Hadoop And Pig And MapReduce

3.2 WordCount – Explicación

Page 23: Hadoop And Pig And MapReduce

3.3 Instalación – Pre - requisitos

Requisitos : Java JDK : 1. sudo add-apt-repository ppa:webupd8team/java

2. sudo apt-get update

3. sudo apt-get install oracle-java7-installer

4. java –version

Un usuario para hadoop 1. Sudo addgroup hadoop

2. Sudo adduser –ingroup hadoop hduser ( password )

Configuración del ssh

1. su – hduser

2. ssh-keygen –t rsa –P “”

3. (pulsar enter a todo hasta generar la imagen de la

clave rsa)

4. cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

5. ssh localhost yes exit

Desactivando Ip V6

1. sudo gedit /etc/sysctl.conf

1. net.ipv6.conf.all.disable_ipv6 = 1 2. net.ipv6.conf.default.disable_ipv6 = 1 3. net.ipv6.conf.lo.disable_ipv6 = 1

Page 24: Hadoop And Pig And MapReduce

3.3 Instalación – Hadoop

1. “Restart Computer”

2. cat /proc/sys/net/ipv6/conf/all/disable_ipv6

3. exit

Hadoop:

• Download:

http://ftp.cixug.es/apache/hadoop/core/stable1/hadoop-

1.2.1.tar.gz

• cd PATH_DOWNLOADED sudo tar –zxvf hadoop-1.2.1.tar.gz

• mv hadoop-1.2.1 hadoop

• sudo cp –r hadoop /usr/local/

• cd /usr/local/hadoop && sudo chown -R hduser:hadoop

hadoop

Update Profile :

• sudo gedit ~/.bashrc

Añadir lo siguiente al final del fichero:

• export HADOOP_HOME=/usr/local/hadoop

• export JAVA_HOME=/usr/lib/jvm/java-7-oracle

• unalias fs &> /dev/null alias fs="hadoop fs" unalias

hls &> /dev/null alias hls="fs -ls"

Page 25: Hadoop And Pig And MapReduce

3.3 Instalación – Hadoop basics

• lzohead () { hadoop fs -cat $1 | lzop -dc | head -1000

| less }

• export PATH=$PATH:$HADOOP_HOME/bin

Configuración:

• sudo gedit /usr/local/hadoop/conf/hadoop-env.sh

• Cambiar el export de java home por el siguiente:

• export JAVA_HOME=/usr/lib/jvm/java-7-oracle

• sudo mkdir -p /app/hadoop/tmp

• sudo chown hduser:hadoop /app/hadoop/tmp

• sudo chmod 750 /app/hadoop/tmp

Page 26: Hadoop And Pig And MapReduce

3.3 Instalación – Hadoop XML Files – core-site.xml

sudo gedit /usr/local/hadoop/conf/core-site.xml

Entre los tags de <configuration> </configuration>

añadir

<property> <name>hadoop.tmp.dir</name> <value>/app/hadoop/tmp</value> <description> A base for other temporary directories. </description> </property> <property> <name>fs.default.name</name> <value>hdfs://localhost:54310</value> <description> The name of the default file system. A URI whose scheme and authority determine the FileSystem implementation. The uri's scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implementation class. The uri's authority is used to determine the host, port, etc. for a filesystem.

</description> </property>

Page 27: Hadoop And Pig And MapReduce

3.3 Instalación – Hadoop XML Files – mapred-site.xml

sudo gedit /usr/local/hadoop/conf/mapred-site.xml

Entre los tags de <configuration> </configuration>

añadir

<property>

<name>mapred.job.tracker</name>

<value>localhost:54311</value>

<description>The host and port that the MapReduce

job tracker runs at. If "local", then jobs are run

in-process as a single map and reduce task.

</description>

</property>

Page 28: Hadoop And Pig And MapReduce

3.3 Instalación – Hadoop XML Files – hdfs.site.xml

sudo gedit /usr/local/hadoop/conf/mapred-site.xml

Entre los tags de <configuration> </configuration>

añadir

<property>

<name>dfs.replication</name>

<value>1</value>

<description>

Default block replication. The actual

number of replications can be specified when the

file is created. The default is used if

replication is not specified in create time.

</description>

</property>

Page 29: Hadoop And Pig And MapReduce

3.3 Iniciando Hadoop

su – hduser

cd /usr/local/hadoop/bin

./hadoop namenode -format

./start-all.sh

jps

./stop-all.sh para parar el cluster

Page 30: Hadoop And Pig And MapReduce

3.4 Ejecución de un Map/Reduce

Descargar los siguientes e-books en formato texto-simple (UTF-8): http://www.gutenberg.org/ebooks/20417 http://www.gutenberg.org/ebooks/5000 http://www.gutenberg.org/ebooks/4300 Guardar los archivos en un directorio local por ejemplo /tmp/libros mkdir /tmp/libros sudo cp [Nombre_Libro_Descargado] /tmp/libros/ ls –al /tmp/libros/ Comprobamos que estan todos Ahora vamos a copiar los libros al sistema de ficheros de hadoop HDFS para procesarlos sudo cd /usr/local/hadoop/bin Si no estamos en hduser su – hduser ./hadoop dfs –copyFromLocal /tmp/libros/ /user/hduser/libros ./hadoop dfs –ls /user/hduser/ Run The Map Reduce Job ./hadoop jar ../hadoop*examples*.jar wordcount /user/hduser/libros

/user/hduser/output-libros ./hadoop dfs –ls /user/hduser/output-libros ./hadoop dfs –cat /user/hduser/output-libros/part-r-00000

Page 31: Hadoop And Pig And MapReduce

Pig

Page 32: Hadoop And Pig And MapReduce

1 Instalación

2 Word Count en Pig

Page 33: Hadoop And Pig And MapReduce

4.1 Instalación

wget http://apache.cs.utah.edu/pig/pig-0.11.1/pig-

0.11.1.tar.gz

tar -xvf pig-0.11.1.tar.gz

sudo mv pig-0.11.1 /usr/lib/pig

sudo gedit ~/.bashrc

Añadir :

export PIG_HOME=/usr/lib/pig

export PATH=$PATH:$PIG_HOME/bin

sudo –s

pig –version

pig –x local

quit

Page 34: Hadoop And Pig And MapReduce

4.1 WordCount Pig

wget http://www.gutenberg.org/ebooks/20417 mv [Nombre Descarga] input.txt sudo gedit wordcount.pig A = load './input.txt';

B = foreach A generate flatten(TOKENIZE((chararray)$0)) as word; C = group B by word; D = foreach C generate COUNT(B), group; store D into './wordcount';

pig –x local wordcount.pig cat wordcount/part-r-00000

Page 35: Hadoop And Pig And MapReduce

http://research.incubio.com/

Cristian Vitales Research Engineer

Gracias