Empezando a desarrollar con Hadoop


Hadoop es una implementación de código abierto de la plataforma MapReduce y sistema de archivos distribuido, escrito en Java. Este post explica los conceptos básicos de cómo empezar a utilizar Hadoop para experimentar y aprender, abarcando tanto la creación de la plataforma como la conexión de otras herramientas para utilizarlo.

Requisitos previos

Desarrollar en Hadoop requiere un entorno de programación Java. Usted puede descargar un kit de desarrollo de Java (JDK) para una amplia variedad de sistemas operativos desde http://java.sun.com . Hadoop requiere el Java Standard Edition (Java SE), la versión 6, que es la versión más actualizada en el momento de escribir estas líneas.

Una maquina virtual  Hadoop

En esta sección se explica cómo configurar una máquina virtual para ejecutar Hadoop dentro de su equipo host. Después de instalar el la imagen de máquina virtual software de la máquina virtual y, usted aprenderá cómo iniciar sesión y ejecutar trabajos en el entorno de Hadoop.

Los usuarios de Linux, Mac OSX, u otros entornos Unix son capaces de instalar Hadoop y ejecutarlo en una (o más) máquinas sin necesidad de software adicional más allá de Java. Si usted está interesado en hacer esto, hay instrucciones disponibles en el sitio web de Hadoop en el documento de introducción .

Ejecución de Hadoop en la parte superior de Windows requiere la instalación de cygwin , un ambiente similar a Linux que se ejecuta dentro de Windows. Hadoop funciona razonablemente bien en cygwin, pero es oficialmente “sólo con fines de desarrollo.” Hadoop en cygwin puede ser inestable, y la instalación de cygwin en sí puede ser engorroso.

Para ayudar a los desarrolladores en empezar fácilmente con Hadoop, hay  una imagen de máquina virtual que contiene una instalación preconfigurada Hadoop. La imagen de la máquina virtual se ejecutará dentro de un entorno de “sandbox” en el cual podemos ejecutar otro sistema operativo. El sistema operativo en el interior del recinto de seguridad no sabe que hay otro ambiente operativo fuera de ella; actúa como si fuera en su propia computadora. Este entorno de recinto de seguridad se conoce como el “huésped de la máquina” ejecutando un “sistema operativo invitado.” La máquina física que ejecuta el software de máquina virtual se conoce como la “máquina host” y se ejecuta el “sistema operativo host.” La máquina virtual ofrece otras aplicaciones host de la máquina con la apariencia de que otro equipo físico está disponible en la misma red. Las aplicaciones que se ejecutan en la máquina host ver la máquina virtual como una máquina independiente con su propia dirección IP, y pueden interactuar con los programas dentro de la máquina virtual en esta moda.

vm-en-Ventanas
Una máquina virtual encapsula un sistema operativo dentro de otro.
Aplicaciones en la VM creen que se ejecutan en un host físico separado de otras aplicaciones en el sistema operativo externo. Aquí se demuestra una máquina host de Windows y una máquina (virtual) Linux invitado.

Los desarrolladores de aplicaciones no necesitan utilizar la máquina virtual para ejecutar Hadoop. Desarrolladores de Linux suelen utilizar Hadoop en su entorno de desarrollo nativo, y los usuarios de Windows a menudo instalan cygwin para el desarrollo de Hadoop. La máquina virtual se proporciona con este tutorial permite a los usuarios un cómodo plataforma de desarrollo alternativo con un mínimo de configuración requerida. Otra ventaja de la máquina virtual es su funcionalidad de restablecimiento de fácil. Si sus experimentos rompen la configuración Hadoop o hacen que el sistema operativo inutilizable, siempre se puede simplemente copiar la imagen de máquina virtual desde el CD de nuevo a donde se ha instalado en su ordenador, y partir de un conocido buen estado.

La máquina virtual ejecuta Linux, y viene preconfigurada para ejecutar Hadoop en modo pseudo-distribuido en este sistema. (Se configura como un sistema totalmente distribuido, pero se ejecuta realmente en una instancia de máquina única.) Podemos escribir programas utilizando Hadoop editores y otras aplicaciones de la plataforma de acogida, y ejecutarlos en nuestro “grupo” que consta de sólo la máquina virtual . Nos conectaremos nuestro entorno host para la máquina virtual a través de la red.

Cabe señalar que la máquina virtual también se ejecutará dentro de otra instancia de Linux. Los usuarios de Linux pueden instalar el software de la máquina virtual y ejecutar el Hadoop VM también; la misma separación entre los procesos de acogida y los procesos de los huéspedes se aplica aquí.

