sql >> Base de Datos >  >> NoSQL >> HBase

Limitaciones de Hadoop, formas de resolver los inconvenientes de Hadoop

Hemos hablado de las características de Hadoop en nuestro tutorial anterior de Hadoop. Ahora vamos a cubrir las limitaciones de Hadoop. Hay varios inconvenientes de los marcos de Apache Hadoop.

Por ejemplo, problema de archivos pequeños, procesamiento lento, solo procesamiento por lotes, latencia, problema de seguridad, vulnerabilidad, sin almacenamiento en caché, etc.

Todas estas limitaciones de Hadoop las discutiremos en detalle en este tutorial de Hadoop.

¿Qué es Hadoop?

Apache Hadoop es un marco de software de código abierto para el almacenamiento y procesamiento distribuido de una gran cantidad de conjuntos de datos. Código abierto significa que está disponible gratuitamente e incluso podemos cambiar su código fuente según los requisitos.

Apache Hadoop también permite ejecutar aplicaciones en un sistema con miles de nodos. Su sistema de archivos distribuidos proporciona velocidades de transferencia de datos rápidas entre nodos.

También permite que el sistema continúe funcionando en caso de falla del nodo. Las características principales de Hadoop son las siguientes:

  • En Apache Hadoop, los datos están disponibles a pesar de la falla de la máquina debido a muchas copias de datos. Entonces, si alguna máquina falla, entonces uno puede acceder a los datos desde otra ruta.
  • Apache Hadoop es escalable, ya que es fácil agregar nuevo hardware al nodo.
  • Hadoop es altamente tolerante a fallas, ya que, de forma predeterminada, se almacenan 3 réplicas de cada bloque en el clúster. Por lo tanto, si algún nodo del clúster deja de funcionar, los datos de ese nodo se pueden recuperar fácilmente del otro nodo.
  • Apache Hadoop se ejecuta en un grupo de hardware básico que no es muy costoso.
  • En Apache Hadoop, los datos se almacenan de manera confiable en el clúster a pesar de fallas de hardware debido a la replicación de datos en el clúster.

Aunque Hadoop es la herramienta más poderosa de Big Data, tiene varias limitaciones. Debido a las limitaciones de Hadoop, aparecieron Apache Spark y Apache Flink.

Limitaciones de Hadoop

Varias limitaciones de Apache Hadoop se dan a continuación junto con su solución-

a. Problemas con archivos pequeños

El principal problema de Hadoop es que no es adecuado para datos pequeños. HDFS carece de la capacidad de soportar la lectura aleatoria de pequeños debido a su diseño de alta capacidad.

Los archivos pequeños son más pequeños que el tamaño del bloque HDFS (predeterminado 128 MB). Si está almacenando una gran cantidad de archivos pequeños, HDFS no puede manejar esta gran cantidad de archivos pequeños.

Como HDFS fue diseñado para trabajar con una pequeña cantidad de archivos grandes para almacenar grandes conjuntos de datos en lugar de una gran cantidad de archivos pequeños. Si hay muchos archivos pequeños, NameNode se sobrecargará, ya que almacena el espacio de nombres de HDFS.

Solución: 

Simplemente combine los archivos pequeños para crear archivos más grandes y luego cópielos más grandes a HDFS.

Archivos de Hadoop (archivos HAR) se ocupa del problema de muchos archivos pequeños. Hadoop Archives funciona mediante la creación de un sistema de archivos en capas sobre HDFS.

Con el comando de archivo de ayuda de Hadoop, se crean archivos HAR; esto ejecuta un trabajo MapReduce para empaquetar los archivos que se archivan en una pequeña cantidad de archivos HDFS. La lectura de archivos a través de HAR no es más eficiente que la lectura a través de HDFS.

Como cada acceso a un archivo HAR requiere la lectura de dos archivos de índice y el archivo de datos, esto lo hará más lento.

Los archivos de secuencia también superan el problema de los archivos pequeños. En el que usamos el nombre del archivo como clave y el contenido del archivo como valor.

Al escribir un programa para archivos (100 KB), podemos ponerlos en un solo archivo de Secuencia y luego podemos procesarlos en forma de transmisión operando en el archivo de Secuencia.

MapReduce en Hadoop puede dividir el archivo de secuencia en fragmentos y operar en cada fragmento de forma independiente porque el archivo de secuencia se puede dividir.

Al almacenar archivos en Hbase, podemos superar el problema de los archivos pequeños. En realidad, no estamos almacenando millones de archivos pequeños en HBase, sino que agregamos el contenido binario del archivo a una celda.

b. Velocidad de procesamiento lenta

MapReduce procesa una gran cantidad de datos. En Hadoop, MapReduce funciona dividiendo el procesamiento en fases:Mapa y Reducir . Entonces, MapReduce requiere mucho tiempo para realizar estas tareas, lo que aumenta la latencia. Por lo tanto, reduce la velocidad de procesamiento.

Solución:

Mediante el procesamiento de datos en memoria, Apache Spark supera este problema. Al igual que en el procesamiento en memoria, no se pierde tiempo moviendo los datos/procesos dentro y fuera del disco, lo que lo hace más rápido.

Apache Spark es 100 veces más rápido que MapReduce porque procesa todo en la memoria.

Flink también puede superar este problema. Flink procesa más rápido que Spark debido a su arquitectura de transmisión.

c. Soporte solo para procesamiento por lotes

