Entendiendo en profundidad
Hadoop
Hadoopes un proyecto de código abierto de la Apachefundación. Es un marco escrito Java, desarrollado originalmente por Doug Cutting en 2005. Fue creado para admitir la distribución Nutchdel motor de búsqueda de texto. Hadooputiliza las Map Reducetecnologí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.
Hadoopes 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 Hadoopdisponibles:
- 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: MAPy REDUCEpara 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 MapReduceexperiencia 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.0estaba 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 MapReducepara que pueda ejecutarse Hadoopo
Extraer datos HDFSo 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 Hadoopclúster.
Hadoop 2.0
En Hadoop 2.0, HDFSsigue 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. MapReduceya 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. HDFSes un esquema menos. Solo más tarde, cuando los datos deben procesarse, la estructura se impone a los datos sin procesar.
Es escalable Hadooppuede almacenar y distribuir conjuntos de datos muy grandes en cientos de servidores económicos que operan en paralelo.
Es resistente al fracaso. Hadoopes 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 Hadoopes que puede funcionar con cualquier tipo de datos: estructurados, no estructurados o semiestructurados. Además, el procesamiento es extremadamente rápido Hadoopdebido al paradigma de "mover código a datos".
Ecosistema Hadoop
Los siguientes son los componentes del Hadoopecosistema:
HDFS : HadoopSistema 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 SQLdebería poder acceder a los datos en un Hadoopclú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. PigEl intérprete convierte automáticamente los scripts en MapReducetrabajos Pig.
ZooKeeper : es un servicio de coordinación para aplicaciones distribuidas.
Oozie : Es un schedularsistema de flujo de trabajo para administrar Hadooptrabajos 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 Hadoopalmacenes de datos estructurados como bases de datos relacionales.
Ambari : es una herramienta basada en la web para aprovisionar, administrar y monitorear Hadoopclústeres.
Colmena
Hivees una herramienta de infraestructura de almacenamiento de datos para procesar datos estructurados Hadoop. Reside además Hadooppara 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 SQLlenguaje de tipo para consultas llamadas HiveQLo 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 : Hivees una data warehouseinfraestructura que puede crear interacción entre el usuario y HDFS. Las interfaces de usuario que Hiveadmiten son Hive Web UI, Hive Command line y Hive HD Insight (en Windows Server).
MetaStore : Hiveelige el respectivo database serverspara almacenar el esquema o Metadatade tablas, bases de datos, columnas en una tabla, sus tipos de datos y HDFSmapeo.
HiveQL Process Engine : HiveQLes similar a la SQLconsulta de información de esquema en el Metastore. Es uno de los reemplazos del enfoque tradicional para el MapReduceprograma. En lugar de escribir MapReduceen Java, podemos escribir una consulta para MapReducey procesarla.
Exceution Engine : La parte de conjunción del HiveQLmotor de proceso y MapReducees el Hivemotor 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 : HadoopSistema de archivos distribuido o HBaseson las técnicas de almacenamiento de datos para almacenar datos en el sistema de archivos.