Lanzamiento de Fluid 0.5: abra el camino hacia la expansión elástica en línea y la reducción de la caché de conjuntos de datos

Imagen de la cabeza.png

Autor | Universidad Gu Rong Nanjing PASALab, cofundador de Fluid Project
Fuente | Cuenta oficial nativa de Alibaba Cloud

Introducción : para resolver los puntos débiles de las aplicaciones con uso intensivo de datos, como big data e inteligencia artificial, en el escenario nativo de la nube, el acceso a fuentes de datos heterogéneas es complicado, la velocidad de E / S de separación de almacenamiento y cálculo es lenta, la escena La conciencia es débil y la programación es ineficiente. PASALab, la Universidad de Nanjing, Alibaba y Alluxio lanzaron conjuntamente el proyecto de código abierto Fluid en junio de 2020.

Fluid es una plataforma de soporte eficiente para aplicaciones con uso intensivo de datos en un entorno nativo de la nube. Desde el lanzamiento de código abierto del proyecto, ha atraído la atención de muchos expertos e ingenieros en campos relacionados. La comunidad ha seguido evolucionando gracias a los comentarios positivos de todos. Recientemente, se lanzó oficialmente Fluid 0.5. En esta versión, Fluid agregó y mejoró principalmente los siguientes tres aspectos:

  • Funciones de operación de conjuntos de datos enriquecidos, admiten expansión y contracción elástica en línea, respaldo y recuperación de metadatos.

  • Admite la configuración y el despliegue de diversos entornos para cumplir con los requisitos de configuración y despliegue personalizados del usuario.

  • Se ha agregado la implementación de un nuevo motor de almacenamiento en caché de datos para aumentar la elección del usuario de motores en la nube pública.

Dirección del proyecto de código abierto fluido :https://github.com/fluid-cloudnative/fluid

Los requisitos de desarrollo para estas tres funciones principales provienen de los comentarios de producción reales de muchos usuarios de la comunidad. Además, Fluid v0.5 también ha llevado a cabo algunas correcciones de errores y actualizaciones de documentos. ¡Bienvenido a experimentar Fluid v0.5!

Enlace de descarga de Fluidv0.5 :https://github.com/fluid-cloudnative/fluid/releases

La siguiente es una introducción adicional a las funciones de esta nueva versión.

Función de operación de conjunto de datos enriquecidos

En esta versión, Fluid se enfoca en enriquecer las funciones de operación relacionadas con el objeto abstracto principal-Conjunto de datos (conjunto de datos), de modo que las aplicaciones con uso intensivo de datos puedan utilizar mejor las funciones básicas de elasticidad nativa de la nube, observabilidad, etc., y mejorar la flexibilidad del usuario en los datos. gestión de conjuntos.

1. Expansión y contracción de la memoria caché elástica en línea del conjunto de datos

¡Esta es una característica que los usuarios de la comunidad estaban esperando! Antes de Fluid v0.5, si los usuarios desean ajustar las capacidades de almacenamiento en caché del conjunto de datos, deben desinstalar todos los motores de caché y volver a implementarlos. Este método requiere mucho tiempo y trabajo, y también se debe considerar el alto costo de toda la pérdida de caché de datos. Por lo tanto, en la nueva versión, brindamos soporte para la expansión elástica y la reducción de la caché para el conjunto de datos. Los usuarios pueden aumentar la capacidad de la caché de un determinado conjunto de datos sobre la marcha de acuerdo con los requisitos de su propio escenario. Acelerar el acceso a los datos (expansión de capacidad) o reducir la capacidad de caché (capacidad) de un conjunto de datos que se utiliza con poca frecuencia, para lograr una asignación de recursos más refinada y elástica y mejorar la utilización de los recursos. El controlador integrado de Fluid seleccionará el nodo de escala apropiado de acuerdo con la estrategia. Por ejemplo, combinará las tareas en ejecución en el nodo y la proporción de caché del nodo como condición de filtro al reducir la escala.

