paint-brush
Es posible migrar desde Hadoop sin extraer y reemplazar: así es como se hacepor@minio
3,817 lecturas
3,817 lecturas

Es posible migrar desde Hadoop sin extraer y reemplazar: así es como se hace

por MinIO7m2024/05/31
Read on Terminal Reader

Demasiado Largo; Para Leer

MinIO es una versión moderna de Hadoop que se integra con Spark y Hive. MinIO cifra todos los datos utilizando claves por objeto, lo que garantiza una protección sólida contra el acceso no autorizado. S3a es esencial. Punto final para aplicaciones que buscan hacer la transición fuera de Hado.op, ofreciendo compatibilidad con una amplia gama de aplicaciones.
featured image - Es posible migrar desde Hadoop sin extraer y reemplazar: así es como se hace
MinIO HackerNoon profile picture
0-item
1-item


Todavía estamos sorprendidos por la cantidad de clientes que acuden a nosotros para migrar de HDFS al almacenamiento de objetos moderno como MinIO. A estas alturas pensábamos que todos habían hecho la transición, pero cada semana hablamos con una organización importante y altamente técnica que ha decidido hacer la transición.


Muy a menudo, en esas discusiones, hay elementos de su infraestructura que desean mantener después de su migración. Hay marcos y software que surgieron del ecosistema HDFS que cuentan con una gran aceptación por parte de los desarrolladores y aún tienen un lugar en la pila de datos moderna. De hecho, a menudo hemos dicho que han surgido muchas cosas buenas del ecosistema HDFS. El problema fundamental es la estrecha relación entre el almacenamiento y la computación, no necesariamente con las herramientas y servicios que surgieron de la era del Big Data.


Esta publicación de blog se centrará en cómo realizar esa migración sin eliminar ni reemplazar herramientas y servicios que tienen valor. La realidad es que si no moderniza su infraestructura, no podrá lograr los avances en IA/ML que su organización requiere, pero no tiene que desperdiciar todo para llegar allí.

Desagregación de almacenamiento y computación con Spark y Hive

Ya hemos pasado por algunos Estrategias para una migración completa de eliminación y reemplazo. , que en algunos casos es el camino a seguir. Sin embargo, echemos un vistazo a otra forma de modernizar una implementación HDFS.


Este La arquitectura implica la gestión de Kubernetes. chispa apache y contenedores Apache Hive para procesamiento de datos; Spark se integra de forma nativa con MinIO mientras que Hive usa YARN. MinIO maneja el almacenamiento de objetos en contenedores con estado y en esta arquitectura se basa en configuraciones multiinquilino para el aislamiento de datos.


Descripción arquitectónica:

  • Nodos de cómputo: Kubernetes administra de manera eficiente contenedores Apache Spark y Apache Hive sin estado en nodos de cómputo, lo que garantiza una utilización óptima de los recursos y un escalado dinámico.


  • Capa de almacenamiento: MinIO Codificación de borrado y BitRot Protection significa que puede perder hasta la mitad de la cantidad de unidades y aún recuperarlas, todo sin la necesidad de mantener las tres copias de cada bloque de datos que requiere Hadoop.


  • Capa de acceso: todo el acceso al almacenamiento de objetos MinIO está unificado a través de la API de S3, lo que proporciona una interfaz perfecta para interactuar con los datos almacenados.


  • Capa de seguridad: la seguridad de los datos es primordial. MinIO cifra todos los datos utilizando claves por objeto, lo que garantiza una protección sólida contra el acceso no autorizado.


  • Gestión de identidad: MinIO Enterprise se integra completamente con proveedores de identidad como WSO2, Keycloak, Okta, Ping Identity para permitir que las aplicaciones o los usuarios se autentiquen.


Un reemplazo completamente modernizado para Hadoop que le permite a su organización conservar Hive, YARN y cualquier otro producto de datos del ecosistema Hadoop que pueda integrarse con el almacenamiento de objetos, que es casi todo en la pila de datos moderna.

Interoperabilidad en la capa de acceso

S3a es un punto final esencial para las aplicaciones que buscan abandonar Hadoop y ofrece compatibilidad con una amplia gama de aplicaciones dentro del ecosistema Hadoop. Desde 2006, los backends de almacenamiento de objetos compatibles con S3 se han integrado perfectamente en numerosas plataformas de datos dentro del ecosistema Hadoop como característica predeterminada. Esta integración se remonta a la incorporación de una implementación de cliente S3 en tecnologías emergentes.


En todas las plataformas relacionadas con Hadoop, la adopción del módulo hadoop-aws y aws-java-sdk-bundle es una práctica estándar, lo que garantiza un soporte sólido para la API S3. Este enfoque estandarizado facilita la transición fluida de aplicaciones desde backends de almacenamiento HDFS y S3. Simplemente especificando el protocolo apropiado, los desarrolladores pueden cambiar sin esfuerzo aplicaciones de Hadoop al almacenamiento de objetos moderno. El esquema de protocolo para S3 se indica como s3a://, mientras que para HDFS se indica como hdfs://.

