Estamos a solo un par de días del nuevo año, lo que significa que es hora de comenzar a mirar hacia adelante a las tendencias tecnológicas que dominarán la industria del software en 2022. A medida que se acerca el nuevo año, queremos ayudarte a familiarizarte con los próximos tendencias para que puedas estar preparado y comenzar a llevar a cabo tus habilidades al siguiente nivel. Hoy hablaremos de Hadoop.
El marco de Hadoop proporciona una plataforma de código abierto para procesar grandes cantidades de datos en grupos de computadoras. Debido a sus potentes funciones, se ha vuelto extremadamente popular en el campo de los macrodatos. Hadoop nos permite almacenar cualquier tipo de datos y manejar múltiples tareas concurrentes. Vamos a profundizar en la plataforma Hadoop y discutir el ecosistema Hadoop, cómo funciona Hadoop, sus pros y contras, y mucho más.
Indice
¿Qué es Apache Hadoop?
Apache Hadoop es una plataforma de software de código abierto basada en Java que administra el procesamiento y almacenamiento de datos para aplicaciones de big data. Hadoop funciona distribuyendo grandes conjuntos de datos y trabajos de análisis en los nodos de un clúster informático, dividiéndolos en cargas de trabajo más pequeñas que se pueden ejecutar en paralelo. Puede procesar datos estructurados y no estructurados y escalar de manera confiable desde un solo servidor a miles de máquinas.
Hadoop está escrito en Java y se basa en clústeres de Hadoop. Estos clústeres son colecciones de computadoras o nodos que trabajan juntos para ejecutar cálculos sobre los datos. Apache tiene otros proyectos de software que se integran con Hadoop, incluidos aquellos para realizar almacenamiento de datos, administrar trabajos de Hadoop, analizar datos y mucho más. Podemos usar Hadoop con servicios en la nube como Amazon AWS, Microsoft Azure y Cloudera para administrar y organizar nuestros esfuerzos de big data.
Hoy en día, dado que muchas aplicaciones están generando macrodatos para su procesamiento, Hadoop desempeña un papel importante a la hora de proporcionar un cambio de imagen muy necesario en el mundo de las bases de datos.
También desde el punto de vista empresarial, existen beneficios directos e indirectos. Al utilizar tecnología de código abierto en servidores económicos que se encuentran principalmente en la nube, las organizaciones logran ahorros significativos.
Además, la capacidad de recopilar datos masivos y los conocimientos derivados de procesar estos datos dan como resultado mejores decisiones comerciales en el mundo real, como la capacidad de concentrarse en el segmento de consumidores correcto, eliminar o corregir procesos erróneos, optimizar operaciones, proporcionar resultados de búsqueda relevantes, realizar análisis predictivos, etc.
Hadoop a través de una analogía
Antes de saltar a los tecnicismos de Hadoop y ayudarte a comprender qué es Hadoop, permítenos comprender Hadoop a través de una historia interesante. Al final de esta historia, comprenderás Hadoop, Big Data y la necesidad de Hadoop.
Juan es un agricultor de uvas. Cosecha las uvas en el otoño, las almacena en una sala de almacenamiento y finalmente las vende en la ciudad cercana. Mantuvo esta ruta durante años hasta que la gente comenzó a demandar otras frutas. Este aumento de la demanda lo llevó a cultivar manzanas y naranjas, además de uvas.
Desafortunadamente, todo el proceso resultó ser lento y difícil para hacerlo por sí solo.
Entonces, Juan contrata a dos personas más para que trabajen junto a él. La ayuda adicional acelera el proceso de recolección, ya que tres de ellos pueden trabajar simultáneamente en diferentes productos.
Sin embargo, esto afecta negativamente a la sala de almacenamiento, ya que el área de almacenamiento se convierte en un cuello de botella para almacenar y acceder a todas las frutas.
Juan pensó en este problema y se le ocurrió una solución: dar a cada uno un espacio de almacenamiento por separado. Entonces, cuando Juan recibe un pedido de una canasta de frutas, puede completar el pedido a tiempo, ya que los tres pueden trabajar con su área de almacenamiento.
Gracias a la solución de Juan, todos pueden terminar su pedido a tiempo y sin problemas. Incluso con demandas altísimas, Juan puede completar sus órdenes.
Historia
Apache Hadoop nació de la necesidad de procesar grandes volúmenes de macrodatos y ofrecer resultados web más rápidamente a medida que despegaban las empresas emergentes de motores de búsqueda como Yahoo y Google. Inspirados por MapReduce de Google, un modelo de programación que divide una aplicación en pequeñas fracciones para ejecutarse en diferentes nodos, Doug Cutting y Mike Cafarella comenzaron Hadoop en 2002 mientras trabajaban en el proyecto Apache Nutch.
Doug nombró a Hadoop en honor al elefante de juguete de su hijo. Unos años más tarde, Hadoop se separó de Nutch. Nutch se centró en el elemento del rastreador web y Hadoop se convirtió en la parte de procesamiento y computación distribuida. Dos años después de que Cutting se uniera a Yahoo, Yahoo lanzó Hadoop como un proyecto de código abierto en 2008.
En 2009, Hadoop fue capaz de manejar miles de millones de búsquedas e indexar millones de páginas web. En este momento, Cutting se unió al equipo de Cloudera para ayudar a difundir Hadoop en la industria de la nube. Finalmente, en 2011, se lanzó la versión 1.0 de Hadoop. La última versión (3.3.1) se lanzó en 2021.
Auge del Big Data
Ahora puede que te preguntes cómo se relaciona la historia de Juan con Big Data y Hadoop. Hagamos una comparación entre la historia de Juan y Big Data.
En el pasado, la generación de datos era limitada. Por lo tanto, el almacenamiento y procesamiento de datos se realizó con una sola unidad de almacenamiento y un procesador, respectivamente. En un abrir y cerrar de ojos, la generación de datos aumenta a pasos agigantados. No solo aumentó en volumen sino también en variedad. Por lo tanto, un solo procesador era incapaz de procesar grandes volúmenes de diferentes variedades de datos. Hablando de variedades de datos, puedes tener datos estructurados, semiestructurados y no estructurados.
Esta tabla es análoga a cómo a Juan le resultó difícil cosechar diferentes tipos de frutas sin ayuda. Por lo tanto, al igual que el enfoque de Juan, los analistas necesitaban múltiples procesadores para procesar varios tipos de datos.
Varias máquinas ayudan a procesar datos en paralelo. Sin embargo, la unidad de almacenamiento se convirtió en un cuello de botella que resultó en una generación de sobrecarga de red.
Para abordar este problema, la unidad de almacenamiento se distribuye entre cada uno de los procesadores. La distribución resultó en almacenar y acceder a los datos de manera eficiente y sin gastos generales de red. Este método se denomina procesamiento paralelo con almacenamiento distribuido.
Esta configuración es la forma en que los ingenieros y analistas de datos gestionan big data de forma eficaz. Ahora, ¿ves la conexión entre la historia de Juan y la gestión de big data?
¿Quién usa Hadoop?
Hadoop es una popular herramienta de big data, utilizada por muchas empresas en todo el mundo. Aquí hay una breve muestra de usuarios exitosos de Hadoop:
- British Airways
- Uber
- El banco de escocia
- Netflix
- La Agencia de Seguridad Nacional (NSA), de Estados Unidos
- El sistema Royal Mail del Reino Unido
- Expedia
Ahora que tenemos una idea de la popularidad de Hadoop, es hora de analizar más de cerca sus componentes para comprender qué es Hadoop.
Componentes
Hadoop es un marco que utiliza almacenamiento distribuido y procesamiento paralelo para almacenar y administrar Big Data. Es el software más utilizado para manejar Big Data. Hay tres componentes de Hadoop.
Hadoop HDFS
Los datos se almacenan de forma distribuida en HDFS. Hay dos componentes de HDFS: nodo de nombre y nodo de datos. Si bien solo hay un nodo de nombre, puede haber varios nodos de datos.
HDFS está especialmente diseñado para almacenar grandes conjuntos de datos en hardware básico. Una versión empresarial de un servidor cuesta aproximadamente $ 10,000 por terabyte para el procesador completo. En caso de que necesites comprar 100 de estos servidores de versión empresarial, ascenderá a un millón de dólares.
Hadoop te permite utilizar máquinas básicas como sus nodos de datos. De esta manera, no tienes que gastar millones de dólares solo en sus nodos de datos. Sin embargo, el nombre del nodo es siempre un servidor empresarial.
Características de HDFS:
- Proporciona almacenamiento distribuido
- Se puede implementar en hardware básico
- Proporciona seguridad a los datos
- Muy tolerante a fallas: si una máquina falla, los datos de esa máquina pasan a la siguiente.
Nodos maestro y esclavo
Los nodos maestro y esclavo forman el clúster HDFS . El nodo de nombre se llama maestro y los nodos de datos se llaman esclavos.
El nodo de nombre es responsable del funcionamiento de los nodos de datos. También almacena los metadatos.
Los nodos de datos leen, escriben, procesan y replican los datos. También envían señales, conocidas como latidos, al nodo de nombre. Estos latidos muestran el estado del nodo de datos.
Considera que se cargan 30 TB de datos en el nodo de nombre. El nodo de nombre lo distribuye entre los nodos de datos y estos datos se replican entre las notas de datos.
La replicación de los datos se realiza tres veces de forma predeterminada. Se hace de esta manera, por lo que si una máquina de productos básicos falla, puede reemplazarla con una nueva máquina que tenga los mismos datos.
MapReduce de Hadoop
Hadoop MapReduce es la unidad de procesamiento de Hadoop. En el enfoque de MapReduce, el procesamiento se realiza en los nodos esclavos y el resultado final se envía al nodo maestro.
Se utiliza un código que contiene datos para procesar todos los datos. Estos datos codificados suelen ser muy pequeños en comparación con los datos en sí. Solo necesita enviar unos pocos kilobytes de código para realizar un proceso de trabajo pesado en las computadoras.
El conjunto de datos de entrada se divide primero en fragmentos de datos.
En la fase de mapa, a los datos se les asigna una clave y un valor de 1.
Estos pares clave-valor se mezclan y ordenan juntos en función de sus claves. En la fase de reducción, tiene lugar la agregación y se obtiene el resultado final.
Hadoop YARN
Son las siglas de Yet Another Resource Negotiator. Es la unidad de gestión de recursos de Hadoop y está disponible como componente de la versión 2 de Hadoop.
- Hadoop YARN actúa como un sistema operativo para Hadoop. Es un sistema de archivos que se basa en HDFS.
- Es responsable de administrar los recursos del clúster para asegurarse de no sobrecargar una máquina.
- Realiza la programación de trabajos para asegurarse de que los trabajos estén programados en el lugar correcto.
Supón que una máquina cliente desea realizar una consulta o buscar algún código para el análisis de datos. Esta solicitud de trabajo va al administrador de recursos (Hadoop Yarn), que es responsable de la asignación y administración de recursos.
En la sección de nodos, cada uno de los nodos tiene sus administradores de nodos. Estos administradores de nodos administran los nodos y monitorizan el uso de recursos en el nodo. Los contenedores contienen una colección de recursos físicos, que pueden ser RAM, CPU o discos duros. Siempre que llega una solicitud de trabajo, el maestro de la aplicación solicita el contenedor al administrador de nodos. Una vez que el administrador de nodos obtiene el recurso, vuelve al Administrador de recursos.
Cómo mejora Hadoop en las bases de datos tradicionales
Comprender qué es Hadoop requiere una mayor comprensión de en qué se diferencia de las bases de datos tradicionales.
Hadoop utiliza HDFS (Hadoop Data File System) para dividir las cantidades masivas de datos en partes más pequeñas y manejables, y luego se guardan en grupos de servidores comunitarios. Esto ofrece escalabilidad y economía.
Además, Hadoop emplea MapReduce para ejecutar procesamientos paralelos, que almacena y recupera datos más rápido que la información que reside en una base de datos tradicional. Las bases de datos tradicionales son excelentes para manejar flujos de trabajo constantes y predecibles; de lo contrario, necesitas el poder de la infraestructura escalable de Hadoop.
Ventajas de Hadoop para Big Data
Hadoop se creó para trabajar con big data, por lo que no es de extrañar que ofrezca tantos beneficios. Los cinco principales beneficios son:
- Velocidad. El procesamiento concurrente de Hadoop, el modelo MapReduce y HDFS permiten a los usuarios ejecutar consultas complejas en solo unos segundos.
- Diversidad. El HDFS de Hadoop puede almacenar diferentes formatos de datos, como estructurados, semiestructurados y no estructurados.
- Económico. Hadoop es un marco de datos de código abierto.
- Elástico. Los datos almacenados en un nodo se replican en otros nodos del clúster, lo que garantiza la tolerancia a fallas.
- Escalable. Dado que Hadoop funciona en un entorno distribuido, puede agregar fácilmente más servidores.
Casos de uso
Estos son los principales casos de uso de Handoop:
Decisiones basadas en datos
Podemos integrar datos estructurados y no estructurados que no se utilizan en un data warehouse o base de datos relacional. Esto nos permite tomar decisiones más precisas que se basan en datos amplios.
Acceso y análisis de big data
Hadoop es ideal para científicos de datos e ingenieros de ML porque nos permite realizar análisis avanzados para encontrar patrones y desarrollar modelos predictivos precisos y efectivos.
Lagos de datos
Las soluciones de gobierno de Hadoop pueden ayudarnos con la integración de datos, la seguridad y la calidad de los lagos de datos.
Servicios financieros
Hadoop puede ayudarnos a crear y ejecutar aplicaciones para evaluar el riesgo, diseñar modelos de inversión y crear algoritmos comerciales.
Cuidado de la salud
Hadoop nos ayuda a rastrear índices de salud a gran escala y realizar un seguimiento de los registros de los pacientes.
Predicción de ventas
Hadoop se utiliza en empresas minoristas para ayudar a predecir las ventas y aumentar las ganancias mediante el estudio de datos históricos.
Desafíos de usar Hadoop
A pesar de la genialidad de Hadoop, no todo son corazones y flores. Hadoop viene con sus propios problemas, como:
- Hay una curva de aprendizaje pronunciada. Si deseas ejecutar una consulta en el sistema de archivos de Hadoop, debes escribir funciones de MapReduce con Java, un proceso que no es intuitivo. Además, el ecosistema está formado por muchos componentes.
- No todos los conjuntos de datos se pueden manejar de la misma manera. Hadoop no te ofrece una ventaja de «talla única». Los diferentes componentes ejecutan las cosas de manera diferente, y debes resolverlos con experiencia.
- MapReduce es limitado. Sí, es un gran modelo de programación, pero MapReduce utiliza un enfoque intensivo en archivos que no es ideal para tareas interactivas interactivas en tiempo real o análisis de datos.
- La seguridad es un problema. Hay muchos datos disponibles y muchos de ellos son confidenciales. Hadoop aún necesita incorporar la autenticación adecuada, el cifrado de datos, el aprovisionamiento y las prácticas de auditoría frecuentes.
Hadoop vs Spark
Apache Hadoop y Apache Spark se comparan exclusivamente entre sí porque ambos son marcos de código abierto para el procesamiento de big data. Spark es un proyecto más nuevo, que se desarrolló en 2012. Se centra en el procesamiento paralelo de datos en un clúster y funciona en la memoria. Esto significa que es mucho más rápido que MapReduce.
Hadoop es la mejor plataforma si trabajas con procesamiento por lotes de grandes cantidades de datos. Spark es la mejor plataforma si estás transmitiendo datos, creando cálculos gráficos o haciendo aprendizaje automático. Spark también admite el procesamiento de datos en tiempo real y el procesamiento por lotes. Hay muchas bibliotecas diferentes que pueden usar con Spark, incluidas las de aprendizaje automático, tareas SQL, transmisión de datos y gráficos.
Ejemplos de software popular relacionado con Hadoop
Otros paquetes populares que no son estrictamente parte de los módulos centrales de Hadoop pero que se usan con frecuencia junto con ellos incluyen:
- Apache Hive es un software de almacenamiento de datos que se ejecuta en Hadoop y permite a los usuarios trabajar con datos en HDFS utilizando un lenguaje de consulta similar a SQL llamado HiveQL.
- Apache Impala es la base de datos analítica nativa de código abierto para Apache Hadoop.
- Apache Pig es una herramienta que se usa generalmente con Hadoop como una abstracción sobre MapReduce para analizar grandes conjuntos de datos representados como flujos de datos. Pig permite operaciones como unir, filtrar, ordenar, cargar, etc.
- Apache Zookeeper es un servicio centralizado para permitir un procesamiento distribuido altamente confiable.
- Apache Sqoop es una herramienta diseñada para transferir de manera eficiente datos masivos entre Apache Hadoop y almacenes de datos estructurados como bases de datos relacionales.
- Apache Oozie es un sistema de programación de flujo de trabajo para administrar trabajos de Apache Hadoop. Los trabajos de Oozie Workflow son gráficos acíclicos dirigidos (DAG) de acciones.