Para realizar la expansión y contracción elástica de la capacidad de almacenamiento en caché del conjunto de datos elásticos, el usuario solo necesita ejecutar el siguiente comando:

kubectl scale alluxioruntimes.data.fluid.io {datasetName}  --replicas={num}

El nombre del conjunto de datos corresponde al nombre del conjunto de datos y las réplicas especifican la cantidad de nodos de caché.

Video de demostración sobre el escalado manual del conjunto de datos y su efecto:http://cloud.video.taobao.com/play/u/2987821887/p/1/e/6/t/1/302459823704.mp4

Para obtener más detalles sobre la expansión y reducción manual del conjunto de datos, consulte el documento de muestra en Github .

2. Copia de seguridad y recuperación de metadatos

Esta función mejora la flexibilidad de la gestión fluida de metadatos de conjuntos de datos. El Fluid v0.4 anterior ya admite la carga de los metadatos del conjunto de datos (por ejemplo, el árbol de inodos del sistema de archivos) en el local, y registrará algunas estadísticas clave del conjunto de datos (por ejemplo, el tamaño de los datos y el número de archivos). Sin embargo, una vez que el usuario destruye el conjunto de datos local, esta información de metadatos también se perderá y el conjunto de datos debe recuperarse del sistema de almacenamiento subyacente nuevamente al reconstruir el conjunto de datos.

Por lo tanto, en Fluid v0.5, hemos agregado un nuevo objeto de recurso personalizado de K8, DataBackup, que proporciona a los usuarios una interfaz API declarativa para controlar el comportamiento de la copia de seguridad de datos. Un ejemplo simple de la construcción de un objeto de recurso personalizado de DataBackup es el siguiente:

apiVersion: data.fluid.io/v1alpha1
kind: DataBackup
metadata:
  name: hbase-backup
spec:
  dataset: hbase
  backupPath: pvc://<pvcName>/subpath1/subpath2/

Al crear el conjunto de datos nuevamente, solo necesita agregar un nuevo campo que especifique la ubicación del archivo de respaldo:

apiVersion: data.fluid.io/v1alpha1
kind: Dataset
metadata:
  name: hbase
spec:
  dataRestoreLocation:
    path: pvc://pvc-local/subpath1/
  mounts:
    - mountPoint:  https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/2.2.6/

En este momento, Fluid cargará primero los metadatos y las estadísticas del conjunto de datos desde el archivo de respaldo, mejorando así en gran medida la velocidad de carga de los metadatos.
 
Para obtener más detalles sobre el funcionamiento de la copia de seguridad y recuperación de metadatos de conjuntos de datos, consulte el documento de muestra en Github .

3. Optimización de la observabilidad del conjunto de datos

Fluid v0.5 mejora aún más la observabilidad del conjunto de datos, incluidas dos partes:

1) Combinar con Prometheus1.jpg

Esta función puede admitir la disponibilidad de conjuntos de datos y la recopilación de indicadores de rendimiento, y se puede visualizar a través de Grafana. Actualmente, se ha admitido la implementación de AlluxioRuntime. Los usuarios pueden comprender fácilmente los nodos que se pueden almacenar en caché, el espacio de la caché, la proporción de caché existente, la lectura remota, la lectura de cortocircuito y otros indicadores de rendimiento. Todo el proceso de configuración es muy simple, logrando el efecto de "listo para usar" para el sistema de monitoreo de conjuntos de datos.

Para un uso específico, consulte el documento de muestra en Github .

2) Nuevo índice de tasa de aciertos de caché de conjuntos de datos

Esta función puede identificar cuántos de los accesos totales al conjunto de datos en el último minuto llegan a la caché distribuida. Por un lado, este indicador puede ayudar a los usuarios a analizar los cuellos de botella de rendimiento en sus aplicaciones de uso intensivo de datos y cuantificar el efecto de Fluid en el flujo de trabajo de toda la aplicación; por otro lado, puede ayudar a los usuarios a mejorar el rendimiento de la aplicación y el uso de recursos de caché. Realizar compensaciones y tomar decisiones razonables de expansión y contracción.

