Slide 1

Slide 1 text

Jornadas Técnicas Uex-CIEMAT // 10-12 Febrero 2015 Procesando grandes volúmenes de datos con HADOOP Jose Antonio Adame Fernández [email protected] Lectura y escritura de datos con Hadoop (HDFS)

Slide 2

Slide 2 text

INDICE • ¿QUE ES HDFS? • CONCEPTOS BASICOS • REPLICACION Y GESTIÓN DE ERRORES • ARQUITECTURA DE HDFS • PRÁCTICA: COMANDOS BÁSICOS

Slide 3

Slide 3 text

¿Qué es HDFS? • HDFS es el sistema de ficheros distribuido de Hadoop.(Hadoop distributed filesystem) • Diseñado para la administración de un sistema de ficheros en una arquitectura multinodo. • Optimizado para el almacenamiento de ficheros de gran tamaño (cientos de megabytes, gigabytes o terabytes). • HDFS está construido sobre la idea “write- once, read many times”

Slide 4

Slide 4 text

HARDWARE • HDFS no requiere ser montado sobre un hardware caro. Esta diseñado para trabajar con clústeres de bajo coste ya que tiene una estrategia diseñada para soportar fallos en cualquiera de los nodos. “Mas posibilidad de fallos cuanto mas grande es el clúster.”

Slide 5

Slide 5 text

Aplicaciones no recomendadas para HDFS • Aplicaciones que necesiten baja latencia de acceso a datos. • Aplicaciones que necesiten muchos ficheros de pequeño tamaño. • Aplicaciones que tengan múltiples escritores y modificaciones arbitrarias en los ficheros.

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Bloques • Los ficheros en HDFS se dividen en bloques que son almacenados en el sistema de ficheros como unidades independientes. • Es la unidad mínima que se puede leer o escribir. • En HDFS el tamaño de los bloques es muy grande, 64MB por defecto (Configurable).

Slide 8

Slide 8 text

Bloques • ¿Por qué son tan grandes los bloques en HDFS? ▫ La razón es minimizar los costes de las búsquedas. De esta manera por cada búsqueda nos traemos mas información de golpe.

Slide 9

Slide 9 text

Bloques • El uso de bloques simplifica el almacenamiento y mejora la tolerancia a los fallos. • Cada bloque de un fichero es replicado en base a un factor de replicación entre las diferentes máquinas que componen el clúster. De esta manera si alguna de las máquinas falla tenemos una copia de ese bloque siempre disponible. $ hdfs fsck / -files -blocks

Slide 10

Slide 10 text

Namenodes y Datanodes • En la arquitectura de HDFS existen dos tipos de nodos:  Namenodes (master)  Datanodes (workers)

Slide 11

Slide 11 text

Namenodes • Gestionan el sistema de ficheros de HDFS. • Mantienen la estructura de árbol y los metadatos de todos los ficheros y directorios. • Esta información se almacena en disco en dos ficheros: ▫ - Namespace Image ▫ - EditLog

Slide 12

Slide 12 text

Datanodes • Son los “trabajadores” del sistema de ficheros. • Almacenan y recuperan bloques cuando se les solicita. • Puntualmente informan al Namenode con la lista de bloques que están almacenando.

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

Almacenamiento en HDFS • Almacenar datos en HDFS no es exactamente igual que hacerlo en tu ordenador personal. • HDFS esta diseñado para almacenar ficheros de gran tamaño. Fichero mayores de 500 MB es lo normal. • Los datos se almacenan en HDFS según el patrón: “Write one, read often”. Lo normal es no modificar el contenido de los ficheros y si hay que añadir se hace al final del mismo.

Slide 15

Slide 15 text

Replicación • Los ficheros almacenados en HDFS se dividen en bloques en base al factor de replicación. • Todos los bloques de un fichero tienen el mismo tamaño, excepto el último que puede tener el mismo tamaño que los demás o ser mas pequeño.

Slide 16

Slide 16 text

Replicación • HDFS esta diseñado para almacenar datos en hardware barato y poco fiable, es por ello por lo que realiza la replicación de bloques. Si falla uno de los nodos coge una copia del bloque de otro nodo del clúster. • El factor de replicación es configurable, para arquitecturas singlenode es 1 para el resto es 3 por defecto.

Slide 17

