Neste documento, no framework de arquitetura do Google Cloud, você encontra recomendações para otimizar o desempenho das cargas de trabalho de análise no Google Cloud.
BigQuery
Nesta seção, apresentamos recomendações para ajudar você a otimizar a performance das consultas no BigQuery.
Otimizar o design da consulta
O desempenho da consulta depende de fatores como o número de bytes lidos e gravados pelas consultas e o volume de dados transmitido entre slots. Para otimizar a performance das consultas no BigQuery, aplique as práticas recomendadas descritas na documentação a seguir:
- Introdução à otimização do desempenho da consulta
- Como gerenciar dados de entrada e fontes de dados
- Como otimizar a comunicação entre slots
- Otimizar a computação em consultas
- Gerenciar saídas de consulta
- Como evitar antipadrões de SQL
Definir e usar visualizações materializadas de maneira eficiente
Para melhorar o desempenho das cargas de trabalho que usam consultas comuns e repetidas, use visualizações materializadas. Há limites para o número de visualizações materializadas que você pode criar. Não crie uma visualização materializada separada para cada permutação de uma consulta. Em vez disso, defina visualizações materializadas que podem ser usadas para vários padrões de consultas.
Melhore a performance JOIN
É possível usar
visualizações materializadas
para reduzir o custo e a latência de uma consulta que realiza agregação em uma
JOIN
.
Considere um caso em que você mescla uma tabela de fatos grande com algumas tabelas de dimensões
pequenas e, em seguida, executa
uma agregação
na parte superior da mesclagem. Talvez seja prático reescrever a consulta para primeiro realizar
a agregação na tabela de fatos com chaves externas como chaves de agrupamento.
Em seguida, mescle o resultado com as tabelas de dimensão. Por fim, execute uma
pós-agregação.
Dataflow
Nesta seção, apresentamos recomendações para ajudar a otimizar o desempenho da consulta dos pipelines do Dataflow.
Ao criar e implantar pipelines, configure parâmetros de execução, como o tipo de máquina do Compute Engine que precisa ser usado para as VMs de worker do Dataflow. Para mais informações, consulte Opções de pipeline.
Depois de implantar os pipelines, o Dataflow gerencia os recursos do Compute Engine e do Cloud Storage necessários para executar jobs. Além disso, os seguintes recursos do Dataflow ajudam a otimizar o desempenho dos pipelines:
- Carregamento em paralelo: o Cloud Dataflow particiona automaticamente os dados e distribui o código do worker nas instâncias do Compute Engine para processamento paralelo. Para mais informações, consulte carregamento em paralelo e distribuição.
- Otimização: o Dataflow usa o código do pipeline para criar um gráfico de execução que represente objetos PCollection e transformações no pipeline. Em seguida, ele otimiza o gráfico para ter desempenho e uso de recursos mais eficientes. Além disso, otimiza de modo automático as operações de custo potencialmente alto, como agregações de dados. Para mais informações, consulte Otimização de fusão e Otimização de combinação.
- Ajuste automático: o Dataflow otimiza os jobs de maneira dinâmica durante a execução usando Escalonamento automático horizontal, Escalonamento automático vertical, e Reequilíbrio de trabalho dinâmico.
É possível monitorar a performance dos pipelines do Dataflow usando a interface de monitoramento com base na Web ou a CLI gcloud do Dataflow.
Dataproc
Nesta seção, você verá as práticas recomendadas para otimizar o desempenho dos clusters do Dataproc.
Escalonar clusters automaticamente
Para garantir que os clusters do Dataproc ofereçam um desempenho previsível, ative o escalonamento automático. O Dataproc usa as métricas de memória do Hadoop YARN e uma política de escalonamento automático que você define para ajustar automaticamente o número de VMs de worker em um cluster. Para mais informações sobre como usar e configurar o escalonamento automático, consulte Clusters de escalonamento automático.
Provisionar armazenamento apropriado
Escolha uma opção de armazenamento adequada para o cluster do Dataproc com base nos seus requisitos de desempenho e custo:
- Se você precisar de um sistema de arquivos de baixo custo compatível com o Hadoop (HCFS, na sigla em inglês), que pode ser lido e gravado pelos jobs do Hadoop e do Spark, com alterações mínimas, use o Cloud Storage. Os dados armazenados no Cloud Storage são permanentes e podem ser acessados por outros clusters do Dataproc e outros produtos, como o BigQuery.
- Se você precisar de um sistema de arquivos distribuídos do Hadoop (HDFS, na sigla em inglês) de baixa latência para o cluster do Dataproc, use discos permanentes do Compute Engine anexados aos nós de trabalho. Os dados armazenados no HDFS são temporários, e o custo de armazenamento é maior do que a opção do Cloud Storage.
- Para aproveitar a vantagem de performance dos discos permanentes do Compute Engine e os benefícios de custo e durabilidade do Cloud Storage, é possível combinar as duas opções de armazenamento. Por exemplo, é possível armazenar seus conjuntos de dados de origem e finais no Cloud Storage e provisionar capacidade limitada do HDFS para os conjuntos de dados intermediários. Ao decidir o tamanho e o tipo de discos para o armazenamento HDFS, considere as recomendações na seção Discos permanentes e SSDs locais.
Reduza a latência ao usar o Cloud Storage
Para reduzir a latência ao acessar dados armazenados no Cloud Storage, recomendamos o seguinte:
- Crie o bucket do Cloud Storage na mesma região do cluster do Dataproc.
- Desativar
auto.purge
para tabelas gerenciadas pelo Apache Hive armazenadas no Cloud Storage. - Ao usar o Spark SQL, considere criar clusters do Dataproc
com as versões mais recentes de
imagens
disponíveis. Ao usar a versão mais recente, você pode evitar problemas de
performance que podem permanecer em versões mais antigas, como a
performance lento de
INSERT OVERWRITE
(link em inglês) no Spark 2.x. - Para minimizar a possibilidade de gravar muitos arquivos com tamanhos variados ou pequenos
no Cloud Storage, configure os
parâmetros SQL do Spark
spark.sql.shuffle.partitions
espark.default.parallelism
ou o parâmetromapreduce.job.reduces
do Hadoop.
Monitorar e ajustar a carga e a capacidade do armazenamento
Os discos permanentes anexados aos nós de trabalho em um cluster do Dataproc
mantêm
dados
embaralhados. Para ter um desempenho ideal, os nós de trabalho precisam de espaço em disco suficiente. Se os
nós não tiverem espaço em disco suficiente, eles serão marcados
como UNHEALTHY
no
registro
YARN NodeManager. Se esse problema ocorrer, aumente o tamanho do disco para os nós afetados ou
execute menos jobs ao mesmo tempo.
Ativar EFM
Quando os nós de trabalho são removidos de um cluster do Dataproc em execução, como devido à redução ou preempção, os dados de embaralhamento podem ser perdidos. Para minimizar os atrasos nas vagas nesses cenários, recomendamos ativar Modo de flexibilidade aprimorada (EFM) para clusters que usam VMs preemptivas ou que escalonam automaticamente apenas o grupo de workers secundários.
A seguir
Confira as práticas recomendadas para otimizar o desempenho dos recursos de computação, armazenamento, rede e banco de dados:
- Otimize o desempenho da computação.
- Otimizar o desempenho do armazenamento.
- Otimizar o desempenho da rede.
- Otimizar o desempenho do Database.