hadoop and pig and mapreduce

Post on 13-Jul-2015

237 Views

Category:

Engineering

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Hadoop – Pig And Map-Reduce

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

1 Big Data – Un Problema

2 El Map Reduce como solución

3 Hadoop

4 Simplificación con Pig

Big Data – Un problema

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

• 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?

1.3 Solución

El Map Reduce como solución

2.1 Map Reduce

Objetivo : Cuantos Tweets tiene twitter por cada Usuario?

2.1 Map Reduce

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

2.1 Map Reduce

Map : Clave de salida : user_id, valor 1

2.1 Map Reduce

Ordenamos por user_id

2.1 Map Reduce

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

2.1 Map Reduce

Output : user_id , tweet_count

2.1 Map Reduce

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

Análisis típicamente en Java

Los prototipos requieren de compilación

Código complejo

Alta probabilidad de error

2.2 Problemas

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

2.3 ¿Por qué Pig?

Porqué somos capaces de entender el siguiente script :P

Hadoop

1 Arquitectura

2 Word Count - Explicación

3 Instalación

4 Ejecución Word Count

3.1 Arquitectura de Hadoop

3.2 WordCount – Explicación

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

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"

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

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>

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>

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>

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

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

Pig

1 Instalación

2 Word Count en Pig

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

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

http://research.incubio.com/

Cristian Vitales Research Engineer

Gracias

top related