Beneficios de la migración

Es posible hablar extensamente sobre los beneficios de migrar de Hadoop al almacenamiento de objetos moderno. Si está leyendo esto, ya es consciente de que sin la migración de plataformas heredadas como Hadoop, los avances en IA y otros productos de datos modernos probablemente quedarán fuera de la mesa. La razón se reduce al rendimiento y la escala.


No hay absolutamente ninguna duda de que las cargas de trabajo modernas requieren un rendimiento excepcional para competir con el volumen de datos que se procesan y la complejidad de las tareas que ahora se requieren. Cuando el rendimiento no se trata sólo de una evaluación comparativa vanidosa, sino de un requisito estricto, el campo de contendientes para los reemplazos de Hadoop cae dramáticamente .


El otro elemento que impulsa las migraciones es la escala nativa de la nube. Cuando el concepto de nube es menos una ubicación física y más una modelo operativo Es posible hacer cosas como implementar una pila de datos completa en minutos desde un único archivo .yaml. Una implementación tan rápida que haría caer de la silla a cualquier ingeniero de Hadoop.


Parte integrante de este concepto son los beneficios económicos que se obtienen al liberarse del bloqueo del proveedor, lo que permite a una organización elegir las mejores opciones para cargas de trabajo específicas. Sin mencionar que la liberación de mantener tres copias separadas de los datos para protegerlos es cosa del pasado con replicación activo-activo y codificación de borrado. Invertir en tecnología preparada para el futuro generalmente también significa que es más fácil encontrar y reclutar profesionales talentosos para trabajar en su infraestructura. La gente quiere trabajar en cosas que impulsen un negocio y no hay casi nada que lo haga mejor que datos . Juntos, estos factores contribuyen a una pila de datos que no sólo es más rápida y económica, sino que también se adapta mejor a las necesidades basadas en datos de hoy y del futuro.

Empezando

Antes de profundizar en los detalles de nuestra arquitectura, necesitará tener algunos componentes en funcionamiento. Para migrar fuera de Hadoop, obviamente deberá haberlo instalado para empezar. Si desea simular esta experiencia, puede comenzar este tutorial configurando la distribución Hortonworks de Hadoop aquí .


De lo contrario, puede comenzar con los siguientes pasos de instalación:


  1. Configurar Ambari: A continuación, instalar Ambari , que simplificará la gestión de sus servicios al configurar YARN automáticamente para usted. Ambari proporciona un panel fácil de usar para administrar servicios en el ecosistema Hadoop y mantener todo funcionando sin problemas.


  2. Instale Apache Spark: Spark es esencial para procesar datos a gran escala. Siga el instalación estándar procedimientos para poner Spark en funcionamiento.


  3. Instale MinIO : Dependiendo de su entorno, puede elegir entre dos enfoques de instalación: Kubernetes o Carta de timón .


Después de instalar con éxito estos elementos, puede configurar Spark y Hive para usar MinIO en lugar de HDFS. Navegue a la interfaz de usuario de Ambari http://<ambari-server>:8080/ e inicie sesión con las credenciales predeterminadas: username: admin, password: admin ,



En Ambari, navegue hasta servicios, luego HDFS y luego hasta el panel Configuraciones como se muestra en la captura de pantalla siguiente. En esta sección, configurará Ambari para usar S3a con MinIO en lugar de HDFS.



Desplácese hacia abajo y navegue hasta Custom core-site . Aquí es donde configurará S3a.



 sudo pip install yq alias kv-pairify='yq ".configuration[]" | jq ".[]" | jq -r ".name + \"=\" + .value"'


A partir de aquí, tu configuración dependerá de tu infraestructura. Pero lo siguiente podría representar una forma para que core-site.xml configure S3a con MinIO ejecutándose en 12 nodos y 1,2 TiB de memoria.


 cat ${HADOOP_CONF_DIR}/core-site.xml | kv-pairify | grep "mapred" mapred.maxthreads.generate.mapoutput=2 # Num threads to write map outputs mapred.maxthreads.partition.closer=0 # Asynchronous map flushers mapreduce.fileoutputcommitter.algorithm.version=2 # Use the latest committer version mapreduce.job.reduce.slowstart.completedmaps=0.99 # 99% map, then reduce mapreduce.reduce.shuffle.input.buffer.percent=0.9 # Min % buffer in RAM mapreduce.reduce.shuffle.merge.percent=0.9 # Minimum % merges in RAM mapreduce.reduce.speculative=false # Disable speculation for reducing mapreduce.task.io.sort.factor=999 # Threshold before writing to drive mapreduce.task.sort.spill.percent=0.9 # Minimum % before spilling to drive


