Guía de escalado paralelo de Amazon Redshift y resultados de las pruebas

Guía de escalado paralelo de Amazon Redshift y resultados de las pruebas

En Skyeng utilizamos Amazon Redshift, incluido el escalado paralelo, por lo que nos pareció interesante este artículo de Stefan Gromoll, fundador de dotgo.com, para intermix.io. Después de la traducción, un poco de nuestra experiencia del ingeniero de datos Daniyar Belkhodzhaev.

Arquitectura de desplazamiento al rojo de Amazon permite escalar agregando nuevos nodos al cluster. La necesidad de hacer frente a un número máximo de solicitudes puede provocar un aprovisionamiento excesivo de nodos. El escalado de simultaneidad, a diferencia de agregar nuevos nodos, aumenta la potencia informática según sea necesario.

El escalado paralelo de Amazon Redshift brinda a los clústeres de Redshift capacidad adicional para manejar volúmenes máximos de solicitudes. Funciona moviendo solicitudes a nuevos clústeres "paralelos" en segundo plano. Las solicitudes se enrutan según la configuración y las reglas de WLM.

Los precios de escalamiento paralelo se basan en un modelo de crédito con un nivel gratuito. Por encima de los créditos gratuitos, el pago se basa en el tiempo que Parallel Scaling Cluster procesa las solicitudes.

El autor probó el escalado paralelo en uno de los grupos internos. En esta publicación, hablará sobre los resultados de las pruebas y dará consejos sobre cómo comenzar.

Requisitos del clúster

Para utilizar el escalado paralelo, su clúster de Amazon Redshift debe cumplir los siguientes requisitos:

- plataforma: EC2-VPC;
— tipo de nodo: dc2.8xlarge, ds2.8xlarge, dc2.large o ds2.xlarge;
— número de nodos: de 2 a 32 (no se admiten clústeres de un solo nodo).

Tipos de solicitud aceptables

El escalado paralelo no es adecuado para todos los tipos de consultas. En la primera versión, solo procesa solicitudes de lectura que cumplen tres condiciones:

— Las consultas SELECT son de sólo lectura (aunque se planean más tipos);
— la consulta no hace referencia a una tabla con el estilo de clasificación INTERLEAVED;
- La consulta no utiliza Amazon Redshift Spectrum para hacer referencia a tablas externas.

Para enrutarse al clúster de escalado paralelo, la solicitud debe estar en cola. Además, las consultas elegibles para la cola SQA (aceleración de consultas cortas), no se ejecutará en clústeres de escala paralela.

Las colas y SQA requieren una configuración adecuada Gestión de carga de trabajo Redshift (WLM). Recomendamos optimizar su WLM primero; esto reducirá la necesidad de escalado paralelo. Y esto es importante porque el escalado paralelo sólo es gratuito durante una determinada cantidad de horas. AWS afirma que el escalado paralelo será gratuito para el 97% de los clientes, lo que nos lleva a la cuestión de los precios.

Costo del escalado paralelo

AWS ofrece un modelo de crédito para escalamiento paralelo. Cada grupo activo Desplazamiento al rojo de Amazon Acumula créditos por hora, hasta una hora de créditos de escalado paralelo gratuitos por día.

Solo paga cuando el uso de Parallel Scaling Clusters excede la cantidad de créditos que ha recibido.

El costo se calcula a una tarifa por segundo bajo demanda para un clúster paralelo que se utiliza por encima de la tarifa gratuita. Solo se le cobra por la duración de sus solicitudes, con un cargo mínimo de un minuto cada vez que se activa un clúster de escalado paralelo. La tarifa por segundo bajo demanda se calcula según principios generales de fijación de precios. Desplazamiento al rojo de Amazon, es decir, depende del tipo de nodo y de la cantidad de nodos en su clúster.

Lanzamiento del escalado paralelo

El escalado paralelo se activa para cada cola WLM. Vaya a la consola de AWS Redshift y seleccione Gestión de carga de trabajo en el menú de navegación de la izquierda. Seleccione el grupo de parámetros WLM de su clúster en el siguiente menú desplegable.

Verá una nueva columna llamada "Modo de escalamiento de simultaneidad" al lado de cada cola. El valor predeterminado es "Desactivado". Haga clic en "Editar" y podrá cambiar la configuración de cada cola.

Guía de escalado paralelo de Amazon Redshift y resultados de las pruebas

Configuración

El escalado paralelo funciona enviando las solicitudes apropiadas a nuevos clústeres dedicados. Los nuevos clústeres tienen el mismo tamaño (tipo y número de nodos) que el clúster principal.

La cantidad predeterminada de clústeres utilizados para el escalado paralelo es uno (1), con la capacidad de configurar hasta un total de diez (10) clústeres.
El número total de clústeres para el escalado paralelo se puede establecer mediante el parámetro max_concurrency_scaling_clusters. Aumentar el valor de este parámetro proporciona clústeres redundantes adicionales.

Guía de escalado paralelo de Amazon Redshift y resultados de las pruebas

Monitoreo

Hay varios gráficos adicionales disponibles en la consola de AWS Redshift. El gráfico Máximo de clústeres de escalamiento de simultaneidad configurados muestra el valor de max_concurrency_scaling_clusters a lo largo del tiempo.

Guía de escalado paralelo de Amazon Redshift y resultados de las pruebas

La cantidad de clústeres de escalado activos se muestra en la interfaz de usuario en la sección "Actividad de escalado de simultaneidad":

