Optimización del rendimiento de Azure Integration Runtime

Los flujos de datos se ejecutan en clústeres de Spark que se activan en tiempo de ejecución. La configuración del clúster que se usa se define en el entorno de ejecución de integración (IR) de la actividad. Hay tres consideraciones de rendimiento que se deben tener en cuenta a la hora de definir el entorno de ejecución de integración: el tipo de clúster, el tamaño del clúster y el período de vida.

Para obtener más información sobre cómo crear un entorno de Integration Runtime, consulte Integration Runtime.

La manera más fácil de empezar a trabajar con los entornos de ejecución de integración de flujo de datos es elegir los tamaños pequeño, mediano o grande en el selector de tamaño de proceso. Consulte las asignaciones para las configuraciones de clúster para esos tamaños a continuación.

Tamaño del clúster

Los flujos de datos distribuyen el procesamiento de datos en diferentes núcleos de un clúster de Spark para realizar operaciones en paralelo. Un clúster de Spark con más núcleos aumenta el número de núcleos en el entorno de proceso. Más núcleos aumentan la capacidad de procesamiento del flujo de datos. El aumento del tamaño del clúster suele ser una forma sencilla de reducir el tiempo de procesamiento.

El tamaño de clúster predeterminado es de cuatro núcleos de controlador y cuatro núcleos de trabajo (pequeño). A medida que se procesan más datos, se recomiendan clústeres más grandes. A continuación se muestran las opciones de tamaño posibles:

Núcleos de trabajo Núcleos de controlador Total Cores (Núcleos totales) Notas
4 4 8 Pequeño
8 8 16 Media
16 16 32 Grande
32 16 48
64 16 80
128 16 144
256 16 272

El precio de los flujos de datos se calcula en horas de núcleo virtual, por lo que se tiene en cuenta tanto el tamaño del clúster como el tiempo de ejecución. A medida que escale verticalmente, aumentará el costo por minuto del clúster, pero se reducirá el tiempo total.

Sugerencia

Existe un punto máximo en el que el tamaño de un clúster deja de afectar al rendimiento de un flujo de datos. En función del tamaño de los datos, hay un punto en el que el aumento del tamaño de un clúster dejará de mejorar el rendimiento. Por ejemplo, si tiene más núcleos que particiones de datos, agregar más núcleos no ayudará más. Un procedimiento recomendado es comenzar con un tamaño pequeño y escalar verticalmente hasta satisfacer las necesidades de rendimiento.

Partición aleatoria personalizada

El flujo de datos divide los datos en particiones y los transforma mediante diferentes procesos. Si el tamaño de los datos de una partición es mayor que la que el proceso puede contener en memoria, este produce errores OOM (memoria insuficiente). Si el flujo de datos contiene grandes cantidades de datos con combinaciones o agregaciones, puede intentar cambiar particiones aleatorias de forma incremental. Puede establecerlas de 50 hasta 2000 para evitar errores OOM. Las propiedades personalizadas de proceso en tiempo de ejecución del flujo de datos son una manera de controlar los requisitos del proceso. El nombre de la propiedad es Shuffle partitions y es de tipo entero. Esta personalización solo se debe usar en escenarios conocidos; de lo contrario, puede provocar errores innecesarios del flujo de datos.

Al aumentar las particiones aleatorias, asegúrese de que los datos se repartan bien. Por ejemplo, unos 1,5 GB de datos por partición. Si los datos están sesgados, aumentar las "particiones aleatorias" no será útil. Por ejemplo, si tiene 500 GB de datos, debe funcionar un valor entre 400 y 500. El límite predeterminado para las particiones aleatorias es de 200, que funciona bien para aproximadamente 300 GB de datos.

  1. En el portal de ADF, en Administrar, seleccione un tiempo de ejecución de integración personalizado y vaya al modo de edición.
  2. En la pestaña del tiempo de ejecución del flujo de datos, vaya a la sección Propiedades personalizadas de proceso.
  3. Seleccione Shuffle Partitions como nombre de la propiedad y el valor de entrada que prefiera: 250, 500, etc.

Para ello, edite el archivo JSON del tiempo de ejecución agregando una matriz con el nombre de propiedad y el valor después de una propiedad existente como cleanup.

Período de vida

De forma predeterminada, cada actividad de flujo de datos pone en marcha un nuevo clúster de Spark en función de la configuración de Azure IR. El clúster tarda unos minutos en iniciar su actividad y el procesamiento de datos no puede iniciarse hasta que se complete. Si las canalizaciones contienen varios flujos de datos secuenciales, puede habilitar un valor de período de vida (TTL). Si se especifica un valor de período de vida, el clúster se mantiene activo durante un determinado período de tiempo después de que se complete la ejecución. Si un nuevo trabajo comienza a usar el IR durante el tiempo de TTL, volverá a usar el clúster existente y el tiempo de inicio de actividad se reducirá drásticamente. Una vez completado el segundo trabajo, el clúster permanecerá activo de nuevo durante el tiempo de TTL.

Sin embargo, si la mayoría de los flujos de datos se ejecutan en paralelo, no se recomienda habilitar TTL para las instancia de IR que se usa para esas actividades. Solo se puede ejecutar un trabajo en un único clúster cada vez. Si hay un clúster disponible, pero se inician dos flujos de datos, solo uno usará el clúster activo. El segundo trabajo pondrá en marcha su propio clúster aislado.

Nota:

El período de vida no está disponible cuando se usa el entorno de ejecución de integración de resolución automática (predeterminado).

Vea el resto de artículos sobre Data Flow relacionados con el rendimiento: