El coordinador apoya la implementación conjunta de K8 y YARN, Xiaohongshu comparte la práctica de la implementación conjunta fuera de línea

Introducción a los antecedentes

Koordinator es un proyecto de código abierto, incubado y nacido a partir de los años de experiencia acumulada de Alibaba en el campo de la programación de contenedores. Actualmente admite un despliegue mixto fuera de línea dentro del ecosistema K8s. Sin embargo, fuera del ecosistema K8s, todavía hay un número considerable de usuarios. que utilizan tareas de big data.Se ejecuta en un sistema de gestión de recursos como [1] . Aunque algunos motores informáticos actualmente proporcionan operadores K8 para conectar tareas al ecosistema K8, es innegable que el ecosistema YARN actual aún mantiene un cierto grado de actividad. Un ejemplo típico es que una serie de proveedores de nube convencionales, incluido Alibaba Cloud, aún mantienen Proporcionar productos [2] para ayudar a los usuarios a enviar trabajos de big data a YARN para su ejecución, lo cual es evidente por la popularidad del producto.

Xiaohongshu es un miembro activo de la comunidad Koordinator. Para enriquecer aún más los escenarios de implementación conjunta fuera de línea respaldados por Koordinator, la comunidad, junto con los desarrolladores de Alibaba Cloud, Xiaohongshu y Ant Financial, lanzaron la implementación conjunta de Hadoop YARN y K8s. Proyecto. Admite el suministro de recursos por lotes sobrevendidos a Hadoop YARN para mejorar aún más la eficiencia del uso de recursos del clúster. Este proyecto se ha puesto oficialmente en uso en el entorno de producción de Xiaohongshu.

Principios técnicos

principios generales

Antes de esto, la industria ya había tenido algunas prácticas internas sobre la implementación híbrida de K8 y YARN. Sin embargo, debido a las limitaciones de los escenarios de implementación, la mayoría de los métodos de implementación han realizado modificaciones intrusivas considerables al propio sistema YARN. En términos de operación, mantenimiento e iteración, no lo suficientemente amigable para los usuarios comunes. Para permitir que más usuarios disfruten de los dividendos de la tecnología de código abierto de la comunidad, el diseño de Koordinator seguirá los siguientes principios.

  • La entrada de envío para trabajos fuera de línea sigue siendo YARN.
  • Basado en la versión de código abierto de Hadoop YARN, en principio no se realizan modificaciones intrusivas en YARN.
  • Los recursos de coubicación proporcionados por Koordinator pueden ser utilizados tanto por K8s Pods como por tareas YARN. Pueden coexistir diferentes tipos de aplicaciones fuera de línea en el mismo nodo.
  • Koordlet gestiona de manera uniforme las políticas de QoS de una sola máquina y son compatibles con el tiempo de ejecución de las tareas de YARN.

Diseño

ResourceManager y NodeManger son los componentes centrales de YARN: ResourceManager es responsable de recibir tareas y programación de recursos en el lado de administración y control, y NodeManager es responsable de la gestión del ciclo de vida de las tareas. En el escenario híbrido de YARN y K8, RM se seguirá implementando de forma independiente como componente central del clúster de YARN, y NM se implementará en forma de contenedor.

Koordinator agrega el módulo koord-yarn-operator, que es responsable de sincronizar los recursos de Batch con YARN RM. Para administrar los recursos de manera más delicada, las tareas de YARN serán independientes de la administración de recursos de NM. Durante la implementación, NM solo necesita solicitar recursos de implementación conjunta por lotes de acuerdo con sus propios gastos. El uso de recursos de las tareas de YARN se administra a través de cgroup (modo LinuxContainerExecutor). La ruta de cgroup está bajo besteffort Pod QoS para garantizar que se pueda administrar bajo el grupo besteffort como otros Pods K8.

Actualmente, koodlet admite una serie de políticas de QoS en una sola máquina, que también deben adaptarse a escenarios de YARN. Para los parámetros de aislamiento de recursos, como identidad de grupo, calidad de servicio de la memoria, aislamiento de caché L3, etc., el koordlet se adaptará de acuerdo con el nivel de cgroup diseñado. Para estrategias dinámicas como desalojo y supresión, koordlet agregará un nuevo módulo complementario koord-yarn-copilot, que se utiliza para conectar varios datos y operaciones en escenarios de YARN, incluida la recopilación de metainformación de tareas de YARN, la recopilación de indicadores de recursos y las operaciones de desalojo de tareas. , etc., todas las políticas de QoS aún se conservan en el koordlet, y los módulos internos relevantes del koordlet se conectarán a la interfaz koord-yarn-copilot en forma de complementos. Al mismo tiempo, el diseño de la interfaz de koord-yarn-copilot conservará un cierto grado de escalabilidad y podrá utilizarse para conectarse a otros marcos de recursos en el futuro.

Para obtener un diseño más detallado de la implementación híbrida de YARN y K8, consulte el documento de diseño de la comunidad [3] .

La práctica de coubicación fuera de línea de Xiaohongshu

conocimiento de los negocios

