SafeChildren Banner

Havoc Oracle Solaris Experts

lunes, 20 de julio de 2009

Instalación Hadoop sobre Solaris - Configurar SMF para DataNode y TaskTracker

Introducción
En post anteriores hemos concluido la primera parte de la Instalación y Configuración de Hadoop sobre Solaris 10, sin embargo, vamos a incluir alguna mejora en la configuración para evitar caídas de los DataNode

Configurar DataNode para arranque automático utilizando SMF
La configuración y estado de los servicio en Solaris 10 trajo una nueva característica llamada SMF, básicamente sustituye la antigua funcionalidad de los /etc/rc?.d por un framework más avanzado. Pues bien, vamos a utilizarlo para configurar el inicio de nuestros DataNodes de forma que se inicien solos.

Creación del descriptor SMF
Para ello, crearemos la siguiente estrucutra de directorios en los datanodes
# mkdir -p /var/svc/manifest/application/hadoop
# cd /var/svc/manifest/application/hadoop
# vi datanode.xml

He introducimos lo siguiente:

<service_bundle type="'manifest'" name="'HADOOP:DataNode'">
<service name="application/hadoop/datanode" type="service" version="1">
<create_default_instance enabled="'false'">
<single_instance>

<dependency name="multi-user-server" grouping="optional_all" type="service" restart_on="none">
<service_fmri value="'svc:/milestone/multi-user-server'">
</service_fmri>

<exec_method type="method" name="start" exec="/lib/svc/method/hadoop/datanode %m" timeout_seconds="60">
<method_context>
<method_credential user="'hadoop'">
</method_credential>
</method_context>

<exec_method type="method" name="restart" exec="/lib/svc/method/hadoop/datanode %m" timeout_seconds="60">
<method_context>
<method_credential user="'hadoop'">
</method_credential>
</method_context>

<exec_method type="method" name="stop" exec="/lib/svc/method/hadoop/datanode %m" timeout_seconds="60">
<method_context>
<method_credential user="'hadoop'">
</method_credential>
</method_context>

<property_group name="'startd'" type="'framework'">
<propval name="'duration'" type="'astring'" value="'contract'">
</propval>

<template>
<common_name>
<loctext lang="'C'">
HADOOP DataNode Service
</loctext>
</common_name>
<documentation>
<doc_link name="'hadoop_datanode_overview'" uri="'http://http://sparcki.blogspot.com/2009/07/apache-hadoop-que-es-y-para-que-sirve.html'/">
<doc_link name="'hadoop_datanode_install'" uri="'http://http://hadoop.apache.org/'">
</doc_link>
</doc_link>
</documentation>

Validamos e Importamos la definición

# svccfg
svc:> validate /var/svc/manifest/application/hadoop/datanode.xml
svc:> import /var/svc/manifest/application/hadoop/datanode.xml
svc:> quit


A continuación, crearemos el method que será llamado por el framework SMF

# mkdir -p /lib/svc/method/hadoop
# cd /lib/svc/method/hadoop
# vi datanode

He introducimos lo siguiente

#!/sbin/sh
# Start/stop Hadoop DataNode
#
.. /lib/svc/share/smf_include.sh
HADOOP_HOME=/opt/hadoop
HADOOP_DAEMON=hadoop-daemon.sh
CFG=$HADOOP_HOME/bin/$HADOOP_DAEMON
TYPE=datanode

case "$1" in
'start')
$CFG start $TYPE
sleep 2
;;
'restart')
$CFG stop $TYPE
sleep 2
$CFG start $TYPE
;;
'stop')
$CFG stop $TYPE
;;
*)
echo "Usage: $0 { start | stop | restart }"
exit 1
;;
esac
exit $SMF_EXIT_OK

Corregimos los permisos y propietario
# chown -R root:sys /var/svc/manifest/application/hadoop
# chown -R root:bin /lib/svc/method/hadoop/
# chmod 555 /lib/svc/method/hadoop/datanode

Ya podemos activar el servicio
# svcadm enable -t svc:/application/hadoop/datanode
# svcs -a|grep hadoop
online 17:39:20 svc:/application/hadoop/datanode:default

Ya está! Si ahora hacemos un kill -9 de nuestro PID, veremos como el framework SMF vuelve a iniciar el demonio

Os dejo a vuestra imaginación cómo hacer un servicio para el TaskTracker y de esta forma tener los datanodes con arranque automático.


Os he dejado los archivos de configuración completos para que los podais descargar en las siguientes direcciones:

No hay comentarios:

Publicar un comentario en la entrada