Otimizar a performance do Google Analytics

Last reviewed 2023-08-04 UTC

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:

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:

É 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 e spark.default.parallelism ou o parâmetro mapreduce.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: