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/