Diferencia entre revisiones de «Hadoop»
(→Configuración distribuida) |
(→Configuración distribuida) |
||
Línea 192: | Línea 192: | ||
</configuration> | </configuration> | ||
</pre> | </pre> | ||
+ | |||
+ | Estos ficheros de configuración son comunes a todos los nodos, independientemente que que vayamos a arrancar cualquiera de los servicios de hadoop. | ||
+ | |||
+ | He optado por ponerlo de esta forma ya que incluye una serie de scripts que es capaz de levantarte toda la plataforma con solo un comando. Se conecta por SSH a los nodos esclavos para levantar solo los servicios datanode y tasktracker. | ||
+ | |||
+ | Para hacer esto busca las máquinas asociadas en /opt/hadoop/conf/slaves. | ||
+ | |||
+ | Además si queremos que levante un name node secundario podremos añadirlo en /opt/hadoop/conf/masters | ||
== Instalación de PIG == | == Instalación de PIG == | ||
La instalación de pig es muy sencilla en Centos. Nos hemos bajado la versión estable desde esta [http://pig.apache.org/releases.html página] como rpm en /opt/src/ y después lo hemos instalado con '''rpm -i pig-0.10.0-1.i386.rpm''' | La instalación de pig es muy sencilla en Centos. Nos hemos bajado la versión estable desde esta [http://pig.apache.org/releases.html página] como rpm en /opt/src/ y después lo hemos instalado con '''rpm -i pig-0.10.0-1.i386.rpm''' |
Revisión de 06:33 22 oct 2012
Contenido
Introducción
Documento con apuntes sobre mi investigación sobre que es hadoop y como instalarlo. Viene de la necesidad en mi curro de instalar un sistema de procesado distribuido de ciertos ficheros de log.
Enlaces de interes
- Página oficial
- Un tutorial interesante
- tips & tricks de Mapreduce
- Cloudera
- Quick Reference: Hadoop Tools Ecosystem
Instalación
Preparación
Antes de nada he tenido que instalar Java 1.6.x (segun la documentación, preferiblemente desde SUN). Para descargarlo desde esta página. Me lo he descargado a /opt/src, y después lo he ejecutado poniendo sh /opt/src/jre-6u33-linux-x64.bin. Esto descomprime el binario y lo deja en /opt/src/jre1.6.0_33 y yo lo he movido a /opt/jre1.6.0_33. Además creo un enlace dentro del propio /opt con ln -s /opt/jre1.6.0_33 java.
Tambien he añadido al fichero /root/.bashrc las siguientes líneas
export JAVA_HOME=/opt/java export PATH=$PATH:$JAVA_HOME/bin
Comprobamos que tenemos el paquete ssh y sshd en el servidor
Descarga
Nos descargamos el hadoop. Para ello vamos a esta página para descargarnos la versión estable actual.
En primer lugar me he bajado la versión estable en RPM para 64 bits. Me la he descargado en el directorio /opt/src. Después lo he instalado con rpm: rpm -i hadoop-1.0.3-1.x86_64.rpm
Configuración previa
Home de Java
Antes de arrancar nada, nada más instalar el rpm, editamos el fichero /etc/hadoop/hadoop-env.sh. Comprobamos que hace un export a la ubicación de java correcta (/opt/java)
Uso maximo de memoria java
Para cambiar el límite de memoria que puede usar el proceso java de hadoop hay que cambiar la variable de HADOOP_OPTS del fichero de configuración /etc/hadoop/hadoop-env.sh
export HADOOP_OPTS="-Djava.net.preferIPv4Stack=true -Xmx2048m $HADOOP_CLIENT_OPTS"
Si ejecutamos /usr/bin/hadoop, nos dará información de como arrancar el proceso de hadoop.
Configuración pseudo-distribuida
Segun la página de documentación de hadoop La configuración que hay que realizar para el modo de distribuido en un solo nodo es la siguiente: conf/core-site.xml:
<configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration>
conf/hdfs-site.xml:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
conf/mapred-site.xml:
<configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration>
Sin embargo yo lo he hecho de la siguiente forma, lanzando unos scripts de configuración que hay en esta versión rpm de centos.
En primer lugar lanzamos el script de configuración de hadoop:
# hadoop-setup-conf.sh
En el que pregunta varios datos de ubicación de ficheros de configuración o donde va a ir el repositorio de datos de hdfs, donde va el pid, etc
Al terminal este script de configuración dice que hay que ejecutar el de configuracion de hdfs, pero antes de eso le vamos a dar formato.
Para ello, como usuario hdfs, ejecutamos el comando:
# hadoop namenode -format
Después podemos volver al usuario root y ejecutamos la configuracion de hdfs
# hadoop-setup-hdfs.sh
esto generará varios directorios dentro del dfs. Al finalizar nos sugiere que arranquemos el servicio datanode
# /etc/init.d/hadoop-datanode start
Ahora nos queda por arrancar los servicios jobtracker y tasktracker. El primero lo arrancamos de la siguiente forma:
# /etc/init.d/hadoop-jobtracker start
Para el tasktracker antes tendremos que crear el directorio de trabajo de este en local, para lo cual creamos el directorio /var/lib/hadoop/mapred y le damos permisos para el usuario mapred.hadoop
mkdir /var/log/hadoop/mapred chown mapred.hadoop /var/log/hadoop/mapred
y entonces podremos arrancar el servicio:
# /etc/init.d/tasktracker start
Configuración distribuida
Para la configuración distribuida he cambiado el tipo de instalación de hadoop, y he pasado a bajarme directamente los binarios de la web de hadoop.
He descomprimido directamente los binarios de hadoop en /opt/hadoop-1.0.4 y creado un enlace en /opt/hadoop. Después, he añadido las configuraciones de hadoop:
/opt/hadoop/conf/core-site.xml
<configuration> <property> <name>fs.default.name</name> <value>hdfs://shadoop1.prisadigital.int:8020</value> </property> </configuration>
/opt/hadoop/conf/hdfs-site.xml
<configuration> <property> <name>dfs.name.dir</name> <value>/srv/content/hadoop/hdfs/namenode</value> </property> <property> <name>dfs.data.dir</name> <value>/srv/content/hadoop/hdfs/datanode</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
Ojo, en esta configuración tengo puesta la replicación a un solo grado, ya que en mis dos servidroes de prueba tengo problemas de espacio para las pruebas que tengo que realizar, y no quiero que haya replicacion.
/opt/hadoop/conf/mapred-site.xml
<configuration> <property> <name>mapred.job.tracker</name> <value>shadoop1.prisadigital.int:9000</value> </property> <property> <name>mapred.system.dir</name> <value>/hadoop/mapred/system/</value> </property> <property> <name>mapred.local.dir</name> <value>/srv/content/hadoop/mapred</value> </property> <property> <name>mapred.tasktracker.map.tasks.maximum</name> <value>2</value> </property> <property> <name>mapred.tasktracker.reduce.tasks.maximum</name> <value>2</value> </property> <property> <name>mapred.queue.names</name> <value>default</value> </property> <property> <name>mapred.acls.enabled</name> <value>true</value> </property> <property> <name>mapred.child.java.opts</name> <value>-Xmx512M</value> </property> </configuration>
Estos ficheros de configuración son comunes a todos los nodos, independientemente que que vayamos a arrancar cualquiera de los servicios de hadoop.
He optado por ponerlo de esta forma ya que incluye una serie de scripts que es capaz de levantarte toda la plataforma con solo un comando. Se conecta por SSH a los nodos esclavos para levantar solo los servicios datanode y tasktracker.
Para hacer esto busca las máquinas asociadas en /opt/hadoop/conf/slaves.
Además si queremos que levante un name node secundario podremos añadirlo en /opt/hadoop/conf/masters
Instalación de PIG
La instalación de pig es muy sencilla en Centos. Nos hemos bajado la versión estable desde esta página como rpm en /opt/src/ y después lo hemos instalado con rpm -i pig-0.10.0-1.i386.rpm