Instalación de VMware Player

La máquina virtual está diseñado para funcionar dentro del VMware Player . Una copia del vvm-player de VMware (versión 2.5), tanto para 32 bits de Windows y Linux se incluye aquí ( linux-rpm , linux-bundle , ventanas-exe ).

Si está ejecutando en un sistema operativo diferente, o prefiere descargar una versión más reciente del reproductor, una estrategia de instalación alternativo es navegar a http://info.vmware.com/content/GLP_VMwarePlayer . Usted tendrá que registrarse para obtener un “kit de inicio de virtualización.” Usted recibirá un correo electrónico con un enlace a “Descargar VMware Player.” Haga clic en el enlace, y luego haga clic en “Descargar ahora” en la parte superior de la pantalla en “versión más reciente” y siga las instrucciones. VMware Player está disponible para Windows o Linux. El último está disponible tanto en versiones de 32 y 64 bits versiones.

El programa VMware Player  ocupa  aproximadamente un 170 MB de descarga. Cuando la descarga se haya completado, ejecute el programa de instalación para configurar VMware Player, y siga las instrucciones como se indica. Instalación en Windows se realiza mediante un proceso de instalación de Windows típico.

Configuración del entorno virtual

A continuación, copie la máquina virtual de Hadoop en una ubicación en el disco duro. Es una carpeta vmware comprimido (hadoop-vm-aparato-0-18-0), que incluye un par de archivos; un archivo .vmdk que es una instantánea del disco duro de la máquina virtual, y un archivo .vmx que contiene la información de configuración para iniciar la máquina virtual. Después de descomprimir el archivo zip carpeta vmware, para arrancar la máquina virtual, haga doble clic en el archivo hadoop-aparato-0.18.0.vmx en el Explorador de Windows.

vm-copia

Al iniciar la máquina virtual por primera vez, VMware Player reconocerá que la imagen de la máquina virtual no se encuentra en el mismo lugar que solía ser. Usted debe informar a VMware Player que copió esta imagen de máquina virtual. VMware Player entonces generará nuevos identificadores de sesión para esta instancia de la máquina virtual. Si posteriormente mueve la imagen VM a una ubicación diferente en su propio disco duro, usted debe decirle a VMware Player que se ha mudado de la imagen.

Si alguna vez dañado la imagen VM (por ejemplo, sin querer borrar o sobrescribir archivos importantes), siempre se puede restaurar una copia prístina de la máquina virtual mediante la copia de una imagen VM recién salido de este CD tutorial. (Así que no seas tímido a la hora de explorar! Siempre puede restablecer a un Estado que funcione.)

Después de seleccionar esta opción y hacer clic en Aceptar, la máquina virtual debe comenzar arranque normalmente. Verá que realice el procedimiento de arranque estándar para un sistema Linux. Será obligarse a una dirección IP en un segmento de red sin usar, y luego mostrar un mensaje que permite a un usuario para iniciar sesión.

Cuentas de usuario de la máquina virtual

La máquina virtual viene preconfigurado con dos cuentas de usuario: “root” y “hadoop-user“. La cuenta hadoop-usuario tiene permisos de sudo para realizar las funciones de gestión del sistema, como apagar la máquina virtual. La gran mayoría de su interacción con la máquina virtual será tan hadoop usuario.

Para iniciar sesión como hadoop usuario, primero haga clic en el interior la pantalla de la máquina virtual. La máquina virtual tomará el control de su teclado y el ratón. Para escapar de vuelta a Windows en cualquier momento, pulse CTRL + ALT al mismo tiempo. La contraseña hadoop usuario de usuario es Hadoop. Para iniciar sesión como root, la contraseña es root.

Ejecución de un job en Hadoop

Ahora que la máquina virtual se inicia, o se ha instalado Hadoop en su propio sistema en el modo pseudo-distribuido, vamos a asegurarnos de que Hadoop está configurado correctamente.

Si está utilizando la máquina virtual, entre como Hadoop-usuario, como se indica más arriba. Va a empezar en su directorio personal: / home / hadoop usuario. Ls Mecanografía, verá un directorio llamado hadoop /, así como un conjunto de scripts para administrar el servidor. Nombre de host del equipo virtual es hadoop-desk.

En primer lugar, debemos iniciar el sistema Hadoop. Escriba el siguiente comando:

  hadoop-user @ hadoop-desk: ~ $ ./start-hadoop

