05 Benchmark e virada
Guia de facilitação para benchmark e virada — o fechamento da lacuna em duas passagens, as armadilhas da importação de dashboards e a ordem de desmontagem.
Material de apoio ao instrutor para a aula do participante 05 Benchmark e virada.
Duração
Cerca de 45 minutos distribuídos em cinco etapas: adicionar os dashboards do ClickHouse (etapa 1, alguns minutos com a importação por script), executar o benchmark (etapa 2, sete consultas vezes três execuções vezes dois mecanismos — alguns minutos, quase todos autônomos, mas curtos o bastante para acompanhar), realizar a virada (etapa 3, interativa: interromper o produtor, atualizar a diferença, executar o dbt, iniciar o produtor do ClickHouse, cada ação deliberadamente nessa ordem), verificar a paridade (etapa 4, rápida) e desmontar (etapa 5).
PENDENTE: o material do laboratório não apresenta a duração de cada etapa além do total de 45
minutos do módulo. Confirme a distribuição durante o ensaio, principalmente se a passagem de
atualização com --resume da etapa 3 é rápida o bastante de modo consistente (segundos a minutos,
segundo a própria descrição do laboratório) para dispensar uma margem adicional.
Roteiro
- Este é o módulo que transforma “preparado” em “migrado”. Os módulos 03 e 04 validaram os dados e o pipeline; este valida um número (o benchmark) e prova que o caminho de gravação realmente muda (a virada).
- A ordem da virada é o conteúdo deste módulo, não uma formalidade: interrompa o produtor do
Snowflake, execute
--resumepara fechar a lacuna, atualize o dbt e só então inicie o produtor do ClickHouse. Cada etapa depende da anterior. Executá-las fora de ordem é exatamente como se produz uma falha silenciosa de paridade (consulte Falhas comuns). - Explique por que
--resumeé rápido aqui, ao contrário da migração original do módulo 03: ele usa como marca d'água omax(pickup_at)já presente no ClickHouse e busca apenas a diferença; assim, uma lacuna aberta desde o módulo 01 é fechada em segundos ou minutos, e não em outra transferência em massa de 40 a 50 minutos. - Relacione a virada ao estado vazio de
agg_hourly_zone_tripsno módulo 04: ela é preenchida pela primeira vez em todo o laboratório quando o produtor do ClickHouse começa, pois seu filtro só corresponde a linhas do produtor em tempo real. Esta é a resposta à pergunta que os parceiros fazem desde o módulo 04. - Este é o último módulo antes da avaliação escrita. Lembre a turma de guardar o
migration-plan.mde o CSV do benchmark em um local acessível, pois a desmontagem da etapa 5 exclui os dois ambientes de nuvem.
Falhas comuns
- Um parceiro importa manualmente o ZIP do dashboard pela interface do Superset em vez de executar
add_clickhouse_connection.sh. O host do ClickHouse foi ocultado comoyour-instance.clickhouse.cloudno arquivo de exportação versionado. O script substitui a URI a partir de.envantes da importação, mas uma importação manual pela interface usa o host fictício sem alterações e a conexão falhará. Peça que o parceiro edite a conexão depois para apontar aoCLICKHOUSE_HOSTreal e usar as credenciais corretas. - Um parceiro pula a passagem de atualização
--resumena etapa 3 e realiza a virada mesmo assim. O ClickHouse perde definitivamente todas as linhas gravadas no intervalo entre a migração original do módulo 03 e a interrupção do produtor: uma falha silenciosa de paridade. A verificação da etapa 4 foi criada para detectá-la, mas somente se for executada. Um parceiro que pula diretamente para o relatório do benchmark sem executar a etapa 4 não perceberá as linhas perdidas. - O produtor do Snowflake já tinha sido interrompido no módulo 01 ou 02 por um parceiro que quis “organizar” o ambiente. A virada não tem uma lacuna para medir se o produtor nunca funcionou continuamente. Isso compromete toda a demonstração da virada, não apenas esta etapa. Se ocorreu, a correção honesta é reiniciar o produtor, deixá-lo gravar por alguns minutos para criar uma lacuna real e então prosseguir; não é possível demonstrar retroativamente uma lacuna que nunca existiu.
- A verificação de paridade falha (diferença superior a 0,01%). Execute novamente a atualização
e verifique outra vez:
python scripts/02_migrate_trips.py --resumee depoisbash scripts/01_verify_migration.sh. - O Superset mostra
403 Forbidden. O cookie da sessão expirou. Saia, entre novamente emhttp://localhost:8088e executesuperset/add_clickhouse_connection.shoutra vez. - O benchmark mostra
N/Apara uma consulta, geralmente a Q7. O script de benchmark não conseguiu se conectar ao ClickHouse. Confirme queCLICKHOUSE_HOSTestá definido (source .clickhouse_state) e que o serviço está em execução.
Etapas de redefinição
- Se a verificação de paridade falhar: execute novamente
python scripts/02_migrate_trips.py --resumee depoisbash scripts/01_verify_migration.sh. - Se for preciso desfazer a virada: execute
docker stop nyc_taxi_ch_producere então reative o produtor do Snowflake emworkshop_public/snowflake_migration_lab/01-setup-snowflake/supersetcomdocker-compose --env-file ../.env up -d producer. - Para uma redefinição completa do ambiente: execute
source .env && ./teardown.shemworkshop_public/snowflake_migration_lab/03-migrate-to-clickhouse/para destruir o serviço ClickHouse Cloud e o contêiner do produtor do ClickHouse (caso a virada tenha ocorrido). Esse script não afeta o Snowflake; desmonte-o separadamente comsource .env && ./teardown.shemworkshop_public/snowflake_migration_lab/01-setup-snowflake/. - Antes de executar qualquer desmontagem, confirme que
migration-plan.mde o CSV do benchmark (scripts/benchmark_results_<timestamp>.csv) estão salvos em um local acessível. Depois disso, os dois ambientes de nuvem desaparecem, e o módulo 06 precisa exatamente desses dois arquivos, sem mais nada.