Hadoop - Configuración del entorno

Hadoop es compatible con la plataforma GNU / Linux y sus variantes. Por lo tanto, tenemos que instalar un sistema operativo Linux para configurar el entorno Hadoop. En caso de que tenga un sistema operativo que no sea Linux, puede instalar un software Virtualbox en él y tener Linux dentro de Virtualbox.

Configuración previa a la instalación

Antes de instalar Hadoop en el entorno Linux, necesitamos configurar Linux usando ssh(Cubierta segura). Siga los pasos que se indican a continuación para configurar el entorno Linux.

Crear un usuario

Al principio, se recomienda crear un usuario separado para Hadoop para aislar el sistema de archivos Hadoop del sistema de archivos Unix. Siga los pasos que se indican a continuación para crear un usuario:

  • Abra la raíz con el comando "su".

  • Cree un usuario desde la cuenta raíz usando el comando "useradd username".

  • Ahora puede abrir una cuenta de usuario existente usando el comando "su nombre de usuario".

Abra la terminal de Linux y escriba los siguientes comandos para crear un usuario.

$ su 
   password: 
# useradd hadoop 
# passwd hadoop 
   New passwd: 
   Retype new passwd

Configuración de SSH y generación de claves

La configuración de SSH es necesaria para realizar diferentes operaciones en un clúster, como iniciar, detener, operaciones de shell de demonio distribuidas. Para autenticar a diferentes usuarios de Hadoop, es necesario proporcionar un par de claves pública / privada para un usuario de Hadoop y compartirlo con diferentes usuarios.

Los siguientes comandos se utilizan para generar un par clave-valor mediante SSH. Copie el formulario de claves públicas id_rsa.pub en authorized_keys y proporcione al propietario permisos de lectura y escritura en el archivo autorizado_keys respectivamente.

$ ssh-keygen -t rsa 
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
$ chmod 0600 ~/.ssh/authorized_keys

Instalación de Java

Java es el principal requisito previo para Hadoop. En primer lugar, debe verificar la existencia de java en su sistema usando el comando "java -version". La sintaxis del comando de la versión java se proporciona a continuación.

$ java -version

Si todo está en orden, le dará el siguiente resultado.

java version "1.7.0_71" 
Java(TM) SE Runtime Environment (build 1.7.0_71-b13) 
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

Si java no está instalado en su sistema, siga los pasos que se indican a continuación para instalar java.

Paso 1

Descargue java (JDK <última versión> - X64.tar.gz) visitando el siguiente enlace www.oracle.com

Luego jdk-7u71-linux-x64.tar.gz se descargará en su sistema.

Paso 2

Generalmente, encontrará el archivo java descargado en la carpeta Descargas. Verifíquelo y extraiga eljdk-7u71-linux-x64.gz archivo usando los siguientes comandos.

$ cd Downloads/ 
$ ls 
jdk-7u71-linux-x64.gz 

$ tar zxf jdk-7u71-linux-x64.gz 
$ ls 
jdk1.7.0_71   jdk-7u71-linux-x64.gz

Paso 3

Para que Java esté disponible para todos los usuarios, debe moverlo a la ubicación “/ usr / local /”. Abra root y escriba los siguientes comandos.

$ su 
password: 
# mv jdk1.7.0_71 /usr/local/ 
# exit

Etapa 4

Para configurar PATH y JAVA_HOME variables, agregue los siguientes comandos a ~/.bashrc archivo.

export JAVA_HOME=/usr/local/jdk1.7.0_71 
export PATH=$PATH:$JAVA_HOME/bin

Ahora aplique todos los cambios en el sistema en ejecución actual.

$ source ~/.bashrc

Paso 5

Utilice los siguientes comandos para configurar alternativas de Java:

# alternatives --install /usr/bin/java java usr/local/java/bin/java 2
# alternatives --install /usr/bin/javac javac usr/local/java/bin/javac 2
# alternatives --install /usr/bin/jar jar usr/local/java/bin/jar 2

# alternatives --set java usr/local/java/bin/java
# alternatives --set javac usr/local/java/bin/javac
# alternatives --set jar usr/local/java/bin/jar

Ahora verifique el comando java -version desde la terminal como se explicó anteriormente.

Descargando Hadoop

Descargue y extraiga Hadoop 2.4.1 de la base del software Apache usando los siguientes comandos.

$ su 
password: 
# cd /usr/local 
# wget http://apache.claz.org/hadoop/common/hadoop-2.4.1/ 
hadoop-2.4.1.tar.gz 
# tar xzf hadoop-2.4.1.tar.gz 
# mv hadoop-2.4.1/* to hadoop/ 
# exit

Modos de operación de Hadoop

Una vez que haya descargado Hadoop, puede operar su clúster de Hadoop en uno de los tres modos admitidos:

  • Local/Standalone Mode - Después de descargar Hadoop en su sistema, de forma predeterminada, se configura en modo independiente y se puede ejecutar como un único proceso java.

  • Pseudo Distributed Mode- Es una simulación distribuida en una sola máquina. Cada demonio de Hadoop, como hdfs, yarn, MapReduce, etc., se ejecutará como un proceso java independiente. Este modo es útil para el desarrollo.

  • Fully Distributed Mode- Este modo está completamente distribuido con un mínimo de dos o más máquinas como grupo. Nos encontraremos con este modo en detalle en los próximos capítulos.

Instalación de Hadoop en modo independiente

Aquí discutiremos la instalación de Hadoop 2.4.1 en modo autónomo.

No hay demonios en ejecución y todo se ejecuta en una única JVM. El modo autónomo es adecuado para ejecutar programas MapReduce durante el desarrollo, ya que es fácil probarlos y depurarlos.

Configuración de Hadoop

Puede configurar las variables de entorno de Hadoop agregando los siguientes comandos a ~/.bashrc archivo.

export HADOOP_HOME=/usr/local/hadoop

Antes de continuar, debe asegurarse de que Hadoop esté funcionando bien. Simplemente emita el siguiente comando:

$ hadoop version

Si todo está bien con su configuración, entonces debería ver el siguiente resultado:

Hadoop 2.4.1 
Subversion https://svn.apache.org/repos/asf/hadoop/common -r 1529768 
Compiled by hortonmu on 2013-10-07T06:28Z 
Compiled with protoc 2.5.0
From source with checksum 79e53ce7994d1628b240f09af91e1af4

Significa que la configuración del modo independiente de Hadoop está funcionando bien. De forma predeterminada, Hadoop está configurado para ejecutarse en modo no distribuido en una sola máquina.

Ejemplo

Veamos un ejemplo simple de Hadoop. La instalación de Hadoop proporciona el siguiente archivo jar de MapReduce de ejemplo, que proporciona una funcionalidad básica de MapReduce y se puede utilizar para calcular, como el valor Pi, el recuento de palabras en una lista de archivos determinada, etc.

$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar

Tengamos un directorio de entrada donde empujaremos algunos archivos y nuestro requisito es contar el número total de palabras en esos archivos. Para calcular el número total de palabras, no necesitamos escribir nuestro MapReduce, siempre que el archivo .jar contenga la implementación para el recuento de palabras. Puede probar otros ejemplos utilizando el mismo archivo .jar; simplemente emita los siguientes comandos para verificar los programas funcionales MapReduce compatibles con el archivo hadoop-mapreduce-examples-2.2.0.jar.

$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.2.0.jar

Paso 1

Cree archivos de contenido temporal en el directorio de entrada. Puede crear este directorio de entrada en cualquier lugar donde desee trabajar.

$ mkdir input 
$ cp $HADOOP_HOME/*.txt input 
$ ls -l input

Le dará los siguientes archivos en su directorio de entrada:

total 24 
-rw-r--r-- 1 root root 15164 Feb 21 10:14 LICENSE.txt 
-rw-r--r-- 1 root root   101 Feb 21 10:14 NOTICE.txt
-rw-r--r-- 1 root root  1366 Feb 21 10:14 README.txt

Estos archivos se han copiado del directorio de inicio de instalación de Hadoop. Para su experimento, puede tener conjuntos de archivos grandes y diferentes.

Paso 2

Comencemos el proceso de Hadoop para contar el número total de palabras en todos los archivos disponibles en el directorio de entrada, de la siguiente manera:

$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.2.0.jar  wordcount input output

Paso 3

El paso 2 realizará el procesamiento requerido y guardará la salida en el archivo output / part-r00000, que puede verificar usando -

$cat output/*

Enumerará todas las palabras junto con sus recuentos totales disponibles en todos los archivos disponibles en el directorio de entrada.

"AS      4 
"Contribution" 1 
"Contributor" 1 
"Derivative 1
"Legal 1
"License"      1
"License");     1 
"Licensor"      1
"NOTICE”        1 
"Not      1 
"Object"        1 
"Source”        1 
"Work”    1 
"You"     1 
"Your")   1 
"[]"      1 
"control"       1 
"printed        1 
"submitted"     1 
(50%)     1 
(BIS),    1 
(C)       1 
(Don't)   1 
(ECCN)    1 
(INCLUDING      2 
(INCLUDING,     2 
.............

Instalación de Hadoop en modo pseudo distribuido

Siga los pasos que se indican a continuación para instalar Hadoop 2.4.1 en modo pseudodistribuido.

Paso 1: configuración de Hadoop

Puede configurar las variables de entorno de Hadoop agregando los siguientes comandos a ~/.bashrc archivo.

export HADOOP_HOME=/usr/local/hadoop 
export HADOOP_MAPRED_HOME=$HADOOP_HOME 
export HADOOP_COMMON_HOME=$HADOOP_HOME 

export HADOOP_HDFS_HOME=$HADOOP_HOME 
export YARN_HOME=$HADOOP_HOME 
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native 
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin 
export HADOOP_INSTALL=$HADOOP_HOME

Ahora aplique todos los cambios en el sistema en ejecución actual.

$ source ~/.bashrc

Paso 2: configuración de Hadoop

Puede encontrar todos los archivos de configuración de Hadoop en la ubicación "$ HADOOP_HOME / etc / hadoop". Es necesario realizar cambios en esos archivos de configuración de acuerdo con su infraestructura de Hadoop.

$ cd $HADOOP_HOME/etc/hadoop

Para desarrollar programas Hadoop en Java, debe restablecer las variables de entorno de Java en hadoop-env.sh archivo reemplazando JAVA_HOME value con la ubicación de java en su sistema.

export JAVA_HOME=/usr/local/jdk1.7.0_71

La siguiente es la lista de archivos que debe editar para configurar Hadoop.

core-site.xml

los core-site.xml El archivo contiene información como el número de puerto utilizado para la instancia de Hadoop, la memoria asignada para el sistema de archivos, el límite de memoria para almacenar los datos y el tamaño de los búfer de lectura / escritura.

Abra core-site.xml y agregue las siguientes propiedades entre las etiquetas <configuration>, </configuration>.

<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:9000</value> 
   </property>
</configuration>

hdfs-site.xml

los hdfs-site.xmlEl archivo contiene información como el valor de los datos de replicación, la ruta del nodo de nombre y las rutas del nodo de datos de sus sistemas de archivos locales. Significa el lugar donde desea almacenar la infraestructura de Hadoop.

Asumamos los siguientes datos.

dfs.replication (data replication value) = 1 

(In the below given path /hadoop/ is the user name. 
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.) 
namenode path = //home/hadoop/hadoopinfra/hdfs/namenode 

(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.) 
datanode path = //home/hadoop/hadoopinfra/hdfs/datanode

Abra este archivo y agregue las siguientes propiedades entre las etiquetas <configuration> </configuration> en este archivo.

<configuration>
   <property>
      <name>dfs.replication</name>
      <value>1</value>
   </property>
    
   <property>
      <name>dfs.name.dir</name>
      <value>file:///home/hadoop/hadoopinfra/hdfs/namenode </value>
   </property>
    
   <property>
      <name>dfs.data.dir</name> 
      <value>file:///home/hadoop/hadoopinfra/hdfs/datanode </value> 
   </property>
</configuration>

Note - En el archivo anterior, todos los valores de propiedad están definidos por el usuario y puede realizar cambios de acuerdo con su infraestructura de Hadoop.

yarn-site.xml

Este archivo se utiliza para configurar hilo en Hadoop. Abra el archivo yarn-site.xml y agregue las siguientes propiedades entre las etiquetas <configuration>, </configuration> en este archivo.

<configuration>
   <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value> 
   </property>
</configuration>

mapred-site.xml

Este archivo se utiliza para especificar qué marco MapReduce estamos usando. De forma predeterminada, Hadoop contiene una plantilla de yarn-site.xml. En primer lugar, es necesario copiar el archivo demapred-site.xml.template a mapred-site.xml archivo usando el siguiente comando.

$ cp mapred-site.xml.template mapred-site.xml

Abierto mapred-site.xml y agregue las siguientes propiedades entre las etiquetas <configuration>, </configuration> en este archivo.

<configuration>
   <property> 
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>
</configuration>

Verificación de la instalación de Hadoop

Los siguientes pasos se utilizan para verificar la instalación de Hadoop.

Paso 1: configuración del nodo de nombre

Configure el nodo de nombre utilizando el comando "hdfs namenode -format" de la siguiente manera.

$ cd ~ 
$ hdfs namenode -format

El resultado esperado es el siguiente.

10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************ 
STARTUP_MSG: Starting NameNode 
STARTUP_MSG:   host = localhost/192.168.1.11 
STARTUP_MSG:   args = [-format] 
STARTUP_MSG:   version = 2.4.1 
...
...
10/24/14 21:30:56 INFO common.Storage: Storage directory 
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted. 
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to 
retain 1 images with txid >= 0 
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0 
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************ 
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11 
************************************************************/