A este indicador se le agrega Fuild v0.5 de Dataset.Status.CacheStateslos recursos del estado de Dataset CRD, específicamente incluyendo:

  • Proporción de aciertos de caché: el porcentaje de accesos afectados por el caché distribuido en el último minuto.

  • Proporción de aciertos locales: el porcentaje de aciertos de caché local en el último minuto.

  • Proporción de aciertos remotos: el porcentaje de aciertos de caché remota en el último minuto.

Nota: Para la caché distribuida, existen dos situaciones diferentes de aciertos de caché para los aciertos de datos. El acierto de caché local significa que el iniciador de la visita puede acceder directamente a los datos almacenados en caché en el mismo nodo. El acierto de caché remoto se refiere a que el iniciador de acceso necesita acceder a los datos almacenados en caché en otros nodos a través de la red.

En Fluid v0.5, los usuarios pueden usar los siguientes comandos para ver convenientemente los indicadores de proporción de aciertos de caché:

kubectl get dataset <dataset-name> -o wide
NAME        ...  CACHE HIT RATIO   AGE
<dataset-name> ...  86.2%           16m

Admite la implementación de configuraciones de múltiples entornos

Desde el lanzamiento de Fluid 0.4, hemos agregado más soporte para la implementación y configuración de Fluid en diversos entornos en función de los problemas y necesidades informados por los usuarios de la comunidad en la implementación real.

1. Admite el modo global de Fuse

En Fluid, los archivos remotos definidos en el objeto de recurso del conjunto de datos son programables, lo que significa que puede administrar la ubicación de los archivos remotos almacenados en caché en el clúster de Kubernetes de la misma forma que administra los pods. El Pod que realiza el cálculo puede acceder al archivo de datos a través del cliente Fuse. En la versión anterior de Fluid, el cliente Fuse siempre programa el nodo donde se encuentra la caché, pero los usuarios no pueden controlar libremente la programación de Fuse.

En Fluid v0.5, agregamos un modo de implementación global para Fuse. En este modo, Fuse se implementará globalmente en todos los nodos de forma predeterminada. Los usuarios también pueden influir en el resultado de la programación de Fuse especificando el nodeSelector de Fuse. Al mismo tiempo, se priorizará la implementación de la caché en nodos con una gran cantidad de pods informáticos.

El uso específico es muy simple, puede consultar el documento de muestra en Github .

2. Admite la configuración de HDFS a nivel de usuario

Muchos usuarios de la comunidad utilizan el sistema de almacenamiento en caché distribuido Alluxio  como motor de almacenamiento en caché para los conjuntos de datos de Fluid. En el caso de que el conjunto de datos se almacene de forma persistente en el sistema de archivos HDFS, para que Alluxio acceda normalmente al HDFS subyacente, el clúster de Alluxio debe obtener de antemano diversa información de configuración del HDFS.

En Fluid v0.5, usamos los recursos nativos de Kubernetes para brindar soporte para los escenarios anteriores. Los usuarios primero necesitan los archivos de configuración relacionados con HDFS (por ejemplo, hdfs-site.xmly core-site.xml) de una ConfigMapmanera para crear el entorno de Kubernetes, seguido de la creación de AlluxioRuntimeobjetos de recursos de referencia creados anteriormente ConfigMappara lograr las funciones anteriores.

AlluxioRuntime Un ejemplo de un objeto de recurso es el siguiente:

apiVersion: data.fluid.io/v1alpha1
kind: AlluxioRuntime
metadata:
  name: my-hdfs
spec:
  ...
  hadoopConfig: <configmap-name>
  ...

En este punto, el clúster Alluxio creado podrá acceder a los datos en el clúster HDFS normalmente. Para obtener más información, consulte el documento de muestra en Github .

