Guia de escalabilidade paralela do Amazon Redshift e resultados de testes

Guia de escalabilidade paralela do Amazon Redshift e resultados de testes

Na Skyeng usamos Amazon Redshift, incluindo escalonamento paralelo, então achamos interessante este artigo de Stefan Gromoll, fundador do dotgo.com, para intermix.io. Após a tradução, um pouco da nossa experiência com o engenheiro de dados Daniyar Belkhodzhaev.

Arquitetura do Amazon Redshift permite o escalonamento adicionando novos nós ao cluster. A necessidade de lidar com um número máximo de solicitações pode levar ao provisionamento excessivo de nós. O dimensionamento de simultaneidade, em vez de adicionar novos nós, aumenta o poder de computação conforme necessário.

A escalabilidade paralela do Amazon Redshift oferece aos clusters Redshift capacidade adicional para lidar com picos de volumes de solicitações. Funciona movendo 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.

O preço de escalonamento paralelo é baseado em um modelo de crédito com nível gratuito. Acima dos créditos gratuitos, o pagamento é baseado no tempo que o Parallel Scaling Cluster processa as solicitações.

O autor testou o escalonamento paralelo 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 escalabilidade paralela, o 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 de nó único não são suportados).

Tipos de solicitação aceitáveis

O escalonamento paralelo não é adequado para todos os tipos de consultas. Na primeira versão, processa apenas solicitações de leitura que satisfaçam três condições:

— As consultas SELECT são somente leitura (embora mais tipos estejam planejados);
— a consulta não faz referência a uma tabela com o estilo de classificação INTERLEAVED;
- A consulta não usa o Amazon Redshift Spectrum para fazer referência a tabelas externas.

Para ser roteada para o cluster do Parallel Scaling, a solicitação deve estar na fila. Além disso, consultas qualificadas para a fila SQA (aceleração de consulta curta), não será executado em clusters de escala paralela.

Filas e SQA exigem configuração adequada Gerenciamento de carga de trabalho Redshift (WLM). Recomendamos otimizar seu WLM primeiro – isso reduzirá a necessidade de escalonamento paralelo. E isso é importante porque o escalonamento paralelo só é gratuito por um determinado número de horas. A AWS afirma que o escalonamento paralelo será gratuito para 97% dos clientes, o que nos leva à questão dos preços.

Custo do escalonamento paralelo

A AWS oferece um modelo de crédito para escalonamento paralelo. Cada cluster ativo Amazon RedShift Acumula créditos por hora, até uma hora de créditos de escalonamento paralelo gratuitos por dia.

Você só paga quando o uso do Parallel Scaling Clusters excede a quantidade de créditos que você recebeu.

O custo é calculado a uma taxa sob demanda por segundo para um cluster paralelo usado acima da taxa gratuita. Você será cobrado apenas pela duração das suas solicitações, com uma cobrança mínima de um minuto cada vez que um cluster do Parallel Scaling for ativado. A taxa sob demanda por segundo é calculada com base em princípios gerais de preços Amazon RedShift, ou seja, depende do tipo de nó e do número de nós em seu cluster.

Iniciando o escalonamento paralelo

A escalabilidade paralela é acionada para cada fila WLM. Acesse o console do AWS Redshift e selecione Workload Management no menu de navegação esquerdo. Selecione o grupo de parâmetros WLM do seu cluster no menu suspenso a seguir.

Você verá uma nova coluna chamada "Modo de escalabilidade de simultaneidade" ao lado de cada fila. O padrão é "Desativado". Clique em "Editar" e você poderá alterar as configurações de cada fila.

Guia de escalabilidade paralela do Amazon Redshift e resultados de testes

Configuração

O escalonamento paralelo funciona encaminhando solicitações apropriadas para novos clusters dedicados. Os 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 escalabilidade paralela é um (1), com a capacidade de configurar até um total de dez (10) clusters.
O número total de clusters para escalabilidade paralela pode ser definido pelo parâmetro max_concurrency_scaling_clusters. Aumentar o valor deste parâmetro fornece clusters redundantes adicionais.

Guia de escalabilidade paralela do Amazon Redshift e resultados de testes

Monitoramento

Existem vários gráficos adicionais disponíveis no console do AWS Redshift. O gráfico Máximo de clusters de escalabilidade de simultaneidade configurados exibe o valor de max_concurrency_scaling_clusters ao longo do tempo.

Guia de escalabilidade paralela do Amazon Redshift e resultados de testes

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

Guia de escalabilidade paralela do Amazon Redshift e resultados de testes

Na aba Consultas, há uma coluna que indica se a consulta foi executada no cluster principal ou no cluster de escalabilidade paralela:

