2011-09-03 15 views
6

Dentro de mi asignador me gustaría llamar al software externo instalado en el nodo de trabajador fuera del HDFS. es posible? ¿Cuál es la mejor manera de hacer esto?Ejecutando Hadoop MapReduce, es posible llamar a ejecutables externos fuera de HDFS

Entiendo que esto puede quitarle algunas de las ventajas/escalabilidad de MapReduce, pero me gustaría interactuar dentro de HDFS y llamar a los códigos de software externos compilados/instalados dentro de mi asignador para procesar algunos datos.

Respuesta

5

Los correlacionadores (y los reductores) son como cualquier otro proceso en la caja, siempre que el usuario TaskTracker tenga permiso para ejecutar el ejecutable, no hay ningún problema para hacerlo. Hay algunas formas de llamar procesos externos, pero como ya estamos en Java, ProcessBuilder parece un lugar lógico para comenzar.

EDIT: Sólo encontrado que Hadoop tiene una clase expresamente para este fin: http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/util/Shell.html

+0

Solo para agregar: Shell es el paquete visible, no puede usarlos sin estar en el paquete. –

+0

¿La clase Shell dentro de java llamará a un proceso en el nodo fuera del HDFS? – Joris

+0

@chris gracias - ¡eso funciona! ¿sabes cómo configurar los permisos de usuario de TaskTracker? – Joris

0

Esto es ciertamente factible. Puede encontrar que es mejor trabajar con Hadoop Streaming. Como dice en ese sitio web:

Hadoop Streaming es una utilidad que viene con la distribución de Hadoop. La utilidad le permite crear y ejecutar trabajos de mapeo/reducción con cualquier ejecutable o script como mapeador y/o reductor.

Tiendo a comenzar con código externo dentro de Hadoop Streaming. Dependiendo de su idioma, es probable que haya muchos buenos ejemplos de cómo usarlo en Streaming; una vez que ingresa al idioma de su elección, generalmente puede canalizar los datos a otro programa, si lo desea. He tenido varias capas de programas en diferentes idiomas jugando muy bien sin ningún esfuerzo adicional que si lo hubiera ejecutado en una caja Linux normal, más allá de solo obtener la capa externa trabajando con Hadoop Streaming.

+0

Tu enlace está roto –

Cuestiones relacionadas