Slide 17 text

Replicación Estrategia de replicación: • El primer bloque se mete en uno de los nodos de un rack, y las otras dos copias se meten en nodos diferentes de otro rack del cluster. De esta manera nos aseguramos que siempre vamos a tener disponible una copia del bloque.

Slide 18

Slide 18 text

Replicación • Sub-replicación: Cuando el número de copias del bloque es menor que el índice de replicación. Cuando HDFS detecta esta situación manda realizar una copia del bloque. • Sobre-replicación: Cuando el número de copias del nodo es mayor que el índice de replicación. Cuando HDFS detecta esta situación manda borrar una copia del bloque.

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

Arquitectura • HDFS puede ser montado en docenas, cientos o incluso miles de ordenadores individuales donde los ficheros son almacenados en sus discos duros. • Cada uno de esos ordenadores individuales es un servidor con su propia memoria, disco duro, procesador y un sistema operativo instalado, normalmente Linux aunque Windows también es soportado.

Slide 21

Slide 21 text

Arquitectura • Técnicamente HDFS se monta encima del sistema de ficheros de cada uno de los nodos que componen el cluster. • Un cluster Hadoop está compuesto de las siguientes clases de servidores: ▫ Slave nodes ▫ Master nodes

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

Arquitectura: Slavenodes • También llamados Datanodes. • Sirven para almacenar los datos. • En cada uno de estos nodos corre un “daemon” llamados Datanode. • Los procesos Datanode sirven para llevar la cuenta de los bloques de datos que están almacenados en ese nodo. • Regularmente se comunican con los master nodes para notificarlos del estado de los datos que guardan.

Slide 24

Slide 24 text

Arquitectura: Slavenodes • Los bloques de datos son almacenados como ficheros en el sistema de ficheros. El usuario de Hadoop no tiene constancia de la ubicación de los bloques del fichero que quiere consultar en el clúster. • HDFS esta preparado para los fallos y es por eso por lo que realiza copia de los bloques de los ficheros y los reparte entre los slavenodes.

Slide 25

Slide 25 text

Arquitectura: Masternodes • También conocidos como Namenodes. • Cuando un usuario guarda un fichero en HDFS este se divide en bloques y tres copias de estos bloques se guardan a lo largo del cluster de Hadoop. • El namenode actúa de “libro de direcciones” en HDFS. Sabe que bloques componen un determinado fichero y en que datanodes están guardados sus bloques y sus replicas.

Slide 26

Slide 26 text

Arquitectura: Masternodes • El masternode es el elemento mas importante en HDFS. Si este falla el acceso a los datos del cluster HDFS es imposible. • En los master nodes corren los procesos Name nodes que se encargan de guardar toda la información respecto a los bloques y que datanodes los contienen. Toda esta información se guarda en un fichero llamado fsimage. • Todos los cambios de datos se registran en un log. Este log se llama edits y se guarda en el name node.

Slide 27

Slide 27 text

Arquitectura: ¿Cómo funciona un namenode? • El propósito de un namenode es informar a las aplicaciones de cuantos bloques necesitan y guardar la ubicación de los mismos dentro del cluster. Proceso de inicio de un namenode: ▫ 1 ) Carga el fsimage y lo guarda en memoria. ▫ 2) Carga el fichero edits y replica los cambios para actualizar los meta-datos de los bloques en memoria. ▫ 3) Los procesos de los Data nodes envían los informes de los bloques que contienen al namenode.

Slide 28

Slide 28 text

Arquitectura: Masternodes • Durante la vida del cluster los data nodes envían de manera periódica al name node una señal indicándoles que están activos(Normalmente cada tres segundos, este valor es configurable) • Cada 6 horas (también configurable) envían al name node el estado de los bloques que contienen.

Slide 29

Slide 29 text

Escritura de datos • 1 ) El cliente envía una petición al name node para crear un nuevo fichero. • 2) El name node determina cuantos bloques son necesarios. • 3) El cliente escribe las primeras copias de los bloques según le planifica el namenode. (Algoritmo de replicación) • 4) Cada bloque se escribe en HDFS y un proceso se encarga de escribir el resto de replicas a otros data nodes identificados por el namenode. • Una vez que el proceso datanode sabe que todas las replicas se han escrito, el cliente cierra el fichero y notifica al namenode.

Slide 30

Slide 30 text

Lectura de datos • 1 ) El cliente manda un petición al namenode de un fichero. • 2) El name node determina que bloques pertenecen a ese fichero y elige en base a la proximidad de unos bloques con otros cual es el camino mas eficiente. • 3) El cliente accede a los bloques mediante la dirección dada por el namenode.

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

SecundaryNameNode • Servicio auxiliar y opcional en el cluster. • Puede usarse como backup de los metadatos.

Slide 33

Slide 33 text

JobTracker • Es el “demonio” encargado de ejecutar las tareas relacionadas con mapreduce. • Las ejecuta sobre unos determinados nodos del clúster.

Slide 34

Slide 34 text

TaskTracker • Es un demonio encargado de ejecutar una determinada tarea en cada nodo encargada por el jobtracker. • Las tareas son aplicaciones Java MapReduce.

Slide 35

Slide 35 text

CHECKPOINTING • Los cambios en los ficheros almacenados en HDFS se guardan el fichero edits. • Periódicamente se lee el fichero edits y los cambios registrados se pasan al fichero fsimage. • Del checkpointing se encarga uno de estos cuatro posibles daemons: ▫ Secondary NameNode ▫ Checkpoint Node ▫ Backup Node ▫ Standby Namenode

Slide 36

Slide 36 text

Checkpointing • El NameNode crea un nuevo fichero para aceptar el diario de cambios del sistema de ficheros, lo llama edits.new • El fichero edits no acepta más cambios y se copia al servicio de checkpointing además del fichero fsimage. • El checkpointing service une estos dos ficheros creando el fichero fsimage.ckpt • El checkpointing service copia fsimage.ckpt al NameNode • El NameNode sobreescribe el fichero fsimage con el fichero fsimage.ckpt • El NameNode renombra edits.new a edits.

Slide 37

Slide 37 text

Configuración HDFS • Core-site.xml fs.default.name hdfs://localhost:8020 Nombre del filesystem por defecto.

Slide 38

Slide 38 text

Configuración HDFS • Hdfs-site.xml dfs.namenode.name.dir file:/home/hadoop/workspace/dfs/name Path del filesystem donde el namenode almacenará los metadatos. dfs.datanode.data.dir file:/home/hadoop/workspace/dfs/data Path del filesystem donde el datanode almacenerá los bloques. dfs.replication 1 Factor de replicación. Lo ponemos a 1 porque sólo tenemos 1 máquina.

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

Comandos básicos $hdfs dfs - Sencillez - Comandos básicos parecidos a Linux. - http://hadoop.apache.org/docs/r2.3.0/hadoo p-project-dist/hadoop- common/FileSystemShell.html

Slide 41

Slide 41 text

Comandos básicos $ hdfs namenode –format

Slide 42

Slide 42 text

Comandos básicos $ hdfs dfs –ls

Slide 43

Slide 43 text

Comandos básicos Creación de directorios $ hdfs dfs –mkdir /user/root/prueba

Slide 44

Slide 44 text

Comandos básicos Copiar archivos de local a HDFS. $ hdfs dfs -copyFromLocal prueba1.txt /user/root/prueba

Slide 45

Slide 45 text

Comandos básicos Ver contenido de los ficheros $ hdfs dfs –cat /user/root/prueba/prueba1.txt

Slide 46

Slide 46 text

Comandos básicos Tamaños de directorios y ficheros $ hdfs dfs –du /user/root/prueba

Slide 47

Slide 47 text

Comandos básicos $ hdfs fsck / -files -blocks

Slide 48

Slide 48 text

Comandos básicos Fusión de ficheros $ hdfs dfs -getmerge /user/root/prueba total.txt

Slide 49

Slide 49 text

Comandos básicos Borrado de ficheros $ hdfs dfs –rm /user/root/prueba/prueba1.txt

Slide 50

Slide 50 text

Otros comandos útiles • Count : ▫ hdfs dfs –count /user/root/ • Tail ▫ hdfs dfs –tail /user/root/prueba1.txt • Touchz ▫ hdfs dfs –touchz /user/root/zero.txt • Mv ▫ hdfs dfs –mv /user/root/zero.txt /user/root/directorio

Slide 51

Slide 51 text

¡MUCHAS GRACIAS A TODOS! @joseadame