Guia de escalabilidade paralela do Amazon Redshift e resultados de testes

Independentemente de uma consulta específica ter sido executada no cluster principal ou por meio de um cluster de escalabilidade paralela, ela é armazenada em stl_query.concurrency_scaling_status.

Guia de escalabilidade paralela do Amazon Redshift e resultados de testes

Um valor 1 indica que a consulta foi executada no cluster de escala paralela, enquanto outros valores indicam que ela foi executada no cluster primário.

Exemplo:

Guia de escalabilidade paralela do Amazon Redshift e resultados de testes

As informações de escalabilidade de simultaneidade também são armazenadas em outras tabelas e visualizações, como SVCS_CONCURRENCY_SCALING_USAGE. Além disso, há diversas tabelas de catálogo que armazenam informações sobre escalabilidade paralela.

Descobertas

Os autores iniciaram o escalonamento paralelo para uma fila no cluster interno aproximadamente às 18h30min00 GMT do dia 29.03.2019/3/20. O parâmetro max_concurrency_scaling_clusters foi alterado para 30 aproximadamente às 00h29.03.2019minXNUMX do dia XNUMX/XNUMX/XNUMX.

Para simular uma fila de solicitações, reduzimos o número de slots dessa fila de 15 para 5.

Abaixo está um gráfico do painel intermix.io mostrando o número de solicitações em execução e na fila após a redução do número de slots.

Guia de escalabilidade paralela do Amazon Redshift e resultados de testes

Vemos que o tempo de espera das solicitações na fila aumentou, sendo o tempo máximo superior a 5 minutos.

Guia de escalabilidade paralela do Amazon Redshift e resultados de testes

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

Guia de escalabilidade paralela do Amazon Redshift e resultados de testes

O Redshift lançou três (3) clusters de escalabilidade paralela conforme configurado. Parece que esses clusters foram subutilizados, embora muitas solicitações em nosso cluster estivessem na fila.

O gráfico de uso se correlaciona com o gráfico de atividade de escalabilidade:

Guia de escalabilidade paralela do Amazon Redshift e resultados de testes

Depois de algumas horas, os autores verificaram a fila e parecia que 6 solicitações estavam sendo executadas em escala paralela. Também testamos aleatoriamente duas solicitações por meio da interface do usuário. Não verificamos como usar esses valores quando vários clusters paralelos estão ativos ao mesmo tempo.

Guia de escalabilidade paralela do Amazon Redshift e resultados de testes

Descobertas

O escalonamento paralelo pode reduzir o tempo que as solicitações passam na fila durante picos de carga.

Com base nos resultados do teste básico, descobriu-se que a situação com as solicitações de carregamento melhorou parcialmente. No entanto, o escalonamento paralelo por si só não resolveu todos os problemas de simultaneidade.

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

Embora o escalonamento paralelo não seja uma solução universal para configurar o WLM, usar esse recurso é simples e direto.

Portanto, o autor recomenda usá-lo para suas filas WLM. Comece com um cluster paralelo e monitore o pico de carga por meio do console para determinar se os novos clusters estão sendo totalmente utilizados.

À medida que a AWS adiciona suporte para tipos de consulta e tabelas adicionais, o escalonamento paralelo deve se tornar gradualmente mais e mais eficiente.

Comentário de Daniyar Belkhodzhaev, engenheiro de dados da Skyeng

Nós da Skyeng também notamos imediatamente a possibilidade emergente de escalonamento paralelo.
A funcionalidade é muito atrativa, principalmente considerando que a AWS estima que a maioria dos usuários nem precisará pagar a mais por ela.

Acontece que em meados de abril tivemos uma enxurrada incomum de solicitações ao cluster Redshift. Durante esse período, recorremos frequentemente ao Simultaneidade Scaling; às vezes, um cluster adicional funcionava 24 horas por dia sem parar.

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

Nossas observações coincidem em grande parte com as impressões dos caras do intermix.io.

Observamos também que embora houvesse solicitações aguardando na fila, nem todas as solicitações foram encaminhadas imediatamente para o cluster paralelo. Aparentemente isso acontece porque o cluster paralelo ainda demora para iniciar. Como resultado, durante picos de carga de curto prazo ainda temos pequenas filas e os alarmes correspondentes têm tempo para disparar.

Tendo nos livrado das cargas anormais em abril, nós, como esperado pela AWS, entramos no modo de uso ocasional - dentro da norma gratuita.
Você pode acompanhar seus custos de escalabilidade paralela no AWS Cost Explorer. Você precisa selecionar Serviço - Redshift, Tipo de uso - CS, por exemplo USW2-CS:dc2.large.

Você pode ler mais sobre preços em russo aqui.

Fonte: habr.com

Adicionar um comentário