O Alibaba Cloud Realtime Compute for Apache Flink é uma plataforma de nível empresarial, de alto desempenho, para processamento de big data em tempo real, construída sobre o Apache Flink. O Hologres é profundamente integrado ao Flink, permitindo gravar e consultar dados de streaming em tempo real e construir um data warehouse em tempo real com eficiência.
Tipos de service
O Realtime Compute for Apache Flink não armazena dados. Ele processa dados de sistemas de armazenamento externos e oferece suporte aos seguintes tipos de armazenamento de dados:
-
Source Table
Uma source table fornece dados de entrada para um job do Flink. Quando uma tabela do Hologres é usada como source table, os dados são importados em modo batch, não em modo streaming. O Hologres realiza uma varredura completa da tabela, envia os dados para um destino downstream e o job é concluído.
-
Dimension Table
Uma dimension table é normalmente utilizada para buscas pontuais por chave. Por isso, ao usar uma tabela do Hologres como dimension table, recomenda-se o armazenamento orientado a linhas. A condição de JOIN deve utilizar a chave primária completa da tabela.
-
Result Table
Uma result table recebe e armazena os dados de saída das computações do Flink, fornecendo interfaces de leitura e gravação para consumo downstream.
O Realtime Compute for Apache Flink se integra profundamente ao Hologres para oferecer os seguintes recursos avançados de nível empresarial:
-
Consumption of Hologres Binlog
Este recurso permite consumir logs de alteração de tabelas do Hologres usando o padrão de fila de mensagens.
-
Flink Catalog
Importe metadados do Hologres como um catalog no Flink. Isso permite ler metadados do Hologres diretamente do console do Fully Managed Flink sem registrar tabelas manualmente, aumentando a eficiência de desenvolvimento e garantindo a precisão do schema.
-
Schema Evolution
O Fully Managed Flink oferece suporte a schema evolution. Ao ler dados JSON, o Flink pode analisar automaticamente os tipos de dados e criar as colunas de tabela correspondentes, viabilizando a evolução dinâmica do modelo de dados.
A tabela a seguir descreve os tipos de service Flink compatíveis com o Hologres e seus recursos.
|
Tipo de service |
Tipo de armazenamento de dados |
Recursos avançados |
Descrição |
||||
|
Source table |
Result table |
Dimension table |
Hologres Binlog |
Flink Catalog |
Schema Evolution |
||
|
Semi-managed Flink |
Compatível com armazenamento orientado a linhas e orientado a colunas. Para source tables de Binlog, recomenda-se o armazenamento orientado a linhas ou híbrido linha-coluna. |
Compatível com armazenamento orientado a linhas e orientado a colunas. |
Recomenda-se o armazenamento orientado a linhas ou híbrido linha-coluna. |
Compatível |
Compatível |
Compatível |
Utiliza a plataforma de desenvolvimento EMR Studio. |
|
Blink in exclusive mode (descontinuado) |
Compatível com armazenamento orientado a linhas e orientado a colunas. Para source tables de Binlog, recomenda-se o armazenamento orientado a linhas ou híbrido linha-coluna. |
Compatível com armazenamento orientado a linhas e orientado a colunas. |
Recomenda-se o armazenamento orientado a linhas ou híbrido linha-coluna. |
O Hologres V0.8 é compatível apenas com armazenamento orientado a linhas. O Hologres V0.9 e versões posteriores são compatíveis com armazenamento orientado a linhas e orientado a colunas. Recomenda-se o armazenamento orientado a linhas. |
Não compatível |
Não compatível |
Utiliza a plataforma de desenvolvimento Bayes. Recomenda-se o uso do Fully Managed Flink. |
|
Apache Flink V1.10 |
Não compatível |
Compatível com armazenamento orientado a linhas e orientado a colunas. |
Não compatível |
Não compatível |
Não compatível |
Não compatível |
- |
|
Apache Flink V1.11 e versões posteriores |
Não compatível |
Compatível com armazenamento orientado a linhas e orientado a colunas. |
Recomenda-se o armazenamento orientado a linhas. |
Não compatível |
Não compatível |
Não compatível |
O código do Hologres connector foi disponibilizado como open source a partir do Apache Flink V1.11. Para mais detalhes, consulte alibabacloud-hologres-connectors. |
|
Apache Flink V1.13 e versões posteriores |
Apenas source tables batch |
Compatível com armazenamento orientado a linhas e orientado a colunas. |
Recomenda-se o armazenamento orientado a linhas. |
Não compatível |
Não compatível |
Não compatível |
O código do Hologres connector foi disponibilizado como open source a partir do Apache Flink V1.11. Para mais detalhes, consulte alibabacloud-hologres-connectors. |
Notas de lançamento do Hologres connector
|
Versão do Flink |
Versão do VVR (Ververica Runtime) |
Versão do Hologres |
Informações de atualização |
Referências |
|
1.20 |
11,6 |
3.2.x 4.0.x 4.1.x |
Source table:
Catalog:
Geral:
|
{{XREF_0}} |
|
1.20 |
11,5 |
3.2.x 4.0.x 4.1.x |
Source table:
Dimension table:
Geral:
Correções de bugs:
|
{{XREF_1}} |
|
1.20 |
11,4 |
3.2.x 4.0.x 4.1.x |
Sink table:
Dimension table:
Correções de bugs:
|
{{XREF_2}} |
|
1.20 |
11,3 |
3.1.x 3.2.x 4.0.x |
Source table:
Sink table:
Geral:
Correções de bugs:
|
{{XREF_3}} |
|
1.20 |
11,2 |
3.1.x 3.2.x 4.0.x |
Sink table:
Geral:
Correções de bugs:
|
{{XREF_4}} |
|
1.20 |
11,1 |
3.1.x 3.2.x |
Source table:
Sink table:
Dimension table:
Geral:
|
{{XREF_5}} |
|
1.20 |
11.0 |
3.1.x 3.2.x |
Geral:
Source table:
|
{{XREF_6}} |
|
1.17 |
8.0.11 |
2.1.x 2.2.x 3.0.x |
Source table:
Sink table:
Geral:
Correções de bugs:
|
{{XREF_7}} |
|
1.17 |
8.0.9~8.0.10 |
2.1.x 2.2.x 3.0.x |
|
{{XREF_8}} |
|
1.17 |
8.0.8 |
2.1.x 2.2.x |
Sink table:
|
{{XREF_9}} |
|
1.17 |
8.0.7 |
2.1.x |
Dimension table:
Geral:
|
{{XREF_10}} |
|
1.17 |
8.0.6 |
2.1.x |
Source table:
Geral:
|
|
|
1.17 |
8.0.5 |
2.0.x 2.1.x |
Source table:
Sink table:
Geral:
|
|
|
1.17 |
8.0.4 |
2.0.x 2.1.x |
Source table:
Geral:
|
|
|
1.17 |
8.0.3 |
2.0.x 2.1.x |
Geral:
|
{{XREF_22}} |
|
1.15 |
6.0.7 |
|
|
{{XREF_23}} |
|
1.15 |
6.0.6 |
1.3.x |
Source table:
|
{{XREF_24}} |
|
1.15 |
6.0.5 |
1.3.x |
|
|
|
1.15 |
6.0.3~6.0.4 |
1.3.x |
Source table:
Sink table: Adicionado suporte à gravação de dados no modo Fixed Copy. O Fixed Copy é um novo recurso do Hologres V1.3. Em comparação com o modo JDBC, o modo Fixed Copy oferece maior throughput e menor latência de dados via streaming, além de reduzir o consumo de memória do cliente ao eliminar o batching. Hologres Catalog:
Parâmetro sdkMode: diferentes modos estão disponíveis para diferentes tipos de tabelas no Hologres. O parâmetro sdkMode agora é usado para consolidar a seleção de modo. |
|
|
1.13 |
4.0.18 |
1.1 e versões posteriores |
Corrigido um problema em que o reporte de métricas para uma sink table degradava o desempenho de gravação. |
|
|
1.13 e 1.15 |
4.0.15 e 6.0.2 |
1.1 e versões posteriores |
Source table:
Dimension table: Adicionado suporte à configuração de um timeout de requisição assíncrona ( Sink table:
|
|
|
1.13 |
4.0.13 |
1.1 e versões posteriores |
|
|
|
1.13 |
4.0.11 |
0.10 e versões posteriores |
Adicionado suporte a CTAS e CDAS. |
|
|
1.13 |
4.0.8 |
0.10 e versões posteriores |
Adicionado suporte ao Hologres Catalog para sink tables, source tables e dimension tables. |
{{XREF_35}} |
|
1.13 |
3.0.0 |
0.9 e versões posteriores |
Adicionado suporte ao consumo de dados em tempo real do Hologres. |
{{XREF_36}} |
Problemas conhecidos e correções
-
Observações sobre problemas e correções
As versões afetadas por cada problema são claramente especificadas. Versões fora do intervalo listado não são afetadas.
Se a versão afetada estiver marcada como "N/A", o problema pode ser um defeito no engine do Hologres, e não no connector.
-
Níveis de severidade
P0 (Crítico): upgrade imediato recomendado. Este problema pode afetar as operações em produção, como a correção de consultas ou as taxas de sucesso de gravação.
P1 (Alto): upgrade recomendado para evitar problemas potenciais.
P2 (Médio): upgrade opcional. Esses problemas ocorrem de forma intermitente e podem ser resolvidos com uma solução alternativa ou reiniciando o job.
|
Severidade |
Descrição |
Versão afetada |
Versão corrigida |
Solução |
|
P0 |
Ao gravar em um subconjunto de colunas em uma result table, se campos não gravados tiverem um valor padrão relacionado a tempo (como current_timestamp ou now()), o valor preenchido pode ser incorreto. Isso ocorre porque o modo FixedFE não trata corretamente os valores padrão relacionados a tempo. |
11,0-11,5 |
N/A |
Use a função now() do lado do Flink para passar o valor ao campo correspondente na result table. Como alternativa, defina o parâmetro |
|
P0 |
Durante o consumo de Binlog, se uma coluna física e uma coluna de metadados compartilharem o mesmo nome, como |
8.0.11, 11,0-11,4 |
11,5 |
Faça upgrade para a versão 11,5 ou posterior e defina |
|
P1 |
Durante o consumo de Binlog, o column pruning pode ler dados para as colunas erradas. Isso ocorre porque o holo-client pode recuperar colunas inesperadas ao processar o column pruning. |
11,3-11,5 |
Hotfixes foram lançados para todas as versões afetadas (11,3-11,5). |
Um hotfix resolve este problema, portanto é improvável que você o encontre. Para jobs DataStream, utilize a versão mais recente do connector. |
|
P2 |
O scanner de uma dimension table de um para muitos não é encerrado corretamente ao parar o job. Isso pode causar vazamentos de recursos ou timeouts durante o encerramento. Um problema na lógica interna de encerramento do scanner do holo-client é a causa raiz. |
Versões anteriores à 11,3 |
11,4 |
Faça upgrade para a versão 11,4 ou posterior. |
|
P1 |
Ao usar o recurso check-and-put, processar um registro de exclusão lança uma NullPointerException (NPE) e causa a falha do job. |
8.0.11-11,4 |
11,5 |
Faça upgrade para a versão 11,5 ou posterior. Como alternativa, evite usar check-and-put em streams que contenham operações de exclusão. |
|
P2 |
O connector não consegue retomar a partir de um checkpoint se uma tabela foi removida e recriada enquanto o job estava em execução. |
11,0-11,2 |
11,3 |
Em um ambiente de testes, faça upgrade para a versão 11,3 ou posterior para evitar este problema. Observação: remover uma tabela durante o consumo de Binlog afeta a correção dos dados. Portanto, evite reconstruir uma tabela durante o consumo de Binlog em ambiente de produção. |
|
P1 |
A leitura de dados RoaringBitmap via JDBC Binlog falha e lança uma exceção de parsing. |
11,0-11,2 |
11,3 |
Faça upgrade para a versão 11,3 ou posterior. |
|
P1 |
Ao consumir de uma tabela fisicamente particionada, se um shard não tiver dados, o connector inicializa incorretamente o Log Sequence Number (LSN) do estado como 0. Isso causa perda de dados quando o job retoma a partir desse estado. |
Versões anteriores à 8.0.10, 11,0-11,2 |
8.0.11, 11,3 |
Faça upgrade para a versão 8.0.11, ou 11,3 ou posterior. |
|
P1 |
Gravar um array TEXT contendo um elemento nulo lança uma NPE e causa a falha da operação de gravação. |
11,0-11,1 |
11,2 |
Faça upgrade para a versão 11,2 ou posterior. Como alternativa, garanta que o array TEXT upstream não contenha elementos nulos. |
|
P1 |
Um conflito entre o sufixo de criação de partição e o particionamento dinâmico causa a falha na criação da partição. |
11,0-11,2 |
11,3 |
Faça upgrade para a versão 11,3 ou posterior. |
|
P2 |
Exceções não relacionadas a dados sujos podem acionar a política de dados sujos, fazendo com que exceções válidas sejam tratadas incorretamente (por exemplo, descartadas silenciosamente). |
11,0-11,1 |
11,2 |
Faça upgrade para a versão 11,2 ou posterior. |
|
P1 |
Para uma source table de Integração Completa e Incremental, o JDBC Binlog inicia o consumo em LSN+1. Se o LSN atual já estiver em um checkpoint, retomar a partir dele pode pular um registro. |
8.0.10 e versões anteriores |
8.0.11 |
Faça upgrade para a versão 8.0.11. |
|
P2 |
Em um cenário CTAS, se um drop de coluna e uma alteração de tipo ocorrerem na mesma operação, um erro de normalização de tipo causa a falha da alteração de schema. |
8.0.10 e versões anteriores |
8.0.11 |
Faça upgrade para a versão 8.0.11. Como alternativa, evite execute um drop de coluna e uma alteração de tipo na mesma operação. |
|
P2 |
Ao usar uma dimension table de catalog, a validação dos parâmetros de Binlog pela factory causa uma exceção falso-positiva. |
8.0.10 e versões anteriores |
8.0.11 |
Faça upgrade para a versão 8.0.11. |
|
P2 |
Em cenários com múltiplas tabelas, um número excessivo de requisições de polling JDBC causa timeout no SQL Gateway. |
11,0-11,5 |
11,6 |
Faça upgrade para a versão 11,6. Como alternativa, reduza o número de tabelas do Hologres em um único job. |
|
P2 |
Quando o modo FixedFE está selecione, se uma tabela contiver um tipo de dado não compatível com o FixedFE, a conexão não realiza downgrade automático para uma conexão FE, causando exceções de gravação ou consulta. |
11,0-11,2 |
11,3 |
Faça upgrade para a versão 11,3 ou posterior. Como alternativa, especifique manualmente o modo de conexão FE. |
|
P1 |
Ao consumir um Binlog no modo JDBC, pode ocorrer uma exceção "Binlog Convert Failed", ou a leitura de dados de alguns shards pode travar. Isso acontece porque o gateway da instância do Hologres apresenta um problema ao retornar uma exceção de timeout de backend para o cliente, fazendo com que a operação de leitura trave ou falhe com um erro de parsing. |
N/A |
N/A |
Este problema é mais provável de ocorrer quando a contrapressão do job é alta. Se a leitura de dados travar, reinicie o job e retome a partir do checkpoint mais recente. Para resolver completamente este problema, faça upgrade da instância do Hologres para V2.2.21 ou posterior. |
|
P2 |
Os jobs são implantados lentamente ou atingem timeout. Uma análise de thread dump mostra que o processo está travado em GetTableSchema. |
N/A |
N/A |
Este problema pode ter múltiplas causas. Siga estas etapas para diagnosticá-lo:
|