Si ha instalado Hadoop en su sistema host, utilice los siguientes comandos para lanzar hadoop (asumiendo que ha instalado en ~ / hadoop):

[email protected]:~$ cd hadoop
[email protected]:~/hadoop$ bin/start-all.sh

Verá una serie de mensajes de estado aparecerá como el arranque servicios. Si se le indica si está bien para conectar con el host actual, escriba “sí”. Pruebe a ejecutar un programa de ejemplo para asegurar que Hadoop está configurado correctamente:

  hadoop-user @ hadoop-desk: ~ $ cd hadoop 
  hadoop-user @ hadoop-desk: ~ / hadoop $ pi jar bin / Hadoop Hadoop-0.18.0-examples.jar 10 1000000

Esto debería proporcionar una salida que se ve algo como esto:

Wrote input for Map #1
Wrote input for Map #2
Wrote input for Map #3
...
Wrote input for Map #10
Starting Job
INFO mapred.FileInputFormat: Total input paths to process: 10
INFO mapred.JobClient: Running job: job_200806230804_0001
INFO mapred.JobClient: map 0% reduce 0%
INFO mapred.JobClient: map 10% reduce 0%
...
INFO mapred.JobClient: map 100% reduce 100%
INFO mapred.JobClient: Job complete: job_200806230804_0001
...
Job Finished in 25.841 second
Estimated value of PI is 3.141688

Esta tarea se ejecuta una simulación para estimar el valor de pi basado en el muestreo. La prueba primero escribió una serie de puntos a una lista de archivos, uno por tarea mapa. A continuación, calcula una estimación de PI basado en estos puntos, en la tarea MapReduce sí mismo. Cómo MapReduce funciona y cómo escribir un programa de este tipo se discuten en el siguiente módulo. El programa cliente Hadoop que utilizó para lanzar la prueba pi lanzó el trabajo, aparece cierta información de actualización progreso en cuanto a cómo está avanzando el trabajo, y luego mostrará algunos contadores de rendimiento finales y la producción específica de la tarea: una estimación para el valor de pi.

Acceso a la máquina virtual a través de ssh

En lugar de utilizar directamente el terminal de la máquina virtual, también puede conectarse “a distancia” a través de ssh desde el entorno de acogida. El uso de un cliente de ssh como masilla (en Windows), inicie la sesión con nombre de usuario “hadoop-usuario” (contraseña hadoop) a la dirección IP que se muestra en el terminal de la máquina virtual cuando se inicia. Ahora puede interactuar con esta máquina virtual como si se tratara de otra máquina Linux en la red.

Esto sólo se puede hacer desde la máquina host. La imagen de VMware es, por defecto, configurado para utilizar sólo-host de red; sólo el equipo host puede hablar con la máquina virtual sobre su interfaz de red. La máquina virtual no aparece en la red externa real. Esto se hace para fines de seguridad.

Si usted necesita encontrar la dirección IP de la máquina virtual después, el comando ifconfig mostrará este en el campo “inet addr”.

Nota importante de seguridad: En la configuración de VMware, puede volver a configurar la máquina virtual para el acceso de red en lugar de la creación de redes sólo de host. Si se habilita el acceso a la red, se puede acceder a la máquina virtual desde cualquier otro lugar en la red a través de su dirección IP. En este caso, debe cambiar las contraseñas asociadas a las cuentas en la máquina virtual para evitar que usuarios no autorizados puedan iniciar sesión con la contraseña predeterminada.

Cómo apagar la máquina virtual

Cuando haya terminado con la máquina virtual, puede apagarlo conectándose como hadoop usuario y poweroff sudo escribir. La máquina virtual se apagará de forma ordenada y en la ventana que se ejecuta en desaparecerá.

Primeros pasos con Eclipse

Un potente entorno de desarrollo para la programación basado en Java es Eclipse . Eclipse es un IDE gratuito de código abierto. Es compatible con varios idiomas a través de una interfaz de complementos, con especial atención a Java. Las herramientas diseñadas para trabajar con Hadoop se pueden integrar en Eclipse, por lo que es una atractiva plataforma para el desarrollo de Hadoop. En esta sección vamos a revisar cómo obtener, configurar y utilizar Eclipse.

Descarga e instalación

Nota: La versión más actual de Eclipse se llama Ganímedes. Nuestras pruebas demuestran que Ganímedes es actualmente incompatible con el plugin de Hadoop MapReduce. La versión más reciente que funcionó correctamente con el plugin de Hadoop es la versión 3.3.1, “Europa”. Para descargar Europa, no visite el sitio web principal de Eclipse; que se puede encontrar en el sitio Archivo http://archive.eclipse.org/eclipse/downloads/ como el “Archivo de Prensa (3.3.1).”

El sitio web de Eclipse tiene varias versiones disponibles para su descarga; elija “Eclipse Classic” o “Eclipse IDE para desarrolladores de Java.”

Porque está escrito en Java, Eclipse es muy multiplataforma. Eclipse está disponible para Windows, Linux y Mac OSX.

Instalación de Eclipse es muy sencillo. Eclipse se empaqueta como un archivo zip. El propio Windows de forma nativa puede descomprimir el archivo comprimido en un directorio. Si encuentra errores con la herramienta de descompresión de Windows (ver [1] ), pruebe a utilizar una utilidad de descompresión de terceros, tales como 7-zip o WinRAR .

Después de haber descomprimido Eclipse en un directorio, se puede ejecutar directamente desde ese directorio sin modificaciones o otro procedimiento “Instalación”. Es posible que desee moverlo a C: \ Archivos de programa \ Eclipse para mantener consistente con sus otras aplicaciones, pero puede residir en el escritorio o en otros lugares también.

Instalación del Plugin  MapReduce

Hadoop viene con un plugin para Eclipse que hace que el desarrollo de programas de MapReduce más fácil. En el directorio de Hadoop-0.18.0 / contrib / eclipse-plugin en este CD, se encuentra un archivo llamado Hadoop-0.18.0-Eclipse-plugin.jar. Copia este en el plugins / subdirectorio donde ha descomprimido Eclipse.

Cómo realizar una copia de Hadoop

Mientras que publicaremos programas MapReduce en la máquina virtual, estaremos compilarlos en la máquina host. Por tanto, el host necesita una copia de los frascos de Hadoop para compilar el código contra. Copie el /hadoop-0.18.0 directorio desde el CD en una ubicación de su unidad local, y recordar que esto es. No es necesario configurar esta copia de Hadoop de ninguna manera.

Ejecución de Eclipse

Navegue en el directorio de Eclipse y ejecutar eclipse.exe para iniciar el IDE. Eclipse tiendas de todos sus proyectos de código y sus ajustes correspondientes en un directorio llamado espacio de trabajo.

Al iniciar Eclipse, se le pedirá que para un directorio para que actúe como el espacio de trabajo. Elegir un nombre de directorio que tenga sentido para usted y haga clic en Aceptar.

eclipse-Espacio de Trabajo

Configuración del MapReduce Plugin

  Vamos a caminar a través del proceso de configuración de Eclipse para cambiar a la perspectiva MapReduce y conectarse a la máquina virtual Hadoop.

Paso 1: Si aún no lo ha hecho, inicie Eclipse y elegir un directorio de espacio de trabajo. Si se le presenta una pantalla de “bienvenida”, haga clic en el botón que dice “Ir a la Mesa de trabajo.” El banco de trabajo es la vista principal de Eclipse, donde se puede escribir código fuente, lanzar programas, y gestionar sus proyectos.

Paso 2:. Inicie la máquina virtual Haga doble clic en el archivo image.vmx en el directorio de instalación de la máquina virtual para poner en marcha la máquina virtual. Se debe iniciar el proceso de arranque de Linux.

Paso 3:. Pase a la perspectiva MapReduce En la esquina superior derecha de la mesa de trabajo, haga clic en el botón “Abrir perspectiva”, como se muestra en la Figura 3.4:

Perspectiva
Figura 3.4: Cambio de la Perspectiva

Seleccione “Otro”, seguido de “Mapa / Reducir” en la ventana que se abre. Al principio, nada puede aparecer a cambiar. En el menú, elija Ventana * Mostrar vista * Otros. En “Herramientas de MapReduce,” seleccione “Map / Reduce Ubicaciones.” Esto debería hacer visible un nuevo panel en la parte inferior de la pantalla, junto a problemas y tareas.

Paso 4:. Añadir el servidor en el Mapa / Reducir panel de ubicaciones, haga clic en el logotipo de elefante en la esquina superior derecha para añadir un nuevo servidor a Eclipse.


Figura 3.5: Adición de un nuevo servidor

Ahora se le pide que rellene una serie de parámetros que identifican el servidor. Para conectarse a la imagen de VMware, los valores son:

