Hadoop-1-Introducción
1. Introducción
La biblioteca de software Apache Hadoop es un marco que utiliza un modelo de programación simple para procesar grandes conjuntos de datos a través de clústeres de computadoras distribuidos .
Su objetivo es expandirse de un solo servidor a miles de computadoras, mientras que cada computadora puede proporcionar funciones de almacenamiento y computación local .
Todas las computadoras pueden fallar. Hadoop en sí no depende del hardware para brindar alta disponibilidad, sino que está diseñado para detectar y manejar fallas en la capa de aplicación, asegurando así que todo el grupo de computadoras pueda brindar servicios de alta disponibilidad .
2. Historia de desarrollo
Doug Cutting, el padre de Hadoop, también es el fundador del proyecto Lucene.
Lucene proporciona tecnología de recuperación de texto completo basada en Java.
Nutch es un rastreador web (motor de búsqueda) desarrollado por Lucene.
Al mismo tiempo, Google ha publicado tres artículos :
Octubre de 2003: GFS (el sistema de archivos de Google)
2004 年 12 月 : MapReduce (MapReduce: procesamiento de datos simplificado en grandes clústeres)
2006 年 11 月 : Bigtable (Bigtable: un sistema de almacenamiento distribuido para datos estructurados)
A partir de la versión de lanzamiento 0.8 de Nutch (25 de julio de 2006), Nutch comenzó a basarse en la arquitectura Hadoop. Doug Cutting separa el sistema de archivos distribuido en Nutch y el código que implementa el algoritmo MapReduce para formar un nuevo proyecto de código abierto, que es Hadoop.
3. Tres versiones de lanzamiento principales
1) Apache
Esta es la versión más primitiva y básica, adecuada para el aprendizaje introductorio.
2) Cloudera
CDH es la versión de lanzamiento de Cloudera Hadoop, es completamente de código abierto y tiene una compatibilidad, estabilidad y seguridad mejoradas en comparación con Apache Hadoop.
3) Hortonworks
HDP (Hortonworks Data Platform), completamente de código abierto, también proporciona un sistema de instalación y gestión de código abierto
4. Características
1) alta fiabilidad
Hadoop mantiene varias copias de los datos de trabajo y, cuando falla el clúster, redistribuye los nodos fallidos.
2) alta escalabilidad
Asignar datos de tareas entre clústeres, que pueden expandir fácilmente miles de nodos
3) alta eficiencia
Ejecute tareas en paralelo para mejorar la velocidad de procesamiento de las tareas.
5. Composición
1, Hadoop común
Módulos de herramientas comunes que admiten otros módulos de Hadoop
2, Sistema de archivos distribuido Hadoop (HDFS ™)
Un sistema de archivos distribuido que proporciona acceso de alto rendimiento a los datos de la aplicación.
3) Hadoop Hilado
Marco para la programación de trabajos y la gestión de recursos del clúster
4) Hadoop MapReduce
Sistema basado en YARN que procesa grandes cantidades de datos en paralelo
5) Hadoop Ozono
Almacenamiento de objetos Hadoop
6) Submarino Hadoop
Motor de aprendizaje automático de Hadoop
6 、 HDFS
HDFS, utilizado para el almacenamiento de datos. Consta principalmente de tres partes:
- NameNode (NN), que almacena metadatos del archivo, como el nombre del archivo, la estructura del directorio del archivo, los atributos del archivo (incluida la hora de creación, los permisos del archivo y el número de copias), la lista de bloqueo de cada archivo y el DataNode donde se encuentra la lista de bloqueo, etc.
- DataNode (DN), que almacena datos de bloques de archivos en el sistema de archivos local y la suma de comprobación de los datos de bloques
- Secondary NameNode (2NN), un programa auxiliar en segundo plano que se utiliza para monitorear el estado de HDFS, obtendrá instantáneas de metadatos de HDFS (NN) a intervalos regulares
7 、 HILO
YARN, utilizado para la programación de recursos. Consta principalmente de cuatro partes:
- Resource Manager, utilizado para procesar solicitudes de clientes, asignación y programación de recursos, iniciar y monitorear Application Master y monitorear Node Manager
- Node Manager, gestión de recursos en un solo nodo, responsable de procesar los comandos de Resource Manager y Application Master
- Maestro de aplicaciones, responsable de la segmentación de datos y asignación de tareas, monitoreo y tolerancia a fallas, y aplicación de recursos para aplicaciones
- El contenedor, una abstracción del entorno operativo de la tarea, encapsula la información relacionada con la operación de la tarea, como la CPU, la memoria y otros recursos multidimensionales, así como las variables de entorno y los comandos de inicio (tecnología de contenedor).
8 、 MapReduce
MapReduce, utilizado para el cálculo. Procesar los datos de entrada (par clave-valor clave / valor) y generar el resultado final (par clave-valor clave / valor)
El proceso de cálculo consta de dos partes:
- Mapa, cada tarea que convierte los datos de entrada en registros intermedios, los registros intermedios convertidos no necesitan ser consistentes con el tipo de datos de entrada. Cada par clave-valor de entrada se puede asignar a cero o más pares clave-valor de salida
- Reducir, resumir los resultados del mapeo y finalmente formar el resultado de salida. Tiene 3 etapas principales: barajar, ordenar y reducir
Los tipos de entrada y salida de un trabajo MapReduce:
(entrada) <k1, v1> ->
mapa -> <k2, v2> ->
combinar -> <k2, v2> ->
reducir -> <k3, v3>
(salida)
Documento de Google:
mapa (k1, v1) → lista (k2, v2)
reducir (k2, lista (v2)) → lista (v2)