Guia de redimensionamento paralelo do Amazon Redshift e resultados de testes

imagem

Na Skyeng, usamos o Amazon Redshift, incluindo escala paralela; portanto, o artigo de Stefan Gromall, fundador do dotgo.com, para intermix.io, nos pareceu interessante. Após a transferência - um pouco da nossa experiência do engenheiro, de acordo com Daniyar Belkhodzhaev.

A arquitetura do Amazon Redshift permite o dimensionamento adicionando novos nós ao cluster. Ter que lidar com o número máximo de solicitações pode levar ao excesso de provisionamento de nós. O dimensionamento de simultaneidade, em contraste com a adição de novos nós, aumenta o poder de computação conforme necessário.

O escalonamento paralelo do Amazon Redshift oferece aos clusters do Redshift mais poder para lidar com solicitações de pico. Ele funciona transferindo solicitações para novos clusters "paralelos" em segundo plano. As solicitações são roteadas com base na configuração e nas regras do WLM.

Os preços da escala paralela são baseados em um modelo de crédito de uso livre. Acima da norma dos empréstimos gratuitos, o pagamento é baseado no momento em que o cluster de escalonamento paralelo processa solicitações.

O autor testou a escala paralela em um dos clusters internos. Neste post, ele falará sobre os resultados dos testes e dará dicas de como começar.

Requisitos de cluster


Para usar a escala paralela, um cluster do Amazon Redshift deve atender aos seguintes requisitos:

  • plataforma: EC2-VPC;
  • tipo de nó: dc2.8xlarge, ds2.8xlarge, dc2.large ou ds2.xlarge;
  • número de nós: de 2 a 32 (clusters com um nó não são suportados).

Tipos de solicitação válidos


A escala paralela não é adequada para todos os tipos de consultas. Na primeira versão, ele processa apenas solicitações de leitura que atendem a três condições:

  • Consultas SELECT somente leitura (embora mais tipos sejam planejados);
  • a consulta não se refere a uma tabela com o agrupamento INTERLEAVED;
  • a consulta não usa o Amazon Redshift Spectrum para fazer referência a tabelas externas.

Para rotear para um cluster de dimensionamento paralelo, a solicitação deve estar na fila. Além disso, as consultas adequadas para a fila SQA (Short Query Acceleration) não serão executadas em clusters de dimensionamento paralelo.

Filas e SQAs requerem a configuração correta do Redshift Workload Management (WLM) . Recomendamos que você otimize seu WLM primeiro - isso reduzirá a necessidade de dimensionamento paralelo. E isso é importante porque a escala paralela é gratuita apenas por um determinado número de horas. A AWS alega que a escala paralela será gratuita para 97% dos clientes, o que nos leva à questão do preço.

Custo de Escala Paralela


Para escala paralela, a AWS oferece um modelo de crédito. Cada cluster ativo do Amazon Redshift acumula empréstimos a cada hora, até uma hora de empréstimos gratuitos escaláveis ​​paralelos por dia.

Você paga apenas quando o uso de clusters de dimensionamento paralelo excede a quantidade de empréstimos recebidos.

O custo é calculado à taxa de demanda por segundo de um cluster paralelo usado além da taxa livre. O pagamento é feito somente durante a execução de suas solicitações, com um pagamento mínimo de um minuto, sempre que você ativar um cluster de dimensionamento paralelo. A taxa sob demanda por segundo é calculada com base nos princípios gerais dos preços do Amazon Redshift , ou seja, depende do tipo de nó e do número de nós no seu cluster.

Executando escala paralela


O dimensionamento paralelo é iniciado para cada fila do WLM. Vá para o console do AWS Redshift e selecione "Gerenciamento de carga de trabalho" no menu de navegação esquerdo. Selecione o grupo WLM do seu cluster no próximo menu suspenso.

Você verá uma nova coluna chamada "Modo de dimensionamento de simultaneidade" ao lado de cada fila. O valor padrão é "Desligado". Clique em "Alterar" e você pode alterar as configurações de cada fila.



Configuração


O dimensionamento paralelo funciona encaminhando consultas relevantes para novos clusters dedicados. Novos clusters têm o mesmo tamanho (tipo e número de nós) que o cluster principal.

O número padrão de clusters usados ​​para dimensionamento paralelo é um (1) com a capacidade de configurar um total de até dez (10) clusters.
O número total de clusters para dimensionamento paralelo pode ser configurado pelo parâmetro max_concurrency_scaling_clusters. Aumentar essa configuração fornece clusters redundantes adicionais.



Monitoramento


O console do AWS Redshift possui vários gráficos adicionais. O gráfico Máximo de clusters de dimensionamento de simultaneidade configurados exibe o valor de max_concurrency_scaling_clusters ao longo do tempo.



