Guía de escalado paralelo de Amazon Redshift e resultados das probas

Guía de escalado paralelo de Amazon Redshift e resultados das probas

En Skyeng usamos Amazon Redshift, incluíndo o escalado paralelo, polo que nos pareceu interesante este artigo de Stefan Gromoll, fundador de dotgo.com, para intermix.io. Despois da tradución, un pouco da nosa experiencia do enxeñeiro de datos Daniyar Belkhodzhaev.

Amazon Redshift Architecture permite escalar engadindo novos nodos ao clúster. A necesidade de facer fronte a un número máximo de solicitudes pode levar a un sobreabastecemento de nós. A escala de simultaneidade, en lugar de engadir novos nodos, aumenta a potencia de cálculo segundo sexa necesario.

O escalado paralelo de Amazon Redshift ofrece aos clústeres Redshift capacidade adicional para xestionar os volumes de solicitudes máximas. Funciona movendo solicitudes a novos clústeres "paralelos" en segundo plano. As solicitudes envíanse en función da configuración e das regras de WLM.

O prezo de escalado paralelo baséase nun modelo de crédito cun nivel gratuíto. Por riba dos créditos gratuítos, o pago baséase no momento en que o Parallel Scaling Cluster procesa as solicitudes.

O autor probou o escalado paralelo nun dos clústeres internos. Nesta publicación, falará sobre os resultados das probas e dará consellos sobre como comezar.

Requisitos do clúster

Para usar o escalado paralelo, o seu clúster de Amazon Redshift debe cumprir os seguintes requisitos:

- Plataforma: EC2-VPC;
- Tipo de nodo: dc2.8xlarge, ds2.8xlarge, dc2.grande ou ds2.xlarge;
- Número de nodos: de 2 a 32 (non se admiten clusters de nodos únicos).

Tipos de solicitude aceptables

O escalado paralelo non é adecuado para todo tipo de consultas. Na primeira versión, só procesa solicitudes de lectura que cumpran tres condicións:

— As consultas SELECT son de só lectura (aínda que están previstos máis tipos);
— a consulta non fai referencia a unha táboa co estilo de ordenación INTERLEAVED;
- A consulta non usa Amazon Redshift Spectrum para facer referencia a táboas externas.

Para ser encamiñada ao clúster de escalado paralelo, a solicitude debe estar en cola. Ademais, consultas aptas para a cola SQA (Short Query Acceleration), non se executará en clústeres a escala paralela.

As colas e SQA requiren unha configuración adecuada Redshift Xestión da carga de traballo (WLM). Recomendamos optimizar primeiro o teu WLM; isto reducirá a necesidade de escalado paralelo. E isto é importante porque a escala paralela só é gratuíta durante un determinado número de horas. AWS afirma que o escalado paralelo será gratuíto para o 97% dos clientes, o que nos leva á cuestión dos prezos.

Custo de escalado paralelo

AWS ofrece un modelo de crédito para escalado paralelo. Cada clúster activo Amazon RedShift Acumula créditos por hora, ata unha hora de créditos de escala paralela gratuítos por día.

Só pagas cando o teu uso de clústeres de escala paralela supera a cantidade de créditos que recibiches.

O custo calcúlase a unha taxa por segundo baixo demanda para un clúster paralelo que se utiliza por riba da tarifa gratuíta. Só se lle cobra durante a duración das súas solicitudes, cun mínimo dun minuto cada vez que se activa un clúster de escala paralela. A taxa por segundo baixo demanda calcúlase en función dos principios xerais de prezos Amazon RedShift, é dicir, depende do tipo de nodo e do número de nodos do teu clúster.

Iniciando escalado paralelo

O escalado paralelo desenvólvese para cada cola WLM. Vaia á consola AWS Redshift e seleccione Xestión de carga de traballo no menú de navegación da esquerda. Seleccione o grupo de parámetros WLM do seu clúster no seguinte menú despregable.

Verá unha nova columna chamada "Modo de escalado de simultaneidade" xunto a cada cola. O valor predeterminado é "Desactivado". Fai clic en "Editar" e poderás cambiar a configuración de cada cola.

Guía de escalado paralelo de Amazon Redshift e resultados das probas

Configuración

O escalado paralelo funciona reenviando as solicitudes adecuadas a novos clústeres dedicados. Os novos clústeres teñen o mesmo tamaño (tipo e número de nodos) que o clúster principal.

O número predeterminado de clústeres utilizados para a escala paralela é un (1), coa posibilidade de configurar ata un total de dez (10) clústeres.
O número total de clústeres para a escala paralela pódese establecer mediante o parámetro max_concurrency_scaling_clusters. O aumento do valor deste parámetro proporciona clústeres redundantes adicionais.

Guía de escalado paralelo de Amazon Redshift e resultados das probas

Seguimento

Hai varios gráficos adicionais dispoñibles na consola AWS Redshift. O gráfico de clústeres de escalado de simultaneidade máximo configurado mostra o valor de max_concurrency_scaling_clusters ao longo do tempo.

Guía de escalado paralelo de Amazon Redshift e resultados das probas

O número de clústeres de escala activos móstrase na interface de usuario na sección "Actividade de escalado de simultaneidade":

Guía de escalado paralelo de Amazon Redshift e resultados das probas

Na pestana Consultas, hai unha columna que indica se a consulta se executou no clúster principal ou no clúster de escalado paralelo:

Guía de escalado paralelo de Amazon Redshift e resultados das probas

Independentemente de que unha consulta particular se executou no clúster principal ou a través dun clúster de escalado paralelo, gárdase en stl_query.concurrency_scaling_status.

Guía de escalado paralelo de Amazon Redshift e resultados das probas

Un valor de 1 indica que a consulta se executou no clúster de escala paralela, mentres que outros valores indican que se executou no clúster primario.

Exemplo:

Guía de escalado paralelo de Amazon Redshift e resultados das probas

A información de escalado de simultaneidade tamén se almacena nalgunhas outras táboas e vistas, como SVCS_CONCURRENCY_SCALING_USAGE. Ademais, hai unha serie de táboas de catálogo que almacenan información sobre a escala paralela.

Descubrimentos

Os autores comezaron a escalar en paralelo para unha cola do clúster interno aproximadamente ás 18:30:00 GMT do 29.03.2019/3/20. Cambiouse o parámetro max_concurrency_scaling_clusters a 30 aproximadamente ás 00:29.03.2019:XNUMX do XNUMX/XNUMX/XNUMX.

Para simular unha cola de solicitudes, reducimos o número de espazos para esta cola de 15 a 5.

A continuación móstrase un cadro de control de intermix.io que mostra o número de solicitudes en execución e en cola despois de reducir o número de slots.

Guía de escalado paralelo de Amazon Redshift e resultados das probas

Vemos que o tempo de espera das solicitudes na cola aumentou, sendo o tempo máximo superior a 5 minutos.

Guía de escalado paralelo de Amazon Redshift e resultados das probas

Aquí tes a información relevante da consola de AWS sobre o que pasou durante este tempo:

Guía de escalado paralelo de Amazon Redshift e resultados das probas

Redshift lanzou tres (3) clústeres de escala paralelos tal e como están configurados. Parece que estes clústeres foron infrautilizados, aínda que moitas solicitudes do noso clúster estaban en cola.

O gráfico de uso correlaciona co gráfico de actividade de escala:

Guía de escalado paralelo de Amazon Redshift e resultados das probas

Despois dunhas horas, os autores comprobaron a cola e parecía que 6 solicitudes se estaban executando en escala paralela. Tamén probamos aleatoriamente dúas solicitudes a través da interface de usuario. Non comprobamos como usar estes valores cando varios clústeres paralelos están activos á vez.

Guía de escalado paralelo de Amazon Redshift e resultados das probas

Descubrimentos

O escalado paralelo pode reducir o tempo que pasan as solicitudes na cola durante os picos de carga.

Segundo os resultados da proba básica, resultou que a situación coas solicitudes de carga mellorou parcialmente. Non obstante, o escalado paralelo por si só non resolveu todos os problemas de concorrencia.

Isto débese a restricións sobre os tipos de consultas que poden usar a escala paralela. Por exemplo, os autores teñen moitas táboas con claves de ordenación entrelazadas e a maior parte da nosa carga de traballo é escribir.

Aínda que o escalado paralelo non é unha solución universal para configurar WLM, usar esta función é sinxelo e directo.

Polo tanto, o autor recomenda usalo para as súas filas de WLM. Comeza cun clúster paralelo e monitoriza a carga máxima a través da consola para determinar se os novos clústeres se están a utilizar plenamente.

A medida que AWS engade compatibilidade con tipos e táboas de consulta adicionais, o escalado paralelo debería facerse progresivamente cada vez máis eficiente.

Comentario de Daniyar Belkhodzhaev, enxeñeiro de datos de Skyeng

En Skyeng tamén notamos inmediatamente a posibilidade emerxente de escalado paralelo.
A funcionalidade é moi atractiva, sobre todo tendo en conta que AWS estima que a maioría dos usuarios nin sequera terán que pagar extra por ela.

Aconteceu que a mediados de abril tivemos unha inusual ráfaga de solicitudes ao clúster Redshift. Durante este período, a miúdo recorremos á escala de simultaneidade; ás veces, un clúster adicional funcionaba as 24 horas do día sen parar.

Isto fixo posible, se non resolver completamente o problema coas colas, polo menos facer a situación aceptable.

As nosas observacións coinciden en gran medida coas impresións dos mozos de intermix.io.

Tamén observamos que aínda que había solicitudes agardando na cola, non todas as solicitudes foron reenviadas inmediatamente ao clúster paralelo. Ao parecer, isto ocorre porque o clúster paralelo aínda tarda en comezar. Como resultado, durante os picos de carga a curto prazo aínda temos pequenas colas, e as alarmas correspondentes teñen tempo para activarse.

Despois de desfacernos de cargas anormais en abril, nós, como esperaba AWS, entramos no modo de uso ocasional, dentro da norma gratuíta.
Pode realizar un seguimento dos seus custos de escalado paralelo en AWS Cost Explorer. Debe seleccionar Servizo - Redshift, Tipo de uso - CS, por exemplo USW2-CS:dc2.large.

Podes ler máis sobre os prezos en ruso здесь.

Fonte: www.habr.com

Engadir un comentario