En el contexto de la reducción de costos y la mejora de la eficiencia, la comercialización interna de Xiaohongshu, la búsqueda comunitaria y otras empresas tienen una gran cantidad de tareas algorítmicas de Spark. Debido a la escasez de recursos del clúster fuera de línea, las tareas se han acumulado y no se pueden procesar de manera oportuna. Al mismo tiempo, el clúster en línea se encuentra en las horas pico de negocios y la tasa de uso de recursos es baja; por otro lado, una proporción considerable de la programación de recursos de tareas de Spark todavía se ejecuta en el programador YARN; según este status quo, combinado con Xiaohongshu capacidades existentes en la coubicación fuera de línea, al abrir el programador K8s La vista de recursos con el programador YARN y admite el desalojo granular de tareas de YARN y las estrategias de garantía de QoS en el lado de una sola máquina, lo que en última instancia permite que se utilice una gran cantidad de Spark sin ningún cambio en la entrada de envío de negocios fuera de línea y los hábitos de uso. Las tareas se ejecutan de manera estable en recursos inactivos en línea, lo que mejora efectivamente la utilización de los recursos del clúster en línea, alivia en gran medida la presión sobre los recursos comerciales y reduce efectivamente el costo del uso de recursos comerciales fuera de línea.

Según la experiencia práctica de Xiaohongshu, vale la pena compartir los siguientes puntos técnicos clave:

  • En respuesta al problema de cuello de botella en el rendimiento del disco causado por la reproducción aleatoria local, utilizamos la tecnología RemoteShuffleService para reducir la sobrecarga de IO del disco local, mejorar el rendimiento de IO y mejorar efectivamente la eficiencia y estabilidad de las operaciones comerciales fuera de línea. Fuera de línea versus en línea a nivel IO Problema de interferencia.
  • Los escenarios comerciales en los que Xiaohongshu participa en la coubicación fuera de línea son complejos. Además de los escenarios de Spark de big data, también existen otros escenarios comerciales como la transcodificación, el razonamiento fuera de línea y la capacitación. Para garantizar la estabilidad de Spark de alta calidad tiempo de ejecución de tareas, sincronizamos recursos en YARN, estrategias de desalojo de una sola máquina, estrategias de garantía de QoS, etc., hemos realizado una diferenciación de prioridades detallada y optimización de políticas, como: sobreinformes de recursos fuera de línea (para exprimir los recursos y mejorar la utilización ), manejo de conflictos de una sola máquina, conflictos de recursos o recursos fuera de línea que cumplen con los requisitos de desalojo y transcodificación de baja prioridad para aplicaciones fuera de línea con bajos requisitos de puntualidad, estrategias de garantía de QoS diferenciadas fuera de línea, etc. Combinando los métodos de optimización anteriores, finalmente se logra el funcionamiento estable y eficiente de las tareas de Spark y la utilización completa de los recursos.

Ingresos de implementación

Hasta ahora, la solución de coubicación fuera de línea de Xiaohongshu se ha implementado a gran escala y ha logrado los siguientes resultados comerciales:

  • Cubre decenas de miles de nodos de clúster en línea y proporciona de manera estable cientos de miles de recursos informáticos centrales para negocios fuera de línea.
  • La tasa de desalojo de tareas fuera de línea es inferior al 1% y los trabajos básicamente no se ven afectados después de que se mezclan.
  • La utilización promedio de la CPU de los clústeres ubicados conjuntamente aumenta entre un 8% y un 10%, y parte de la utilización promedio de la CPU puede alcanzar más del 45%, lo que mejora en gran medida la eficiencia del uso de los recursos del clúster.

Con el acceso continuo a escenarios comerciales incrementales, la escala de ingresos mencionada anteriormente continúa creciendo.

cómo utilizar

Las funciones relacionadas que respaldan la implementación híbrida de K8 y YARN básicamente se han completado. El equipo de Koordinator está trabajando arduamente para completar una serie de trabajos preparatorios antes del lanzamiento, ¡así que estad atentos!

Si también está interesado en participar en la cooperación y co-construcción del proyecto, o está interesado en el despliegue mixto de K8 y YARN, puede dejar un mensaje debajo del área de discusión especial de la comunidad [4] y nos comunicaremos con usted . lo antes posible. Formato de mensaje de referencia:

Persona de contacto (gihub-id/correo electrónico):, por ejemplo, @koordinator-dev

Nombre de la empresa/escuela/organización en la que trabaja/asiste/participa: por ejemplo, comunidad de coordinadores

Intención de participación comunitaria: por ejemplo, espero participar en I+D/aprender en grande datos y nube Co-ubicación nativa/implementación de la función de co-ubicación de K8s y YARN en entornos de producción/otros.

¿Cuáles son sus expectativas para la "implementación híbrida K8s y YARN":

Autores: Suo Zengzeng (Xiaohongshu), Song Zehui (Xiaohongshu), Zhang Zuowei (Alibaba Cloud)

Enlace original

Este artículo es contenido original de Alibaba Cloud y no puede reproducirse sin permiso.

Alibaba Cloud sufrió un grave fallo que afectó a todos los productos (ha sido restaurado). El sistema operativo ruso Aurora OS 5.0, una nueva interfaz de usuario, se presentó en Tumblr. Muchas empresas de Internet reclutaron urgentemente programadores de Hongmeng . .NET 8 es oficialmente GA, el último Versión LTS Tiempo UNIX A punto de ingresar a la era de los 1.7 mil millones (ya ingresó), Xiaomi anunció oficialmente que Xiaomi Vela es completamente de código abierto y el kernel subyacente es .NET 8 en NuttX Linux. El tamaño independiente se reduce en un 50%. FFmpeg 6.1 " Se lanza Heaviside". Microsoft lanza una nueva "aplicación para Windows"
{{o.nombre}}
{{m.nombre}}

おすすめ

転載: my.oschina.net/yunqi/blog/10143543