Paso 2: verificar Hadoop dfs

El siguiente comando se usa para iniciar dfs. La ejecución de este comando iniciará su sistema de archivos Hadoop.

$ start-dfs.sh

La salida esperada es la siguiente:

10/24/14 21:37:56 
Starting namenodes on [localhost] 
localhost: starting namenode, logging to /home/hadoop/hadoop
2.4.1/logs/hadoop-hadoop-namenode-localhost.out 
localhost: starting datanode, logging to /home/hadoop/hadoop
2.4.1/logs/hadoop-hadoop-datanode-localhost.out 
Starting secondary namenodes [0.0.0.0]

Paso 3: verificación del guión de hilo

El siguiente comando se utiliza para iniciar el guión de hilo. La ejecución de este comando iniciará sus demonios de hilo.

$ start-yarn.sh

La salida esperada de la siguiente manera:

starting yarn daemons 
starting resourcemanager, logging to /home/hadoop/hadoop
2.4.1/logs/yarn-hadoop-resourcemanager-localhost.out 
localhost: starting nodemanager, logging to /home/hadoop/hadoop
2.4.1/logs/yarn-hadoop-nodemanager-localhost.out

Paso 4: acceder a Hadoop en el navegador

El número de puerto predeterminado para acceder a Hadoop es 50070. Utilice la siguiente URL para obtener los servicios de Hadoop en el navegador.

http://localhost:50070/

Paso 5: verificar todas las aplicaciones para el clúster

El número de puerto predeterminado para acceder a todas las aplicaciones del clúster es 8088. Utilice la siguiente URL para visitar este servicio.

http://localhost:8088/