Location name: (Any descriptive name you want; e.g., "VMware server")
Map/Reduce Master Host: (The IP address printed at startup)
Map/Reduce Master Port: 9001
DFS Master Port: 9000
User name: hadoop-user

A continuación, haga clic en la pestaña “Avanzado”. Existen dos configuraciones aquí que hay que cambiar.

Desplácese hacia abajo para hadoop.job.ugi. Contiene sus credenciales de inicio de sesión de Windows actuales. Resalte la primera valores separados por comas en esta lista (su nombre de usuario) y sustituirlo por hadoop usuario.

A continuación, desplácese más abajo para mapred.system.dir. Borrar el valor actual y ponerlo a / hadoop / mapred / sistema.

Cuando haya terminado, haga clic en “Finalizar”. Su servidor aparecerá ahora en el Mapa / Reducir panel de ubicaciones. Si nos fijamos en el Explorador de proyectos (esquina superior izquierda de Eclipse), verá que el plugin MapReduce ha añadido la capacidad de navegar HDFS. Haga clic en los botones [+] para expandir el árbol de directorios para ver los archivos que ya existen. Si ha insertado archivos en HDFS ti mismo, que será visible en este árbol.


Figura 3.6: Archivos visible en el Visor de HDFS

Ahora que su sistema está configurado, las siguientes secciones le dará a conocer las características básicas y verificar que funcionan correctamente.

Interacción con HDFS

La imagen de VMware expondrá un ejemplo HDFS de un solo nodo para su uso en aplicaciones MapReduce. Si usted está conectado a la máquina virtual, se puede interactuar con HDFS usando las herramientas de línea de comandos que se describen en el Módulo 2 También puede manipular HDFS a través del plugin de MapReduce.

Usando la línea de comandos

Una tarea MapReduce interesante requerirá algunos datos externos al proceso: archivos, resultados de rastreo web, etc log Antes de que pueda empezar el procesamiento con MapReduce, los datos deben ser cargados en su sistema de archivos distribuido. En el Módulo 2 , aprendiste cómo copiar archivos desde el sistema de archivos local en HDFS. Pero esto va a copiar los archivos del sistema de archivos local de la VM en HDFS – no desde el sistema de archivos de la computadora host.

Para cargar datos en HDFS en la máquina virtual, usted tiene varias opciones disponibles para usted:

  1. scp los archivos de la máquina virtual, y luego usar el bin / hadoop fs -poner ... sintaxis para copiar los archivos del sistema de archivos local de la máquina virtual en HDFS,
  2. tubería de los datos de la máquina local en un comando put leer de la entrada estándar,
  3. o instalar las herramientas de Hadoop en el sistema host y configurarlo para que se comunique directamente con la instancia de invitados

Vamos a revisar cada uno de estos a su vez.

Para cargar datos en HDFS usando la línea de comandos dentro de la máquina virtual, primero puede enviar los datos al disco local de la máquina virtual, y luego insertarlo en HDFS. Puede enviar archivos a la máquina virtual utilizando un cliente de SCP, tales como el componente pscp de masilla o WinSCP .

scp le permitirá copiar archivos de un equipo a otro a través de la red. El comando scp toma dos argumentos, ambos de la [nombre de host [usuario @]] forma: nombre de archivo. El comando scp en sí es de la forma de la fuente dest scp, donde se formatean fuente y dest como se describe anteriormente. Por defecto, se asume que las rutas están en el host local, y se debe acceder mediante el nombre de usuario actual. Puede sustituir el nombre de usuario y el nombre de host para realizar copias remotas.

Así que supongamos que usted tiene un archivo llamado foo.txt, y que le gustaría copiar esto en la máquina virtual que tiene la dirección IP 192.168.190.128, usted puede realizar esta operación con el comando:

  $ Scp foo.txt [email protected]: foo.txt

Si está utilizando el programa pscp, pscp sustituto en lugar de scp arriba. Una copia de la scp “regular” se puede ejecutar bajo cygwin descargando el paquete OpenSSH. pscp es una utilidad por los creadores de masilla y no requiere cygwin.

Tenga en cuenta que ya que no especifica un directorio de destino, irá en / home / hadoop-usuario de forma predeterminada. Para cambiar el directorio de destino, especifique después el nombre de host (por ejemplo, [email protected]:. /some/dest/path/foo.txt) También puede omitir el nombre del archivo de destino, si usted quiere que sea idéntica a el nombre del archivo fuente. Sin embargo, si se omite tanto el directorio de destino y nombre de archivo, no debe olvidar los dos puntos (“:”) que sigue al nombre de host de destino. De lo contrario, hará una copia local del archivo, con el nombre de 192.168.190.128. Un comando correcto equivalente para copiar foo.txt a / home / hadoop-usuario en la máquina remota es:

  $ Scp foo.txt [email protected]:

