Entendiendo en profundidad
Hadoop
Hadoop
es un proyecto de código abierto de la Apache
fundación. Es un marco escrito Java
, desarrollado originalmente por Doug Cutting en 2005. Fue creado para admitir la distribución Nutch
del motor de búsqueda de texto. Hadoop
utiliza las Map Reduce
tecnologías de sistema de archivos de Google y Google como base.
Características de Hadoop
- Está optimizado para manejar cantidades masivas de datos estructurados, semiestructurados y no estructurados utilizando hardware básico.
- No ha compartido nada de arquitectura.
- Replica sus datos en varias computadoras para que, si una falla, los datos puedan procesarse desde otra máquina que almacene su réplica.
Hadoop
es para alto rendimiento en lugar de baja latencia. Es una operación por lotes que maneja cantidades masivas de datos; por lo tanto, el tiempo de respuesta no es inmediato.
- Complementa el procesamiento de transacciones en línea y el procesamiento analítico en línea. Sin embargo, no es un reemplazo para a
RDBMS
.
- No es bueno cuando el trabajo no puede ser paralelo o cuando hay dependencias dentro de los datos.
- No es bueno para procesar archivos pequeños. Funciona mejor con grandes archivos de datos y conjuntos de datos.
Versiones de Hadoop
Hay dos versiones de Hadoop
disponibles:
- Hadoop 1.0
- Hadoop 2.0
Hadoop 1.0
Tiene dos partes principales:
1. Marco de almacenamiento de datos
Es un sistema de archivos de uso general llamado Hadoop Distributed File System ( HDFS
).
HDFS
no tiene esquema
Simplemente almacena archivos de datos y estos archivos de datos pueden estar en casi cualquier formato.
La idea es almacenar archivos tan cerca de su forma original como sea posible.
Esto a su vez proporciona a las unidades de negocio y a la organización la flexibilidad y agilidad que tanto necesitan sin preocuparse demasiado por lo que puede implementar.
2. Marco de procesamiento de datos
Este es un modelo de programación funcional simple inicialmente popularizado por Google como MapReduce
.
Básicamente utiliza dos funciones: MAP
y REDUCE
para procesar datos.
Los "Mappers" toman un conjunto de pares clave-valor y generan datos intermedios (que es otra lista de pares clave-valor).
Los "Reductores" luego actúan sobre esta entrada para producir los datos de salida.
Las dos funciones aparentemente funcionan de forma aislada entre sí, lo que permite que el procesamiento se distribuya altamente en forma altamente paralela, de tolerancia a fallas y escalable.
Limitaciones de Hadoop 1.0
La primera limitación fue el requisito de MapReduce
experiencia en programación.
Solo admitía el procesamiento por lotes que, aunque es adecuado para tareas como el análisis de registros, proyectos de minería de datos a gran escala, pero bastante inadecuado para otros tipos de proyectos.
Una limitación importante fue que Hadoop 1.0
estaba estrechamente relacionada con la computación MapReduce
, lo que significaba que los proveedores de administración de datos establecidos se quedaron con dos opiniones:
Reescriba su funcionalidad MapReduce
para que pueda ejecutarse Hadoop
o
Extraer datos HDFS
o procesarlos fuera de Hadoop
.
Ninguna de las opciones era viable ya que conducía a ineficiencias de proceso causadas por los datos que se movían dentro y fuera del Hadoop
clúster.
Hadoop 2.0
En Hadoop 2.0
, HDFS
sigue siendo el marco de almacenamiento de datos.
Sin embargo, una nueva y separada marco de gestión de recurso llamado Y et Un tro R esource N egotiater ( HILO ) ha sido añadido.
YARN admite cualquier aplicación capaz de dividirse en tareas paralelas.
YARN coordina la asignación de subtareas de la solicitud presentada, mejorando así la flexibilidad, escalabilidad y eficiencia de las aplicaciones.
Funciona al tener un Application Master en lugar de Job Tracker , ejecutando aplicaciones en recursos gobernados por el nuevo Node Manager .
ApplicationMaster puede ejecutar cualquier aplicación y no solo MapReduce
.
Esto significa que no solo admite el procesamiento por lotes sino también el procesamiento en tiempo real. MapReduce
ya no es la única opción de procesamiento de datos.
Ventajas de Hadoop
Almacena datos en su origen de. No se impone ninguna estructura al teclear o almacenar datos. HDFS
es un esquema menos. Solo más tarde, cuando los datos deben procesarse, la estructura se impone a los datos sin procesar.
Es escalable Hadoop
puede almacenar y distribuir conjuntos de datos muy grandes en cientos de servidores económicos que operan en paralelo.
Es resistente al fracaso. Hadoop
es tolerancia a fallas Practica la replicación de datos diligentemente, lo que significa que cada vez que se envían datos a cualquier nodo, los mismos datos también se replican a otros nodos en el clúster, asegurando así que en caso de falla del nodo, siempre habrá otra copia de datos disponible para su uso.
Es flexible. Una de las principales ventajas Hadoop
es que puede funcionar con cualquier tipo de datos: estructurados, no estructurados o semiestructurados. Además, el procesamiento es extremadamente rápido Hadoop
debido al paradigma de "mover código a datos".
Ecosistema Hadoop
Los siguientes son los componentes del Hadoop
ecosistema:
HDFS : Hadoop
Sistema de archivos distribuido. Simplemente almacena los archivos de datos lo más cerca posible del formulario original.
HBase : es la base de datos de Hadoop y se compara bien con una RDBMS
. Es compatible con el almacenamiento de datos estructurados para tablas grandes.
Colmena : permite el análisis de grandes conjuntos de datos utilizando un lenguaje muy similar al estándar ANSI SQL
, lo que implica que cualquier persona familiarizada SQL
debería poder acceder a los datos en un Hadoop
clúster.
Pig : es un lenguaje de flujo de datos fácil de entender. Ayuda con el análisis de grandes conjuntos de datos, lo cual es bastante adecuado Hadoop
. Pig
El intérprete convierte automáticamente los scripts en MapReduce
trabajos Pig
.
ZooKeeper : es un servicio de coordinación para aplicaciones distribuidas.
Oozie : Es un schedular
sistema de flujo de trabajo para administrar Hadoop
trabajos de Apache .
Mahout : es una biblioteca escalable de aprendizaje automático y minería de datos.
Chukwa : Es un sistema de recopilación de datos para gestionar grandes sistemas distribuidos.
Sqoop : se utiliza para transferir datos masivos entre Hadoop
almacenes de datos estructurados como bases de datos relacionales.
Ambari : es una herramienta basada en la web para aprovisionar, administrar y monitorear Hadoop
clústeres.
Colmena
Hive
es una herramienta de infraestructura de almacenamiento de datos para procesar datos estructurados Hadoop
. Reside además Hadoop
para resumir Big Data y facilita la consulta y el análisis.
La colmena no es
Una base de datos relacional
Un diseño para el procesamiento de transacciones en línea ( OLTP
).
Un lenguaje para consultas en tiempo real y actualizaciones a nivel de fila.
Características de la colmena
Almacena el esquema en la base de datos y procesa los datos en HDFS
.
Está diseñado para OLAP
.
Proporciona SQL
lenguaje de tipo para consultas llamadas HiveQL
o HQL
.
Es más familiar, rápido, escalable y extensible.
Arquitectura de la colmena
Los siguientes componentes están contenidos en Hive Architecture:
Interfaz de usuario : Hive
es una data warehouse
infraestructura que puede crear interacción entre el usuario y HDFS
. Las interfaces de usuario que Hive
admiten son Hive Web UI, Hive Command line y Hive HD Insight (en Windows Server).
MetaStore : Hive
elige el respectivo database
servers
para almacenar el esquema o Metadata
de tablas, bases de datos, columnas en una tabla, sus tipos de datos y HDFS
mapeo.
HiveQL Process Engine : HiveQL
es similar a la SQL
consulta de información de esquema en el Metastore
. Es uno de los reemplazos del enfoque tradicional para el MapReduce
programa. En lugar de escribir MapReduce
en Java
, podemos escribir una consulta para MapReduce
y procesarla.
Exceution Engine : La parte de conjunción del HiveQL
motor de proceso y MapReduce
es el Hive
motor de ejecución. El motor de ejecución procesa la consulta y genera resultados igual que MapReduce results
. Utiliza el sabor de MapReduce
.
HDFS o HBase : Hadoop
Sistema de archivos distribuido o HBase
son las técnicas de almacenamiento de datos para almacenar datos en el sistema de archivos.