Implementación del nuevo motor de almacenamiento en caché de datos

El Runtime de caché distribuido predeterminado utilizado por Fluid es Alluxio Runtime. Con el fin de satisfacer las necesidades de los usuarios en diferentes entornos para el sistema de caché, Fluid ha convertido el marco de acceso Runtime de caché distribuido en una arquitectura conectable en versiones anteriores. En Fluid v0.5, los colaboradores de la comunidad de Alibaba Cloud desarrollaron JindoRuntime basado en este marco y agregaron una implementación de motor de ejecución que admite la administración y el almacenamiento en caché de datos de Fluid Dataset. Los usuarios pueden usar el modo Cache de JindoFS en Fluid para acceder y almacenar en caché archivos remotos a través de JindoRuntime. El proceso de uso e implementación de JindoRuntime en Fluid es simple, compatible con el entorno nativo de K8 y se puede usar de inmediato.

para resumir

En Fluid v0.5, hemos enriquecido y mejorado las funciones y la experiencia del usuario de Fluid.

En primer lugar , Fluid v0.5 aumenta aún más el funcionamiento funcional del conjunto de datos:

  • Proporcione expansión y contracción elástica en línea de conjuntos de datos para lograr un control de asignación de recursos de clúster más flexible y preciso.

  • El CRD DataBackup recién agregado realiza la copia de seguridad y restauración de metadatos y otra información de conjuntos de datos, lo que ayuda a completar el reinicio rápido del sistema de almacenamiento en caché del conjunto de datos.

  • Se agrega un nuevo indicador de tasa de aciertos de caché para ayudar a los usuarios a cuantificar y analizar mejor el efecto de aceleración proporcionado por Fluid.

En segundo lugar , Fluid admite más modos y configuraciones de entorno para cumplir con los requisitos de implementación de escenarios más reales.

Finalmente , Fluid ha agregado Runtime-JindoRuntime de caché distribuido basado en JindoFS, que proporciona a los usuarios diferentes opciones de motor de caché en diversos entornos de implementación.

Continuaremos prestando atención y adoptando las sugerencias de la comunidad para promover el desarrollo a largo plazo del proyecto Fluid. Esperamos recibir más comentarios de usted.

Gracias

Gracias a los amigos de la comunidad que contribuyeron a esta versión. Incluyen a Wang Tao de Alibaba Cloud, Xie Yuandong de Tencent Cloud, Qiu Lingwei de China Telecom, Xu Zhihao, Hou Haojun, Chen Guowang y Chen Yuquan de la Universidad de Nanjing PASALab.

Sobre el Autor

El Dr. Gu Rong, investigador asociado del Departamento de Computación de la Universidad de Nanjing, miembro del cofundador del proyecto de código abierto Fluid, proyecto de código abierto Alluxio PMC, dirección de investigación del sistema de procesamiento de big data, ha publicado artículos en conferencias de revistas de vanguardia en TPDS , ICDE, JPDC, IPDPS, ICPP y otros campos Para el resto del artículo, presidió una serie de proyectos generales / proyectos para jóvenes de la Fundación Nacional de Ciencias Naturales de China y proyectos de financiación especiales de la Fundación de Ciencias Postdoctorales de China. Los resultados de la investigación se han aplicado a Alibaba, Baidu, ByteDance, Sinopec, Huatai Securities y otras empresas y proyectos de código abierto Apache Spark, Alluxio, ganó el primer premio de Jiangsu Science and Technology Award en 2018, y Youth Science and Technology Award of Jiangsu Computer Society en 2019, como miembro del Comité de Software de Sistema de la Sociedad China de Computación / Comité de Comunicación del Comité de Big Data, y Secretario General del Comité Especial de Big Data de la Sociedad de Computación de Jiangsu.

Supongo que te gusta

Origin blog.51cto.com/13778063/2668406
Recomendado
Clasificación