Los usuarios de Windows pueden estar más inclinados a utilizar una herramienta de interfaz gráfica de usuario para ejecutar comandos scp. La libre WinSCP programa proporciona una interfaz GUI-FTP como sobre scp.

Después de copiar los archivos en el disco local de la máquina virtual, puede iniciar sesión en la máquina virtual como hadoop usuario e insertar los archivos en HDFS usando los comandos estándar de Hadoop. Por ejemplo,

[email protected]:hadoop$ bin/hadoop dfs -put ~/foo.txt \
  /user/hadoop-user/input/foo.txt

Una segunda opción disponible para cargar archivos individuales para HDFS de la máquina host es hacerse eco de los contenidos de archivo en un comando put corriendo a través de ssh. por ejemplo, suponiendo que tiene el programa de gato (que viene con Linux o cygwin) para repetir el contenido de un archivo a la salida del terminal, usted puede conectar su salida a la entrada de un comando put corriendo a través de ssh, así:

[email protected]$ cat somefile | ssh [email protected]vm-ip-addr \
  "hadoop/bin/hadoop fs -put - destinationfile

El - como un argumento para el comando put indica al sistema que use stdin como su archivo de entrada. Esto copiará somefile en la máquina host para destinationfile en HDFS en la máquina virtual.

Por último, si usted está corriendo Linux o cygwin, puede copiar el directorio / Hadoop-0.18.0 en el CD a la instancia local. A continuación, puede configurar hadoop-site.xml utilizar la máquina virtual como el sistema de archivos por defecto distribuido (estableciendo el parámetro fs.default.name). Si a continuación, ejecuta fs bin / Hadoop -poner ... Los comandos en este equipo (o cualquier otro comando de Hadoop, para el caso), van a interactuar con HDFS como servido por la máquina virtual. Ver el Hadoop está comenzando para obtener instrucciones sobre la configuración de una instalación de Hadoop, o Módulo 7 para un tratamiento más profundo.

Usando el Plugin MapReduce para Eclipse

Una forma más fácil de manipular archivos en HDFS puede ser a través del plugin de Eclipse. En el visor de localización DFS, haga clic derecho en cualquier carpeta para ver una lista de acciones disponibles. Puede crear nuevos subdirectorios, cargar archivos individuales o directorios enteros, o descargar archivos y directorios en el disco local.

Si no existe / user / hadoop-usuario, cree que la primera. Haga clic derecho en el directorio de nivel superior y seleccione “Create New Directory”. Escriba “usuario” y haga clic en Aceptar. A continuación, tendrá que actualizar la vista directorio actual haciendo clic derecho y seleccionar “Actualizar” en el menú emergente. Repita este proceso para crear el directorio “hadoop-usuario” en “usuario.”

Ahora, preparar algunos archivos a subir. En algún lugar de su disco duro, cree un directorio llamado “entrada” y encontrar algunos archivos de texto para copiar allí. En el explorador de DFS, haga clic en el directorio “hadoop-usuario” y haga clic en “Subir Directorio de DFS.” Seleccione la carpeta de entrada de nuevo y haga clic en Aceptar. Eclipse copiará los archivos directamente en HDFS, sin pasar por la unidad local de la máquina virtual. Puede que tenga que actualizar la vista de directorio para ver los cambios. Ahora debería tener una jerarquía de directorios que contiene el directorio / user / hadoop usuario / entrada, que tiene al menos un archivo de texto en el mismo.

Ejecución de un programa de ejemplo

Si bien aún no hemos presentado formalmente el estilo de programación para Hadoop, todavía podemos probar si un programa MapReduce se ejecutará en nuestra máquina virtual Hadoop. Esta sección le guía por los pasos necesarios para verificar esto.

El programa que vamos a ejecutar es una utilidad de recuento de palabras. El programa leerá los archivos que has subido a HDFS en la sección anterior, y determinar cuántas veces aparece cada palabra en los archivos.

Si aún no lo ha hecho, inicie la máquina virtual y Eclipse, y cambiar Eclipse para utilizar la perspectiva MapReduce. Las instrucciones están en la sección anterior.

Crear el proyecto