Hadoop solo admite el procesamiento por lotes, no es adecuado para la transmisión de datos. Por lo tanto, el rendimiento general es más lento. El marco MapReduce no aprovecha al máximo la memoria del clúster de Hadoop.

Solución

Apache Spark resuelve este problema ya que admite el procesamiento de secuencias. Pero el procesamiento de flujo de Spark no es tan eficiente como Flink, ya que utiliza el procesamiento de microlotes. Apache Flink mejora el rendimiento general, ya que proporciona un tiempo de ejecución único para la transmisión y el procesamiento por lotes.

d. Sin procesamiento en tiempo real

Apache Hadoop es un marco de procesamiento por lotes. Significa que toma una gran cantidad de datos de entrada, los procesa y produce el resultado.

El procesamiento por lotes es muy eficiente para procesar un gran volumen de datos, pero depende del tamaño de los datos que se procesan y de la potencia computacional del sistema; una salida puede retrasarse significativamente. Apache Hadoop no es adecuado para el procesamiento en tiempo real.

Solución:

Spark es adecuado para el procesamiento de transmisiones. El procesamiento de vapor proporciona datos de entrada/salida continuos. Procesa datos en una pequeña cantidad de tiempo.

Flink proporciona un tiempo de ejecución único tanto para las transmisiones como para el procesamiento por lotes.

e. Procesamiento iterativo

Apache Hadoop no es muy eficiente para el procesamiento iterativo. Dado que Hadoop no es compatible con el flujo de datos cíclico (es decir, una cadena de etapas en la que cada salida de la etapa anterior es la entrada de la siguiente etapa).

Solución:

Spark supera este problema. Como Apache Spark accede a los datos de la RAM en lugar del disco. Esto mejora drásticamente el rendimiento de un algoritmo iterativo que accede al mismo conjunto de datos repetidamente.

En Apache Spark, para el procesamiento iterativo, cada iteración debe programarse y ejecutarse por separado.

f. Latencia

MapReduce en Hadoop es más lento porque admite diferentes formatos, estructuras y una gran cantidad de datos. En MapReduce, Map toma un conjunto de datos y lo convierte en otro conjunto de datos, donde un elemento individual se divide en un par clave-valor.

Reduce toma la salida del mapa como y Reduce toma la salida del mapa como entrada y procesa más. MapReduce requiere mucho tiempo para realizar estas tareas, lo que aumenta la latencia.

Solución:

Apache Spark puede reducir este problema. Aunque Spark es el sistema por lotes, es relativamente más rápido porque almacena en caché gran parte de los datos de entrada en la memoria mediante RDD. La transmisión de datos de Apache Flink logra una baja latencia y un alto rendimiento.

g. Sin facilidad de uso

El desarrollador de MapReduce en Hadoop necesita código manual para todas y cada una de las operaciones, lo que dificulta mucho el trabajo. En Hadoop, MapReduce no tiene un modo interactivo, pero agregar hive y pig hace que trabajar con MapReduce sea un poco más fácil.

Solución:

Spark ha superado este problema, ya que Spark tiene un modo interactivo. Entonces, tanto los desarrolladores como los usuarios pueden tener comentarios intermedios para consultas y otras actividades.

Como Spark tiene toneladas de operadores de alto nivel, es fácil programar Spark. También se puede usar Apache Flink ya que también tiene operadores de alto nivel.

h. Problema de seguridad

Apache Hadoop es un desafío en el mantenimiento de aplicaciones complejas. A Hadoop le falta el cifrado en los niveles de almacenamiento y red, lo cual es un punto importante de preocupación. Apache Hadoop admite la autenticación Kerberos, que es difícil de administrar.

Solución:

Apache Spark proporciona una bonificación de seguridad. Si ejecuta Apache Spark en HDFS, puede usar ACL de HDFS y permisos de nivel de archivo.

yo. Vulnerable por naturaleza

Apache Hadoop está escrito en Java. Java es el lenguaje más popular, por lo tanto, Java es el más explotado por los ciberdelincuentes.

j. Sin almacenamiento en caché

Apache Hadoop no es eficiente para el almacenamiento en caché. MapReduce no puede almacenar en caché los datos intermedios en la memoria para el requisito adicional y esto disminuye el rendimiento de Hadoop.

Solución:

Spark y Flink superan este problema. Spark y Flink almacenan en caché los datos en la memoria para futuras iteraciones que mejoran el rendimiento general.

k. Código extenso

Apache Hadoop tiene 1, 20,000 líneas de código. El número de líneas produce el número de errores. Por lo tanto, llevará más tiempo ejecutar los programas.

Solución:

Spark y Flink están escritos en Scala y Java. Pero la implementación está en Scala, por lo que el número de líneas de código es menor que Hadoop. Por lo tanto, lleva menos tiempo ejecutar los programas.

Conclusión

Como resultado de la limitación de Hadoop, surgió la necesidad de Spark y Flink. Por lo tanto, haga que el sistema sea más amigable para jugar con una gran cantidad de datos.

Apache Spark proporciona procesamiento de datos en memoria, por lo que mejora la velocidad de procesamiento. Flink mejora el rendimiento ya que proporciona un tiempo de ejecución único para la transmisión y el procesamiento por lotes.

Spark proporciona bonificación de seguridad. Por lo tanto, se pueden resolver todas estas limitaciones de Hadoop mediante el uso de otras tecnologías de big data como Apache Spark y Flink.

Si encuentra otras limitaciones de Hadoop, háganoslo saber dejando un comentario en la sección que figura a continuación.