03. Configuración Hadoop

Configuración básica de Hadoop
La distribución Cloudera
Diego J. Bodas Sagi – Julio de 2014
Índice
Cloudera y la máquina virtual
Configuración de la máquina virtual
Instalación básica
Configuración del cluster
Herramientas de administración
Introducción al paradigma Big Data
2
Configuración básica de Hadoop
Aunque en principio trabajaremos con la máquina virtual
de cloudera (Cloudera QuickStart VM recomendado para
principiantes), daremos algunas breves pinceladas de la
configuración básica de Hadoop
A la hora de descargar la MV de Cloudera, es importante
seleccionar la versión correcta para el software de
virtualización que vayamos a emplear
• Vmware en mi caso (y atención a la versión)
Permitir virtualización en la BIOS del equipo
Introducción al paradigma Big Data
3
¿Por qué emplear Cloudera?
La parte administrativa de Hadoop NO es trivial
Ensamblar correctamente todos los componentes puede
convertirse en un problema
Pero nuestro único problema debería ser analizar datos
para obtener una ventaja estratégica
Afortunadamente hay software que nos ayuda a
gestionar Hadoop y las tecnologías relacionadas
Hay otras opciones aparte de Cloudera Manager…
Introducción al paradigma Big Data
4
Opciones
Apache Hadoop
• Versión oficial
• Difícil proceso de integración
Cloudera
• Buena integración gracias al Cloudera Manager
• Proveedor muy reconocido
Hortonworks
• Yahoo + Microsoft
• Ahora mismo el gestor no es tan potente como el de Cloudera
MAP
R
• Implementación propietaria en C++
• Buen rendimiento
Introducción al paradigma Big Data
5
Infraestructura
Máquina virtual de Cloudera
• Centos S.O.
• Usuarios:
– cloudera / cloudera
– root / cloudera
• Usuarios hadoop (cloudera):
– admin / admin
• Inicializar sistema:
– su –c ‘yum update’
– Ayuda: su –help
– - c (ejecutar comando simple en la consola actual)
– Sudo nautilus: lanzar explorador como root
Introducción al paradigma Big Data
6
Navegadores web
Preferentemente Firefox
A veces problemas con Chrome
Opción
• Chromium
– cd /etc/yum.repos.d
– wget http://people.centos.org/hughesjr/chromium/6/chromium-el6.repo
– yum install chromium
Introducción al paradigma Big Data
7
Configurar
Zona horaria
Comportamiento del navegador de archivos
Se debe tener en cuenta que es una “versión cloudera”
con algunas configuraciones tapadas que puede hacer
preciso algo de trabajo adicional para configurar algunas
cosas
Tampoco tiene mucho sentido al ser un entorno de
aprendizaje perder tiempo en esto
Introducción al paradigma Big Data
8
Compartir directorio con el host
Mejor a través de samba
• Habilitar una carpeta compartida en windows
• Protegida por contraseña
• En opciones avanzadas (propiedades  compartir),
marcar control total
• Desde linux en la MV acceder a través de:
– smb:\\ipDeMiEquipo
• Copiar / Pegar entre la MV y la máquina residente SÍ
funciona
Introducción al paradigma Big Data
9
Comunicación mediante SSH
La MV tiene su propia IP
• “ifconfig”
Desde la máquina windows local se puede conectar con
la máquina virtual mediante SSH
• Una buena opción es emplear SSH Secure Shell o
similar
Introducción al paradigma Big Data
10
Dos entornos interactuando
Introducción al paradigma Big Data
11
¡Espacio en disco en la MV!
Las MV suelen venir configuradas para 20 GB de espacio en disco,
algo relativamente corto. Para conseguir más espacio podemos:
• Borrar o comprimir los archivos grandes que no necesitemos
– usar el comando "du" en Linux
– El comando "find / -size +10000k" también puede ser útil
• HDFS tiene un comando "du" para eliminar lo que no
necesitemos
• Parar los agentes que estén recopilando información (por
ejemplo, un proceso Flume (lo mencionaremos) que recoge
información de internet)
• VMware permite crear y añadir otro disco
– Se puede montar el nuevo disco
(http://www.techotopia.com/index.php/Adding_a_New_Disk_
Drive_to_a_CentOS_6_System)
– y mover datos del primer disco al nuevo
Introducción al paradigma Big Data
12
Mensaje particular
Error: "NameNode in safe mode“. Ante una circunstancia
especial (como disco lleno) el NameNode para a estado de
sólo lectura
A veces impide realizar cualquier operación
Truco:
• Comprobar que no están agregando nuevos ficheros a los
DataNode, parando los servicios que sean necesarios
• Desactivar el modo seguro
– sudo -u hdfs hadoop dfsadmin -safemode leave
• Borrar los ficheros que no sean necesarios
– Emplear el comando –skipTrash para asegurarse de
que, efectivamente, se eliminan y no se envían a la
papelera
Introducción al paradigma Big Data
13
Conexión a Internet
Cloudera Manager necesita conexión a internet para
enlazar correctamente con los repositorios configurados
Si se quiere trabajar sin conexión a la red habría que
configurar repositorios locales previamente configurados
Introducción al paradigma Big Data
14
Módulos básicos de Hadoop
La instalación de Hadoop contempla los siguientes módulos:
• Hadoop Common: el paquete básico de Hadoop que
permite manejar el resto de módulos
• Hadoop Distributed File System (HDFS™): incluyendo todo
lo necesario para gestionar el sistema de ficheros propio
de Hadoop
• Hadoop YARN: un framework para la planificación de
procesos ( jobs) y la gestión de recursos del cluster
• Hadoop MapReduce: sistema basado en YARN para el
procesamiento paralelo de grandes conjuntos de datos
Introducción al paradigma Big Data
15
Tipos de instalación
Hay tres modos de instalación:
• Local (Standalone) Mode:
– No distribuido
– Un único proceso Java
– Útil en la fase de desarrollo (Debug)
• Pseudo-Distributed Mode
– Similar al anterior, pero cada proceso (daemon) de
Hadoop se ejecuta en un hilo Java independiente
– En principio, la versión de la MV de Cloudera se
configura en este modo
• Fully-Distributed Mode
– Configuración recomendada para entornos en
producción con un cluster a nuestra disposición
Introducción al paradigma Big Data
16
Archivos de configuración
Los archivos (XML) de configuración suelen estar en
/etc/hadoop/conf (o en el directorio conf de donde se haya
instalado hadoop)
Para configurar Hadoop debemos indicar los valores de sus
principales variables según el formato:
<property>
<name>property-name</name>
<value>property-value</value>
</property>
En muchas ocasiones se suele añadir la línea
<final>true</final> dentro la propiedad para evitar que los
valores de las variables sean modificados por aplicaciones del
usuario
Introducción al paradigma Big Data
17
Los 3 archivos básicos
core-site.xml: contiene los valores por defecto para las
propiedades esenciales de Hadoop
mapred-site.xml: contiene toda la información relativa
a la configuración MapReduce
hdfs-site.xml: contiene la información que permite
gestionar correctamente el sistema de ficheros
distribuido
Introducción al paradigma Big Data
18
Localización de los archivos de configuración
¡El gran dilema!
• Si descargamos la versión original de Hadoop de
Apache, estos archivos están dentro del directorio
/etc/hadoop
• Es misión nuestra “colocarlos” correctamente en un
directorio /conf bajo el directorio raíz de Hadoop
Si realizamos una instalación en cluster es preciso copiar
el directorio de instalación en todas las máquinas
La estructura de directorios debe ser consistente en
todos los nodos
Introducción al paradigma Big Data
19
Los archivos de configuración en Cloudera
Manager
Cada vez que se inicia el cluster, Cloudera Manager crea
los archivos de configuración necesarios (y no siempre
en el mismo directorio, puesto que el ID del proceso
forma parte del nombre del directorio)
La configuración se pasa como parámetro a cada
proceso que la precisa
El usuario debe realizar toda la gestión de la
configuración a través de las herramientas de Cloudera
(para eso están)
Introducción al paradigma Big Data
20
Descargando la configuración de Cloudera
A través de Services All Services
http://localhost:7180/cmf/services/status
• Actions
• View client configuration URLs
• Nos podemos descargar la configuración de HDFS
Introducción al paradigma Big Data
21
Configurando las variables con Cloudera
Manager (hdfs1)
Introducción al paradigma Big Data
22
Variables a configurar
fs.default.name (core-site.xml): ubicación del NameNode para el
cluster. Las instancias DataNode se registrarán en este NameNode.
Los programas clientes también se conectarán a él para obtener la
ubicación de los datos que precisan
dfs.name.dir (core-site.xml): directorio del sistema de archivos local
donde se guardan los metadatos del NameNode. Por defecto
(desarrollo), también es el directorio /tmp
dfs.data.dir (hdfs-site.xml): directorio del sistema de ficheros local
donde la instanciación del DataNode almacenará sus datos. En un
entorno en cluster los DataNode estarán distribuidos en diferentes
máquinas, se suele estandarizar esta configuración por cuestiones
de mantenimiento. Por defecto y para objetivos de evaluación, los
datos se dirigen al directorio /tmp
Introducción al paradigma Big Data
23
Variables a configurar
dfs.datanode.data.dir (hdfs-site.xml): lista de directorios
(separados por coma) del sistema de ficheros local donde el
DataNode almacena la información. Los directorios que no
existen se ignoran
mapreduce.jobtracker.address (mapred-site.xml): indica el
equipo y puerto donde se ejecuta el MapReduce job tracker. Si
está configurado a “local”, se ejecuta en un único hilo
Introducción al paradigma Big Data
24
Replicación
dfs.replication (hdfs-site.xml): factor de replicación por
defecto para cada BLOQUE de datos en el sistema. En un
sistema en producción (cluster) se suele configurar a 3. En
pruebas (debug) con una instalación en un único nodo se
puede configurar a 1
Importante controlar cómo va creciendo el espacio en disco
para ampliar (si fuese necesario) antes de que se produzca la
saturación
Afortunamente, Hadoop tiene un buen sistema de balanceo
Introducción al paradigma Big Data
25
Otros archivos importantes
slaves: lista de las máquinas (una por línea)
correspondientes a los esclavos del cluster (por defecto
sólo tiene localhost)
hadoop-default.xml: configuración genérica para los
procesos de Hadoop y MapReduce. NO MODIFICAR
Algunas versiones e instalación poseen el archivo de
configuración hadoop-site.xml donde configuran gran
parte de las variables necesarias
Introducción al paradigma Big Data
26
Evitando problemas de permisos
Para poder interactuar correctamente con HDFS a través
de los comandos correspondientes:
• GUI: localhost:7180hdfs1ConfigurationView
and EditDesactivar “Check HDFS Permissions”
• Reiniciar servicio (reinicar MV en el peor de los casos)
Al tener disponible Cloudera Manager, es lógico que se
desactiven otras opciones por cuestiones de seguridad
Introducción al paradigma Big Data
27
Seguridad básica
Lo que hemos hecho usando el interfaz gráfico es
cambiar el valor de una propiedad de configuración de
hdfs:
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
Introducción al paradigma Big Data
28
Posibles arquitecturas
Acceso mediante SSH
¡Cuidado porque si ésta es
la arquitectura, primero
estamos accediendo a un
nodo NO Hadoop y NO
funcionarían los comandos
de Hadoop
Fuente: Hortonworks
Introducción al paradigma Big Data
29
Instalación habitual (MRv1)
Es frecuente instalar el NameNode y JobTracker en el mismo
nodo
En caso contrario, la ejecución de los archivos binarios se
debe lanzar en el JobTracker
La ubicación del JobTracker se indica en el archivo mapredsite.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration
Introducción al paradigma Big Data
30
Facilitando el acceso al JobTracker
Pero si la labor de programación NO se realiza en el
mismo nodo donde se ubica el JobTracker (algo habitual
en producción), podemos emplear los métodos de la
clase Configuración para indicar dónde lanzar los
procesos y dónde está el NameNode
Introducción al paradigma Big Data
31
¿Cuántos nodos necesito?
La opción más sencilla se calcula teniendo en cuenta la
capacidad total de la que podemos necesitar hacer uso en
HDFS
• Por tanto consideramos el tamaño de los discos
• Pero también debemos tener en cuenta la replicación de
los datos y el espacio extra que HDFS necesita para
mantener archivos temporales
• También hay que tener en cuenta que existe un factor de
compresión a la hora de almacenar (variable)
• Por último, hay que tener en cuenta que cuanto más
grande el cluster, más espacio necesitaremos para archivos
temporales, información de gestión…
Introducción al paradigma Big Data
32
Capacidad HDFS
• Teniendo en cuenta un factor 3 de replicación
𝐻𝐷𝐹𝑆𝑠𝑖𝑧𝑒
𝑇𝑜𝑡𝑎𝑙𝑇𝐵𝐻𝐷 /3 𝑠𝑖 𝑐𝑙𝑢𝑠𝑡𝑒𝑟 < 10 𝑛𝑜𝑑𝑜𝑠
=
𝑇𝑜𝑡𝑎𝑙𝑇𝐵𝐻𝐷 /4
𝑒. 𝑜. 𝑐
El todo es más que la suma de las partes (cuanto
más grande mayor es el “esfuerzo” de gestión
• Donde TotalTBHD = Capacidad total en TB de los discos
duros
Introducción al paradigma Big Data
33
Ejemplo
¿Qué información procesamos?
• Nuestra compañía genera 20 TB de datos mensuales
• Operando dichos datos obtenemos 1 TB de información al año
• Nuestro histórico es de 4 años
• Anualmente generamos: (20 x 12) + 1 = 241 TB
• Teniendo en cuenta el histórico de 4 años: 4 x 241 = 964 TB
Supongamos que cada servidor esclavo nuestro tiene 10 discos de 3
TB cada uno
• Por tanto, un servidor esclavo tiene capacidad para almacenar
(10 x 3) = 30 TB
Con estos datos, vamos a fórmula anterior
Introducción al paradigma Big Data
34
Solución
TotalTBHD = (#esclavos x 30) TB
𝐻𝐷𝐹𝑆𝑠𝑖𝑧𝑒 = 964 TB
Mirando las cifras está claro que necesitamos
más de 10 nodos, por tanto el factor
multiplicativo es 4
964 =
(#𝑒𝑠𝑐𝑙𝑎𝑣𝑜𝑠 𝑥 30)
4
Despejando
• #esclavos = (964 x 4) / 30 = 128,5 ≈ 129
Introducción al paradigma Big Data
35
Cloudera Manager
Interfaces Web
• NameNode: http://localhost:50070/
• JobTracker: http://localhost:50030/
• Cloudera Manager: http://localhost:7180/
¿Por qué Cloudera?
• Porque facilita el proceso de
integración
• Porque proporciona un entorno de
gestión sencillo y fiable
Introducción al paradigma Big Data
36
Iniciando servicios
Introducción al paradigma Big Data
37
Iniciando monitorización
Introducción al paradigma Big Data
38
Estado NameNode
Introducción al paradigma Big Data
39
Estado JobTracker
Introducción al paradigma Big Data
40
La papelera
Cloudera mantiene una papelera de reciclaje para evitar
eliminaciones accidentales
Muy recomendado mantenerlo en producción
Pero controlando su tamaño y vaciándola
periódicamente
De cara al curso de formación de puede desactivar para
tener más espacio en disco
• En el servicio HDFSConfigurationView and Edit 
Gateway Default Group  Desactivar “use Trash”
Introducción al paradigma Big Data
41
Configuración de YARN
Introducción al paradigma Big Data
42
YARN - configuración
No hay jobtracker o tasktracker
Ahora tenemos un gestor de recursos “resource manager” que
de ejecuta en la misma máquina que el namenode HDFS (si el
cluster es pequeño)
También se puede ejecutar el gestor de recursos en una
máquina dedicada aparte
Cada esclavo del cluster ejecuta un gestor del nodo (“node
manager”)
Introducción al paradigma Big Data
43
YARN: características
Iniciar: start-all.sh script (ubicando en el directorio bin de
la instalación por defecto de Hadoop)
• En Cloudera: iniciar servicio a través de Cloudera
Manager
El script inicia el resource manager y un node manager
para cada máquina incluída en el fichero de
configuración slaves
YARN posee un demonio que gestiona los detalles del
histório de procesos ejecutados anteriormente
También proporciona una interfaz gráfica de acceso
Introducción al paradigma Big Data
44
YARN: acceso web
Introducción al paradigma Big Data
45
YARN: gestión de memoria
YARN permite que cada amplicación emplee un tamaño de memoria
concreto pero limitado
El número de tareas ejecutándose en un nodo depende de la suma
de los requisitos de memoria
A diferencia del esquema anterior, el número de reducers puede ir
variando
• Al principio los reducers deben trabajar de forma conjunta con
las tareas de mapeo
• Finalizadas las tareas de mapeo, sólo son necesarios reducers. El
esquema YARN permite que en esta parte aparezcan nuevos
reducers aprovechando mejor los recursos del sistema
De cara a la gestión de los recursos de memoria, YARN no distingue
entre tareas de mapeo y reducers
Introducción al paradigma Big Data
46
YARN y configuración (memoria)
Números habituales:
• Cada Hadoop daemon: 1000 MB,
– Datanode + node manager = 2000 MB.
• yarn.nodemanager.resource.memory-mb = 8192 MB (otros
procesos por nodo)
• mapred.child.java.opts: tamaño de la pila de la JVM para
procesos map o reduce (defecto -Xmx800m = 800 MBs)
• mapreduce.map.memory.mb (o
mapreduce.reduce.memory.mb): memoria reservada para
“los contenedores” emplados en las tareas map o reduce
en cada job). Por defecto 1024 MBs
Introducción al paradigma Big Data
47
Configuración YARN en Cloudera
Introducción al paradigma Big Data
48
Ejecución
Depende de como se haya montado el cluster y de la versión
de Cloudera que tengamos, la versión por defecto será
mapreduce1 o yarn1
No obstante:
Si tenemos los dos servicios activos, dirigir el job al jobtracker
(mapreduce1) o al resource manager (yarn1) que deberán
estar ejecutándose en máquinas distintas
Introducción al paradigma Big Data
49
Resumen
Se ha presentado la máquina virtual que proporciona
Cloudera, ideal para el proceso de aprendizaje
Se han proporcionado nociones sobre la configuración básica
de Hadoop
Se ha explicado el procedimiento para calcular el número de
nodos que necesito
Se ha comentado brevemente la interfaz web de
administración que presenta Cloudera
Introducción al paradigma Big Data
50