En el menú, haga clic en Archivo * New * Proyecto. Seleccione “Mapa / Reducir Proyecto” de la lista y haga clic en Siguiente.

Ahora tendrá que seleccionar un nombre de proyecto. Cualquier nombre lo hará, por ejemplo, “WordCount”. Usted también tendrá que especificar la ruta de instalación de Hadoop Biblioteca. Esta es la ruta en la que hizo una copia de la carpeta /hadoop-0.18.0 en el CD. Puesto que todavía no hemos configurado esta parte de Eclipse, hágalo ahora haciendo clic en “Configurar Hadoop directorio de instalación …” y elegir la ruta en la que ha copiado a Hadoop. Debe haber un archivo llamado Hadoop-0.18.0-core.jar en este directorio. Creación de un proyecto en lugar de un proyecto genérico Java MapReduce agrega automáticamente los archivos jar de requisitos previos a la ruta de compilación. Si crea un proyecto normal de Java, debe agregar el tarro de Hadoop (y sus dependencias) para la ruta de compilación manualmente.

Cuando haya completado estos pasos, haga clic en Finalizar.

Creación de los archivos de origen

Nuestro programa tiene tres clases para correr: un cartógrafo, un reductor y un conductor. El conductor le dice a Hadoop cómo ejecutar el proceso de MapReduce. El Mapper y Reductor operan en sus datos.

Haga clic derecho en la carpeta “src” en su proyecto y seleccione Nuevo … * Otros. En el “Mapa / Reducir” carpeta en la ventana que aparece, podemos crear Mapper, reductor, y las clases de controladores basado en pre-escrito talón código. Crear clases nombradas WordCountMapper, WordCountReducer y WordCount que utilizan el Mapper, Reductor, y talones de controladores, respectivamente.

El código se muestra para cada una de estas clases aquí. Puede copiar el código en sus archivos.

WordCountMapper.java:

import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.io.WritableComparable;
import org.apache.hadoop.mapred.MapReduceBase;
import org.apache.hadoop.mapred.Mapper;
import org.apache.hadoop.mapred.OutputCollector;
import org.apache.hadoop.mapred.Reporter;

public class WordCountMapper extends MapReduceBase
    implements Mapper<LongWritable, Text, Text, IntWritable> {

  private final IntWritable one = new IntWritable(1);
  private Text word = new Text();

  public void map(WritableComparable key, Writable value,
      OutputCollector output, Reporter reporter) throws IOException {

    String line = value.toString();
    StringTokenizer itr = new StringTokenizer(line.toLowerCase());
    while(itr.hasMoreTokens()) {
      word.set(itr.nextToken());
      output.collect(word, one);
    }
  }
}

WordCountReducer.java:

import java.io.IOException;
import java.util.Iterator;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.WritableComparable;
import org.apache.hadoop.mapred.MapReduceBase;
import org.apache.hadoop.mapred.OutputCollector;
import org.apache.hadoop.mapred.Reducer;
import org.apache.hadoop.mapred.Reporter;

public class WordCountReducer extends MapReduceBase
    implements Reducer<Text, IntWritable, Text, IntWritable> {

  public void reduce(Text key, Iterator values,
      OutputCollector output, Reporter reporter) throws IOException {

    int sum = 0;
    while (values.hasNext()) {
      IntWritable value = (IntWritable) values.next();
      sum += value.get(); // process value
    }

    output.collect(key, new IntWritable(sum));
  }
}

——

WordCount.java:

import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.FileInputFormat;
import org.apache.hadoop.mapred.FileOutputFormat;
import org.apache.hadoop.mapred.JobClient;
import org.apache.hadoop.mapred.JobConf;

public class WordCount {

