Uso del escalador automático para aplicaciones de Flink
El escalador automático del operador puede ayudar a reducir la contrapresión mediante la recopilación de métricas de los trabajos de Flink y el ajuste automático del paralelismo a nivel de vértice de los trabajos. A continuación se muestra un ejemplo de cómo podría ser su configuración:
apiVersion: flink.apache.org/v1beta1 kind: FlinkDeployment metadata: ... spec: ... flinkVersion: v1_18 flinkConfiguration: job.autoscaler.enabled: "true" job.autoscaler.stabilization.interval: 1m job.autoscaler.metrics.window: 5m job.autoscaler.target.utilization: "0.6" job.autoscaler.target.utilization.boundary: "0.2" job.autoscaler.restart.time: 2m job.autoscaler.catch-up.duration: 5m pipeline.max-parallelism: "720" ...
Esta configuración usa valores predeterminados para la última versión de Amazon EMR. Si utiliza otras versiones, es posible que tengan valores diferentes.
nota
A partir de Amazon EMR 7.2.0, no necesita incluir el prefijo kubernetes.operator
en la configuración. Si utiliza la versión 7.1.0 o una versión anterior, debe usar el prefijo antes de cada configuración. Por ejemplo, debe especificar kubernetes.operator.job.autoscaler.scaling.enabled
.
A continuación se indican las opciones de configuración del escalado automático.
job.autoscaler.scaling.enabled
: especifica si el escalador automático debe habilitar la ejecución del escalado de vértices. El valor predeterminado estrue
. Si deshabilita esta configuración, el escalador automático solo recopila métricas y evalúa el paralelismo sugerido para cada vértice, pero no actualiza los trabajos.job.autoscaler.stabilization.interval
: el periodo de estabilización en el que no se ejecutará ningún nuevo escalado. El tiempo predeterminado es 5 minutos.job.autoscaler.metrics.window
: el tamaño de la ventana de agregación de métricas de escalado. Cuanto más grande sea la ventana, mayor será la suavidad y la estabilidad, pero el escalador automático puede ser más lento a la hora de reaccionar ante los cambios repentinos de carga. El tiempo predeterminado es 15 minutos. Le recomendamos que experimente con un valor de entre 3 y 60 minutos.job.autoscaler.target.utilization
: el uso del vértice de destino para proporcionar un rendimiento estable del trabajo y algo de búfer para las fluctuaciones de carga. El valor predeterminado es0.7
, cuyo objetivo es una utilización o carga del 70 % para los vértices del trabajo.job.autoscaler.target.utilization.boundary
: el límite de uso del vértice de destino que sirve como búfer adicional para evitar el escalado inmediato en caso de fluctuaciones de carga. El valor predeterminado es0.3
, lo que significa que se permite una desviación del 30 % con respecto a la utilización objetivo antes de activar una acción de escalado.ob.autoscaler.restart.time
: el tiempo previsto para reiniciar la aplicación. El tiempo predeterminado es 5 minutos.job.autoscaler.catch-up.duration
: el tiempo previsto para la recuperación, es decir, procesar por completo cualquier atraso una vez finalizada la operación de escalado. El tiempo predeterminado es 5 minutos. Al reducir la duración de la recuperación, el escalador automático debe reservar más capacidad adicional para las acciones de escalado.pipeline.max-parallelism
: el paralelismo máximo que puede utilizar el escalador automático. El escalador automático ignora este límite si es superior al paralelismo máximo configurado en la configuración de Flink o directamente en cada operador. El valor predeterminado es -1. Tenga en cuenta que el escalador automático calcula el paralelismo como un divisor del número máximo de paralelismo, por lo que se recomienda elegir una configuración de paralelismo máximo que tenga muchos divisores en lugar de confiar en los valores predeterminados proporcionados por Flink. Recomendamos utilizar múltiplos de 60 para esta configuración, como 120, 180, 240, 360, 720, etc.
Para ver una página de referencia de configuración más detallada, consulte Configuración del escalador automático