Download - Hadoop And Pig And MapReduce
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