  public static void main(String[] args) {
    JobClient client = new JobClient();
    JobConf conf = new JobConf(WordCount.class);

    // specify output types
    conf.setOutputKeyClass(Text.class);
    conf.setOutputValueClass(IntWritable.class);

    // specify input and output dirs
    FileInputPath.addInputPath(conf, new Path("input"));
    FileOutputPath.addOutputPath(conf, new Path("output"));

    // specify a mapper
    conf.setMapperClass(WordCountMapper.class);

    // specify a reducer
    conf.setReducerClass(WordCountReducer.class);
    conf.setCombinerClass(WordCountReducer.class);

    client.setConf(conf);
    try {
      JobClient.runJob(conf);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

Por ahora, no se preocupe acerca de cómo funcionan estas funciones; vamos a introducir la forma de escribir programas de MapReduce en el Módulo 4 . En este momento sólo queremos demostrar que podemos ejecutar trabajos en la máquina virtual.

Inicio del Trabajo

Después de introducir el código, es el momento de ejecutarlo. Usted ya ha creado un directorio llamado de entrada por debajo de / user / hadoop-usuario en HDFS. Esto servirá como los archivos de entrada a este proceso. En el Explorador de proyectos, haga clic en la clase del controlador, WordCount.java. En el menú emergente, seleccione Ejecutar como * Run On Hadoop. Aparecerá una ventana que le solicitará que seleccione una ubicación de Hadoop para ejecutarse en. Seleccione el servidor de VMware que ha configurado anteriormente, y haga clic en Finalizar.

Si todo va bien, la salida de los avances de Hadoop debe aparecer en la consola de Eclipse; debería ser algo como:

08/06/25 12:14:22 INFO mapred.FileInputFormat: Total input paths to process : 3
08/06/25 12:14:23 INFO mapred.JobClient: Running job: job_200806250515_0002
08/06/25 12:14:24 INFO mapred.JobClient:  map 0% reduce 0%
08/06/25 12:14:31 INFO mapred.JobClient:  map 50% reduce 0%
08/06/25 12:14:33 INFO mapred.JobClient:  map 100% reduce 0%
08/06/25 12:14:42 INFO mapred.JobClient:  map 100% reduce 100%
08/06/25 12:14:43 INFO mapred.JobClient: Job complete: job_200806250515_0002
08/06/25 12:14:43 INFO mapred.JobClient: Counters: 12
08/06/25 12:14:43 INFO mapred.JobClient:   Job Counters
08/06/25 12:14:43 INFO mapred.JobClient:     Launched map tasks=4
08/06/25 12:14:43 INFO mapred.JobClient:     Launched reduce tasks=1
08/06/25 12:14:43 INFO mapred.JobClient:     Data-local map tasks=4
08/06/25 12:14:43 INFO mapred.JobClient:   Map-Reduce Framework
08/06/25 12:14:43 INFO mapred.JobClient:     Map input records=211
08/06/25 12:14:43 INFO mapred.JobClient:     Map output records=1609
08/06/25 12:14:43 INFO mapred.JobClient:     Map input bytes=11627
08/06/25 12:14:43 INFO mapred.JobClient:     Map output bytes=16918
08/06/25 12:14:43 INFO mapred.JobClient:     Combine input records=1609
08/06/25 12:14:43 INFO mapred.JobClient:     Combine output records=682
08/06/25 12:14:43 INFO mapred.JobClient:     Reduce input groups=568
08/06/25 12:14:43 INFO mapred.JobClient:     Reduce input records=682
08/06/25 12:14:43 INFO mapred.JobClient:     Reduce output records=568

En el Explorador de DFS, haga clic en / user / hadoop-usuario y seleccionar “Actualizar”. Ahora debería ver un directorio de “salida” que contiene un archivo denominado parte-00000. Esta es la salida del trabajo. Haga doble clic en este archivo le permitirá ver en Eclipse; se puede ver cada palabra y su frecuencia en los documentos. (Es posible que reciba una advertencia de que este archivo es mayor que 1 MB, en primer lugar. Haga clic en Aceptar.)

Si desea ejecutar la tarea de nuevo, tendrá que eliminar el directorio de salida en primer lugar. Haga clic derecho en el directorio de salida en el Explorador de DFS y haga clic en “Eliminar”.

¡Enhorabuena! Ahora debe tener un entorno de desarrollo que funciona Hadoop. En el siguiente módulo, aprenderemos cómo usarlo para realizar tareas de programación de gran alcance.

Referencias y Recursos

Estos recursos son enlaces a sitios generales de Hadoop. Ellos deben ser su primera parada para la resolución de problemas o para más información.

  • Sitio Hadoop – Ubicación central para descargas, documentación e información
  • Hadoop wiki – Documentación del usuario impulsados ​​para Hadoop
  • JavaDoc – documentación de la API actual Hadoop
  • Lista de correo info – Hadoop comunidad discusión y consejos

Apéndice: Lista completa de Herramientas

Se incluyen en esta sección es una lista completa de los programas necesarios para ejecutar Hadoop, y programas opcionales que pueden ser útiles para instalarlo o utilizarlo. Algunos de éstos asumen un entorno Windows para el desarrollo (aunque no necesariamente un clúster basado en Windows).

Necesario para Hadoop:

Tutoriales:

Utilidades :

Fuente  aqui

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s