O número de clusters de dimensionamento ativos é exibido na seção "Atividade de dimensionamento de simultaneidade" na interface do usuário:



Na guia "Solicitações", há uma coluna mostrando se a solicitação foi executada no cluster principal ou no cluster de dimensionamento paralelo:



Independentemente de uma solicitação específica ter sido executada no cluster principal ou através de um cluster de dimensionamento paralelo, ela é armazenada em stl_query.concurrency_scaling_status.



Um valor 1 indica que a solicitação estava em execução em um cluster de dimensionamento paralelo, enquanto outros valores indicam que estava em execução no cluster principal.

Um exemplo:



Informações sobre a escala paralela também são armazenadas em algumas outras tabelas e visualizações, por exemplo, SVCS_CONCURRENCY_SCALING_USAGE. Além disso, existem várias tabelas de catálogos que armazenam informações sobre a escala paralela.

Resultados


Os autores lançaram o escalonamento paralelo para uma fila no cluster interno às aproximadamente 18:30 GMT em 29/03/2019 e alteraram o parâmetro max_concurrency_scaling_clusters para 3 aproximadamente às 20:30 29 de março de 2019.

Para simular a fila de solicitações e reduziu o número de slots para essa fila de 15 para 5.

A seguir, é apresentado um diagrama do painel intermix.io, mostrando o número de solicitações em execução e na fila após diminuir o número de slots.



Vimos que o tempo de espera para solicitações na fila aumentou, enquanto o tempo máximo é superior a 5 minutos.



Aqui estão as informações relevantes do console da AWS sobre o que aconteceu durante esse período:



O Redshift lançou três (3) clusters de dimensionamento paralelo conforme configurado. Parece que esses clusters não foram totalmente utilizados, mesmo que muitos dos pedidos em nosso cluster estivessem na fila.

O gráfico de uso está correlacionado com o gráfico de atividade de dimensionamento:



Após algumas horas, os autores verificaram a fila e parece que 6 solicitações foram executadas com escala paralela. Também verificamos seletivamente duas solicitações através da interface do usuário. Eles não verificaram como usar esses valores quando vários clusters paralelos estão ativos ao mesmo tempo.



Conclusões


A escala paralela pode reduzir o tempo de fila de solicitações durante picos de carga.

De acordo com os resultados do teste básico, verificou-se que a situação com pedidos de carregamento melhorou parcialmente. No entanto, a escala paralela por si só não resolveu todos os problemas com simultaneidade.

Isso ocorre devido a restrições nos tipos de consultas que podem usar a escala paralela. Por exemplo, os autores têm muitas tabelas com chaves de classificação intercaladas e a maior parte de nossa carga de trabalho é um registro.

Embora a escala paralela não seja uma solução universal na configuração do WLM, em qualquer caso, o uso dessa função é simples e compreensível.

Portanto, o autor recomenda usá-lo para suas filas WLM. Comece com um único cluster paralelo e monitore o pico de carga através do console para determinar se os novos clusters são totalmente utilizados.

À medida que a AWS adiciona suporte a tipos adicionais de consultas e tabelas, a escala paralela deve se tornar gradualmente cada vez mais eficiente.
Comentado por Belkhodzhaev Daniyar, um engenheiro de acordo com Skyeng

Em Skyeng, também imediatamente chamamos a atenção para a possibilidade emergente de escala paralela.
A funcionalidade é muito atraente, especialmente considerando o fato de que, de acordo com a AWS, a maioria dos usuários nem precisa pagar mais por isso.

Aconteceu que em meados de abril tivemos uma enxurrada incomum de solicitações ao cluster Redshift. Durante esse período, geralmente recorríamos à ajuda do dimensionamento de simultaneidade, às vezes o cluster adicional trabalhava 24 horas por dia sem parar.

Isso permitiu, se não resolver completamente o problema de enfileiramento, pelo menos para tornar a situação aceitável.

Nossas observações coincidem amplamente com a impressão dos caras do intermix.io.

Também observamos que, apesar da presença de solicitações pendentes na fila, nem todas as solicitações foram imediatamente redirecionadas para um cluster paralelo. Aparentemente, isso se deve ao fato de que o cluster paralelo ainda leva tempo para iniciar. Como resultado, durante picos de carga de curto prazo, ainda temos pequenas filas e os alarmes correspondentes têm tempo para trabalhar.

Tendo se livrado das cargas anormais em abril, nós, como a AWS esperava, entramos no modo de uso episódico - como parte da norma livre.
Você pode acompanhar os custos de dimensionamento simultâneos no AWS Cost Explorer. Você precisa selecionar Serviço - Redshift, Tipo de uso - CS, por exemplo, USW2-CS: dc2.large.

Detalhes dos preços em russo podem ser encontrados aqui.

Source: https://habr.com/ru/post/pt451538/


All Articles