Apache Hadoop 3

La release 3.0 de Apache Hadoop que se ha hecho GA en Diciembre de 2017 trae funcionalidades muy interesantes.
El resumen de las mismas es :
  • Soporte para Erasure Coding (Reed-Solomon y XOR) lo que mejora sustancialmente el overhead de capacidad del factor de replicación en HDFS (un 300% con un factor de replicación de 3, que es lo que se suele utilizar por defecto, frente a un 150% del Reed-Solomon), aunque se sacrifica el rendimiento en situación de fallo de un nodo debido a las lecturas remotas que hay que hacer para reconstruir y el coste de CPU de la recomputación. Una buena opción para aquellos datos de mi DataLake mas “fríos” o que se accedan de manera menos frecuente.
  • Optimizaciones en MapReduce que mejoran sustancialmente el rendimiento en jobs con mucha componente de operativa de shuffle (parece ser que Hadoop 3 puede ser hasta un 30% más rápido gracias a la implementación nativa en Java del recolector de salidas del map).
  • Si ya la release 2 incorporaba HA transparente para el NameNode, ahora la release 3 añade soporte para mas de dos NameNodes, lo que permite mejorar sustancialmente la escalabilidad y disponibilidad del namespace (múltiples NNs para varios namespaces con federación de NNs).
  • HDFS Router-based federation que simplifica el acceso de los clientes HDFS a clusters federados (namespaces federados).
  • S3Guard que permite que el cliente S3A sea más rápido (cacheo de metadatos) y consistente en la actualización de metadatos, lo que permite a NoSQLs como DynamoDB de AWS utilizar almacenamiento S3.
  • En Hadoop 2 se soportaba un único NN en stand-by, ahora la versión 3 soporta varios NNs en stand-by.
  • Un mecanismo de balanceo de datos entre los distintos discos que pueda tener el DataNode, algo que hasta ahora no era posible (intra-node disk balancing) y que provocaba situaciones de descompensación de bloques almacenados en los discos de un DataNode cuando uno de estos había fallado y se había sustituido.
  • Integración con MSFT Azure Data Lake filesystem mediante un conector específico.
  • Ya no es necesario especificar el tamaño del heap de las tareas de Map y de Reduce y el sistema hace auto-tuning basándose en la cantidad de RAM del nodo.

Comentarios

Entradas populares de este blog

Apache Spark 2.4: hacia la analítica de datos unificada

¿Qué es NVMe y porqué es clave?