Guía de escalado paralelo de Amazon Redshift y resultados de las pruebas

En la pestaña Consultas, hay una columna que indica si la consulta se ejecutó en el clúster principal o en el clúster de escalado paralelo:

Guía de escalado paralelo de Amazon Redshift y resultados de las pruebas

Independientemente de si una consulta en particular se ejecutó en el clúster principal o mediante un clúster de escalamiento paralelo, se almacena en stl_query.concurrency_scaling_status.

Guía de escalado paralelo de Amazon Redshift y resultados de las pruebas

Un valor de 1 indica que la consulta se ejecutó en el clúster de escala paralela, mientras que otros valores indican que se ejecutó en el clúster primario.

Ejemplo:

Guía de escalado paralelo de Amazon Redshift y resultados de las pruebas

La información de escalado de simultaneidad también se almacena en algunas otras tablas y vistas, como SVCS_CONCURRENCY_SCALING_USAGE. Además, hay una serie de tablas de catálogo que almacenan información sobre el escalado paralelo.

resultados

Los autores comenzaron el escalado paralelo para una cola en el clúster interno aproximadamente a las 18:30:00 GMT del 29.03.2019/3/20. Cambiaron el parámetro max_concurrency_scaling_clusters a 30 aproximadamente a las 00:29.03.2019:XNUMX del XNUMX/XNUMX/XNUMX.

Para simular una cola de solicitudes, reducimos el número de espacios para esta cola de 15 a 5.

A continuación se muestra un gráfico del panel de intermix.io que muestra la cantidad de solicitudes en ejecución y en cola después de reducir la cantidad de espacios.

Guía de escalado paralelo de Amazon Redshift y resultados de las pruebas

Vemos que el tiempo de espera de solicitudes en cola ha aumentado, siendo el tiempo máximo de más de 5 minutos.

Guía de escalado paralelo de Amazon Redshift y resultados de las pruebas

Aquí está la información relevante de la consola de AWS sobre lo sucedido durante este tiempo:

Guía de escalado paralelo de Amazon Redshift y resultados de las pruebas

Redshift lanzó tres (3) clústeres de escalamiento paralelo según lo configurado. Parece que estos clústeres estaban infrautilizados, aunque muchas solicitudes en nuestro clúster estaban en cola.

El gráfico de uso se correlaciona con el gráfico de actividad de escala:

Guía de escalado paralelo de Amazon Redshift y resultados de las pruebas

Después de unas horas, los autores verificaron la cola y parecía que se estaban ejecutando 6 solicitudes en escala paralela. También probamos aleatoriamente dos solicitudes a través de la interfaz de usuario. No hemos comprobado cómo utilizar estos valores cuando hay varios clústeres paralelos activos a la vez.

Guía de escalado paralelo de Amazon Redshift y resultados de las pruebas

Hallazgos

El escalado paralelo puede reducir el tiempo que las solicitudes pasan en la cola durante las cargas máximas.

Según los resultados de la prueba básica, resultó que la situación con las solicitudes de carga ha mejorado parcialmente. Sin embargo, el escalado paralelo por sí solo no resolvió todos los problemas de concurrencia.

Esto se debe a restricciones sobre los tipos de consultas que pueden utilizar el escalado paralelo. Por ejemplo, los autores tienen muchas tablas con claves de clasificación intercaladas y la mayor parte de nuestra carga de trabajo es escritura.

Aunque el escalado paralelo no es una solución universal para configurar WLM, utilizar esta función es sencillo y directo.

Por lo tanto, el autor recomienda usarlo para sus colas WLM. Comience con un clúster paralelo y supervise la carga máxima a través de la consola para determinar si los nuevos clústeres se están utilizando por completo.

A medida que AWS agrega soporte para tablas y tipos de consultas adicionales, el escalado paralelo debería volverse cada vez más eficiente.

Comentario de Daniyar Belkhodzhaev, ingeniero de datos de Skyeng

En Skyeng también notamos inmediatamente la posibilidad emergente de escalamiento paralelo.
La funcionalidad es muy atractiva, especialmente teniendo en cuenta que AWS estima que la mayoría de los usuarios ni siquiera tendrán que pagar más por ella.

Dio la casualidad de que a mediados de abril tuvimos una avalancha inusual de solicitudes al clúster Redshift. Durante este período, a menudo recurrimos al escalado de concurrencia; a veces, un clúster adicional trabajaba las 24 horas del día sin parar.

Esto hizo posible, si no resolver completamente el problema de las colas, al menos hacer que la situación fuera aceptable.

Nuestras observaciones coinciden en gran medida con las impresiones de los chicos de intermix.io.

También notamos que, aunque había solicitudes esperando en la cola, no todas las solicitudes se reenviaron inmediatamente al clúster paralelo. Aparentemente esto sucede porque el clúster paralelo todavía tarda en iniciarse. Como resultado, durante los picos de carga a corto plazo todavía tenemos pequeñas colas y las alarmas correspondientes tienen tiempo de activarse.

Después de deshacernos de las cargas anormales en abril, como esperaba AWS, ingresamos al modo de uso ocasional, dentro de la norma gratuita.
Puede realizar un seguimiento de sus costos de escalado paralelo en AWS Cost Explorer. Debe seleccionar Servicio - Redshift, Tipo de uso - CS, por ejemplo USW2-CS:dc2.large.

Puedes leer más sobre precios en ruso. aquí.

Fuente: habr.com

Añadir un comentario