HDFS, es un sistema de archivos distribuido, que tiene una gran cantidad de datos, terabytes o incluso petabytes.
- Es un sistema de archivos distribuido escalable y portátil.
- Se basa en el diseño de las EFP, Google File System.
- Es un sistema de archivos estructurado en bloques donde los archivos individuales se dividen en bloques de tamaño fijo.
- Se ejecuta en un espacio de nombres separado y aislado de los contenidos de los archivos locales.
- Los archivos se almacenan de forma redundante para asegurar la durabilidad contra el fracaso.
- Los datos se escriben en HDFS una vez, leer varias veces.
- Cambios a los archivos existentes en HDFS no son compatibles.
- Una extensión de Hadoop proporcionará apoyo para anexar nuevos datos a los fines de archivo.
Ventajas
- Puede contener grandes conjuntos de datos (terabytes a petabytes) a través de la distribución de datos entre múltiples máquinas altamente tolerante a fallos.
- Througput alta computación paralela.
- Streaming de acceso para presentar los datos del sistema.
- Puede construirse a partir de hardware de bajo costo.
- Lógica de procesamiento cerca de los datos.
- Fiabilidad, manteniendo automáticamente varias copias de los datos.
Arquitectura
Protocolos de comunicación
- Todos los protocolos de comunicación HDFS se colocan en capas en la parte superior del protocolo TCP / IP.
- Cliente establece una conexión a un puerto TCP configurable en la máquina NameNode, usando el protocolo de cliente.
- DataNodes hablar con el NameNode utilizando el protocolo DataNode.
- NameNode sólo responde a la petición de llamada a procedimiento remoto emitido por DataNodes o clientes.
Rack Conciencia
- Pueden ser considerados como un conjunto de filas en las que cada fila consiste en un grupo de máquinas o nodos.
- Los grupos grandes de Hadoop están dispuestas en forma de racks.
- La comunicación entre nodos en los mismos racks es más rápido (mayor ancho de banda) que la existente entre los nodos repartidos en diferentes racks.
- Habrá réplicas de bloque en varios racks para mejorar la culpa.
- HDFS se puede hacer en rack para el uso de la escritura de la topología de red.
- El nodo Master utiliza la secuencia de comandos de topología de red para mapear la topología de la red del cluster.
- La topología de la red recibe las direcciones IP de las máquinas como entradas y devuelve la salida como una lista de nombres de Rack, una para cada entrada.
Re-balanceo por Bloque
- Para distribuir uniformemente los datos HDFS (por igual) a través de DataNodes en un clúster.
- Las réplicas de bloque se distribuirán en los racks para asegurar la copia de seguridad en caso de fallo del Rack.
- En caso de fallo de un nodo, se dará preferencia a las réplicas en el mismo rack de forma que I/O en la red transversal del Rack se reduce.
- Herramientas de Balanceo automático se incluye como parte de Hadoop inteligentemente equilibra los bloques a través de los nodos.
- Perfecto equilibrio es probablemente alcanzado.
- Es más deseable para ejecutar el equilibrio de escritura cuando la utilización de clúster es mínimo.
Demonios
- Los demonios son los programas residentes que constituyen a Hadoop en ejecución.
- Es una interfaz sencilla para ejecutar un programa utilizando Hadoop.
- Incluye NameNode, DataNode, NameNode secundaria, JobTracker y TaskTracker.
NameNode
- NameNode es todo un contador de HDFS.
- Almacena todos los metadatos (datos sobre los datos) del FileSystem.
- Realiza un seguimiento de cómo los archivos se dividen en bloques de archivos.
- Chequea la salud general del sistema de archivos distribuido.
- El clúster HDFS consta de un solo NameNode, un servidor Master que gestiona el espacio de nombres de archivos y regula el acceso de clientes a los archivos.
- Comprueba periódicamente mensajes de latidos del DataNode para verificar que está arriba.
NameNode secundario (SNN)
- Es un demonio asistente que ayuda a supervisar el estado del clúster HDFS.
- Hay un único NameNode secundaria por clúster.
- Se comunica con el NameNode para recopilar información sobre el HDFS metadatos.
- Usualmente se ejecuta en una máquina diferente que el nodo primario como requisitos de memoria están en el mismo orden que el nodo primario.
- Se utiliza como respaldo para reconfigurar el clúster en caso de fallo de un nodo primario.
JobTracker
- Un servicio dentro de Hadoop que asigna tareas a nodos específicos dentro del clúster HDFS.
- Habrá un único JobTracker por Cluster y generalmente se ejecuta en un nodo Master.
- Las aplicaciones clientes envian jobs al JobTracker.
- Se comunica con el NameNode para determinar la ubicación de los datos.
- Localiza los nodos TaskTracker con ranuras disponibles o cerca de los datos y envía el trabajo al TaskTracker elegido.
- Relanza la tarea en un nodo diferente, seleccionada en caso de fallo de tareas.
- Periódicamente verifica los latidos de TaskTracker.
- JobTracker actualiza el estado después de la finalización del trabajo.
TaskTracker
- Un nodo en el clúster que acepta tareas - Mapea, reduce y aleatorias de JobTracker.
- Inicia procesos de JVM independiente para manejar la tarea.
- Notifica el estado de finalización de proceso a la JobTracker.
- Envía mensajes de latidos al JobTracker para notificar el estado.
- Sigue una arquitectura Maestro/Esclavo, donde JobTracker es el maestro y TaskTracker, el esclavo.
- Habrá múltiples TasTrackers dentro de un clúster de HDFS.
Basic File System Operations
- La interacción con HDFS se realiza a través de una secuencia de comandos monolítica llamada bin/Hadoop.
- DFS y DFSADMIN son dos módulos en HDFS con los que podemos interactuar.
Command format
user@machine:hadoop$ bin/hadoop moduleName –cmd args….
moduleName indica cual subconjunto de funcionalidades usar de Hadoop.
-cmd es el nombre del comando dentro del módulo a ejecutar.
args… representa los argumentos
- Algunos de los comandos básicos son los siguientes.
- La cursiva denota variables para ser llenadas por el usuario.
- “path" significa cualquier nombre de archivo o directorio.
- "Src" y "dest" son los nombres de ruta en una operación dirigida.
- "Localsrc" y "localdest" son vías de acceso del sistema de archivos local.
Comando
|
Descripción
|
-rm path
|
Remueve los archivo o directorios identificados por
el path
|
-put localsrc dest
|
Copia los archivos o directorios desde el localFile identificado por localSRC al dest dentro de DFS.
|
-copyFromLocal localSrc dest
|
Idéntico al –put
|
-moveFromLocal localSrc dest
|
Copia los archivos o directorios desde el sistema localFile identificado por localSrc al dest dentro HDFS, borrando la copia local.
|
-get src localDest
|
Copia los archivos o directorios en HDFS identificados por src al sistema de archivos Local identificados por localDest.
|
-put localsrc dest
|
Copia los archivos o directorios desde el localFile identificado por localSRC al dest dentro de DFS.
|
-cat filename
|
Despliega el contenido de filename
|
-copyToLocal src localDest
|
Idéntico a -get
|
-moveToLocal src localDest
|
Trabaja parecido a –get, pero borra la copia en HDFS.
|
-mkdir path
|
Crea directorios llamados path en
HDFS
|
-help cmd
|
Despliega la ayuda del comando.
|
Permisos y Seguridad en HDFS
- Diseñado para prevenir la corrupción accidental de datos.
- No es un sólido modelo de seguridad que garantiza la denegación de acceso a terceros no autorizados.
- Cada archivo o directorio tiene 3 permisos; read, write y execute.
- La identidad no está autenticado formalmente con HDFS, éste se toma desde una fuente extrínseca.
- Username utilizado para iniciar el proceso de hadoop es considerado el superusuario de HDFS.
- Los permisos están habilitados en HDFS por defecto.
Desventajas
- Proporciona rendimiento de lectura de streaming a expensas de búsquedas aleatorias en los archivos.
- No es compatible con actualización de archivos existentes, aunque se espera que las versiones futuras si sean soportadas.
- No proporciona un mecanismo para el almacenamiento en caché local de los datos.
- Se espera que las máquinas individuales fallen de manera frecuente.
- NameNode es un único punto de fallo para un clúster de HDFS.
No hay comentarios:
Publicar un comentario