Hay bastantes optimizaciones que se pueden explorar consultando la documentación sobre este patrón de migración. aquí , y también en la documentación de Hadoop en S3 aquí y aquí .


Reinicie todo cuando esté satisfecho con la configuración.



También deberás navegar hasta el panel de configuración de Spark2.



Desplácese hacia abajo hasta Custom spark-defaults y agregue la siguiente propiedad para configurar con MinIO:



 spark.hadoop.fs.s3a.access.key minio spark.hadoop.fs.s3a.secret.key minio123 spark.hadoop.fs.s3a.path.style.access true spark.hadoop.fs.s3a.block.size 512M spark.hadoop.fs.s3a.buffer.dir ${hadoop.tmp.dir}/s3a spark.hadoop.fs.s3a.committer.magic.enabled false spark.hadoop.fs.s3a.committer.name directory spark.hadoop.fs.s3a.committer.staging.abort.pending.uploads true spark.hadoop.fs.s3a.committer.staging.conflict-mode append spark.hadoop.fs.s3a.committer.staging.tmp.path /tmp/staging spark.hadoop.fs.s3a.committer.staging.unique-filenames true spark.hadoop.fs.s3a.committer.threads 2048 # number of threads writing to MinIO spark.hadoop.fs.s3a.connection.establish.timeout 5000 spark.hadoop.fs.s3a.connection.maximum 8192 # maximum number of concurrent conns spark.hadoop.fs.s3a.connection.ssl.enabled false spark.hadoop.fs.s3a.connection.timeout 200000 spark.hadoop.fs.s3a.endpoint http://minio:9000 spark.hadoop.fs.s3a.fast.upload.active.blocks 2048 # number of parallel uploads spark.hadoop.fs.s3a.fast.upload.buffer disk # use disk as the buffer for uploads spark.hadoop.fs.s3a.fast.upload true # turn on fast upload mode spark.hadoop.fs.s3a.impl org.apache.hadoop.spark.hadoop.fs.s3a.S3AFileSystem spark.hadoop.fs.s3a.max.total.tasks 2048 # maximum number of parallel tasks spark.hadoop.fs.s3a.multipart.size 512M # size of each multipart chunk spark.hadoop.fs.s3a.multipart.threshold 512M # size before using multipart uploads spark.hadoop.fs.s3a.socket.recv.buffer 65536 # read socket buffer hint spark.hadoop.fs.s3a.socket.send.buffer 65536 # write socket buffer hint spark.hadoop.fs.s3a.threads.max 2048 # maximum number of threads for S3A


Reinicie todo después de que se hayan aplicado los cambios de configuración.



Navegue hasta el panel de Hive para finalizar la configuración.



Desplácese hacia abajo hasta Custom hive-site y agregue la siguiente propiedad:




 hive.blobstore.use.blobstore.as.scratchdir=true hive.exec.input.listing.max.threads=50 hive.load.dynamic.partitions.thread=25 hive.metastore.fshandler.threads=50 hive.mv.files.threads=40 mapreduce.input.fileinputformat.list-status.num-threads=50


Puede encontrar más información de configuración de ajuste aquí . Reinicie todo después de que se hayan realizado los cambios de configuración.



Eso es todo, ahora puedes probar tu integración.

Explora por tu cuenta

Esta publicación de blog describe un enfoque moderno para migrar desde Hadoop sin la necesidad de revisar completamente sus sistemas existentes. Al aprovechar Kubernetes para administrar Apache Spark y Apache Hive, e integrar MinIO para el almacenamiento de objetos con estado, las organizaciones pueden lograr una arquitectura equilibrada que admita el escalamiento dinámico y la utilización eficiente de los recursos. Esta configuración no sólo conserva sino que mejora las capacidades de sus entornos de procesamiento de datos, haciéndolos más sólidos y preparados para el futuro.


Con MinIO, usted se beneficia de una solución de almacenamiento que ofrece alto rendimiento en hardware básico, reduce los costos mediante la codificación de borrado (eliminando la redundancia de la replicación de datos de Hadoop) y evita limitaciones como la dependencia de proveedores y la necesidad de almacenes de metadatos basados en Cassandra. Estas ventajas son cruciales para las organizaciones que buscan aprovechar cargas de trabajo avanzadas de IA/ML sin descartar los elementos centrales de sus sistemas de datos existentes.


No dude en comunicarse para obtener discusiones más detalladas u orientación específica sobre cómo puede adaptar esta estrategia de migración para satisfacer las necesidades únicas de su organización. Ya sea por correo electrónico a [email protected] o en nuestra comunidad Flojo canal, estamos aquí para ayudarle a aprovechar al máximo sus inversiones en infraestructura de datos.