Alibaba Cloud Realtime Compute for Apache Flink est une plateforme d'entreprise haute performance dédiée au traitement du big data en temps réel, construite sur Apache Flink. Hologres s'intègre étroitement à Flink. Cette intégration vous permet d'écrire et d'interroger des données en streaming en temps réel, facilitant ainsi la mise en place efficace d'un entrepôt de données en temps réel.
Types de services
Realtime Compute for Apache Flink ne stocke pas les données. Il traite les données provenant de systèmes de stockage externes et prend en charge les types de stockage de données suivants :
-
Source Table
Une source table fournit les données d'entrée pour un job Flink. Lorsqu'une table Hologres est utilisée comme source table, les données sont importées en mode batch et non en mode streaming. Hologres effectue une analyse complète de la table, envoie les données vers une destination en aval et le job se termine.
-
Dimension Table
Une dimension table est généralement utilisée pour des recherches ponctuelles par clé. Par conséquent, lorsque vous utilisez une table Hologres comme dimension table, nous vous recommandons d'utiliser le stockage orienté ligne. La condition JOIN doit utiliser la clé primaire complète de la table.
-
Result Table
Une result table reçoit et stocke les données de sortie des calculs Flink. Elle fournit des interfaces de lecture et d'écriture pour la consommation en aval.
Realtime Compute for Apache Flink s'intègre profondément avec Hologres pour offrir les fonctionnalités avancées de niveau entreprise suivantes :
-
Consommation du Hologres Binlog
Cette fonctionnalité vous permet de consommer les journaux de modifications des tables Hologres en utilisant le modèle de file d'attente de messages.
-
Flink Catalog
Vous pouvez importer les métadonnées Hologres en tant que catalog dans Flink. Cela vous permet de lire les métadonnées Hologres directement depuis la console Fully Managed Flink sans enregistrer manuellement les tables. Cette capacité améliore l'efficacité du développement et garantit l'exactitude du schéma.
-
Schema Evolution
Fully Managed Flink prend en charge le Schema Evolution. Lorsque Flink lit des données JSON, il peut analyser automatiquement les types de données et créer les colonnes de table correspondantes, permettant ainsi une évolution dynamique du modèle de données.
Le tableau suivant décrit les types de services Flink pris en charge par Hologres et leurs fonctionnalités.
|
Type de service |
Type de stockage de données |
Fonctionnalités avancées |
Description |
||||
|
Source table |
Result table |
Dimension table |
Hologres Binlog |
Flink Catalog |
Schema Evolution |
||
|
Semi-managed Flink |
Prend en charge le stockage orienté ligne et le stockage orienté colonne. Pour les source tables Binlog, nous vous recommandons d'utiliser le stockage orienté ligne ou le stockage hybride ligne-colonne. |
Prend en charge le stockage orienté ligne et le stockage orienté colonne. |
Nous vous recommandons d'utiliser le stockage orienté ligne ou le stockage hybride ligne-colonne. |
Pris en charge |
Pris en charge |
Pris en charge |
Utilise la plateforme de développement EMR Studio. |
|
Blink en mode exclusif (obsolète) |
Prend en charge le stockage orienté ligne et le stockage orienté colonne. Pour les source tables Binlog, nous vous recommandons d'utiliser le stockage orienté ligne ou le stockage hybride ligne-colonne. |
Prend en charge le stockage orienté ligne et le stockage orienté colonne. |
Nous vous recommandons d'utiliser le stockage orienté ligne ou le stockage hybride ligne-colonne. |
Hologres V0.8 prend uniquement en charge le stockage orienté ligne. Hologres V0.9 et versions ultérieures prennent en charge à la fois le stockage orienté ligne et le stockage orienté colonne. Nous vous recommandons d'utiliser le stockage orienté ligne. |
Non pris en charge |
Non pris en charge |
Utilise la plateforme de développement Bayes. Nous vous recommandons d'utiliser Fully Managed Flink. |
|
Apache Flink V1.10 |
Non pris en charge |
Prend en charge le stockage orienté ligne et le stockage orienté colonne. |
Non pris en charge |
Non pris en charge |
Non pris en charge |
Non pris en charge |
- |
|
Apache Flink V1.11 et versions ultérieures |
Non pris en charge |
Prend en charge le stockage orienté ligne et le stockage orienté colonne. |
Nous vous recommandons d'utiliser le stockage orienté ligne. |
Non pris en charge |
Non pris en charge |
Non pris en charge |
Le code du connecteur Hologres est open source depuis Apache Flink V1.11. Pour plus de détails, consultez alibabacloud-hologres-connectors. |
|
Apache Flink V1.13 et versions ultérieures |
Source tables batch uniquement |
Prend en charge le stockage orienté ligne et le stockage orienté colonne. |
Nous vous recommandons d'utiliser le stockage orienté ligne. |
Non pris en charge |
Non pris en charge |
Non pris en charge |
Le code du connecteur Hologres est open source depuis Apache Flink V1.11. Pour plus de détails, consultez alibabacloud-hologres-connectors. |
Notes de version du connecteur Hologres
|
Version de Flink |
Version VVR (Ververica Runtime) |
Version de Hologres |
Informations de mise à jour |
Références |
|
1.20 |
11.6 |
3.2.x 4.0.x 4.1.x |
Table source :
Catalogue :
Général :
|
|
|
1.20 |
11.5 |
3.2.x 4.0.x 4.1.x |
Table source :
Table de dimension :
Général :
Corrections de bugs :
|
|
|
1.20 |
11.4 |
3.2.x 4.0.x 4.1.x |
Table de destination (sink) :
Table de dimension :
Corrections de bugs :
|
|
|
1.20 |
11.3 |
3.1.x 3.2.x 4.0.x |
Table source :
Table de destination (sink) :
Général :
Corrections de bugs :
|
|
|
1.20 |
11.2 |
3.1.x 3.2.x 4.0.x |
Table de destination (sink) :
Général :
Corrections de bugs :
|
|
|
1.20 |
11.1 |
3.1.x 3.2.x |
Table source :
Table de destination (sink) :
Table de dimension :
Général :
|
|
|
1.20 |
11.0 |
3.1.x 3.2.x |
Général :
Table source :
|
|
|
1.17 |
8.0.11 |
2.1.x 2.2.x 3.0.x |
Table source :
Table de destination (sink) :
Général :
Corrections de bugs :
|
|
|
1.17 |
8.0.9~8.0.10 |
2.1.x 2.2.x 3.0.x |
|
|
|
1.17 |
8.0.8 |
2.1.x 2.2.x |
Table de destination (sink) :
|
|
|
1.17 |
8.0.7 |
2.1.x |
Table de dimension :
Général :
|
|
|
1.17 |
8.0.6 |
2.1.x |
Table source :
Général :
|
|
|
1.17 |
8.0.5 |
2.0.x 2.1.x |
Table source :
Table de destination (sink) :
Général :
|
|
|
1.17 |
8.0.4 |
2.0.x 2.1.x |
Table source :
Général :
|
|
|
1.17 |
8.0.3 |
2.0.x 2.1.x |
Général :
|
|
|
1.15 |
6.0.7 |
|
|
|
|
1.15 |
6.0.6 |
1.3.x |
Table source :
|
|
|
1.15 |
6.0.5 |
1.3.x |
|
|
|
1.15 |
6.0.3~6.0.4 |
1.3.x |
Table source :
Table de destination (sink) : Prise en charge ajoutée de l'écriture de données en mode Fixed Copy. Fixed Copy est une nouvelle fonctionnalité de Hologres V1.3. Par rapport au mode JDBC, le mode Fixed Copy offre un débit plus élevé et une latence de données plus faible via le streaming, et réduit la consommation de mémoire du client en éliminant la mise en lots. Catalogue Hologres :
Paramètre sdkMode : Différents modes sont disponibles pour différents types de tables dans Hologres. Le paramètre sdkMode est désormais utilisé pour consolider la sélection du mode. |
|
|
1.13 |
4.0.18 |
1.1 et versions ultérieures |
Correction d'un problème où la reporting des métriques pour une table de destination dégradait les performances d'écriture. |
|
|
1.13 et 1,15 |
4.0.15 et 6.0.2 |
1.1 et versions ultérieures |
Table source :
Table de dimension : Prise en charge ajoutée pour configurer un délai d'expiration de requête asynchrone ( Table de destination (sink) :
|
|
|
1.13 |
4.0.13 |
1.1 et versions ultérieures |
|
|
|
1.13 |
4.0.11 |
0.10 et versions ultérieures |
Prise en charge ajoutée pour CTAS et CDAS. |
|
|
1.13 |
4.0.8 |
0.10 et versions ultérieures |
Prise en charge ajoutée du catalogue Hologres pour les tables de destination, les tables sources et les tables de dimension. |
|
|
1.13 |
3.0.0 |
0.9 et versions ultérieures |
Prise en charge ajoutée pour la consommation de données en temps réel à partir de Hologres. |
Problèmes connus et correctifs
-
Remarques sur les problèmes et les correctifs
Les versions concernées par chaque problème sont clairement indiquées. Les versions ne figurant pas dans la plage listée ne sont pas affectées.
Si la version concernée est indiquée comme « N/A », le problème peut provenir d'un défaut du moteur Hologres plutôt que du connecteur.
-
Niveaux de gravité
P0 (Critique) : Une mise à niveau immédiate est recommandée. La survenance de ce problème peut affecter les opérations de production, telles que l'exactitude des requêtes ou les taux de réussite des écritures.
P1 (Élevé) : Une mise à niveau est recommandée pour prévenir d'éventuels problèmes.
P2 (Moyen) : Mise à niveau facultative. Ces problèmes surviennent de manière intermittente et peuvent être résolus avec une solution de contournement ou un redémarrage du job.
|
Gravité |
Description |
Version concernée |
Version corrigée |
Solution |
|
P0 |
Lors de l'écriture dans un sous-ensemble de colonnes d'une table de résultats, si les champs non écrits possèdent une valeur par défaut liée au temps (telle que current_timestamp ou now()), la valeur renseignée peut être incorrecte. Cela se produit car le mode FixedFE ne gère pas correctement les valeurs par défaut liées au temps. |
11.0-11,5 |
N/A |
Utilisez la fonction now() côté Flink pour transmettre la valeur au champ correspondant dans la table de résultats. Vous pouvez également définir le paramètre |
|
P0 |
Lors de la consommation de Binlog, si une colonne physique et une colonne de métadonnées portent le même nom, tel que |
8.0.11, 11.0-11.4 |
11.5 |
Effectuez une mise à niveau vers la version 11.5 ou ultérieure et définissez |
|
P1 |
Lors de la consommation de Binlog, l'élagage des colonnes peut lire les données dans les mauvaises colonnes. Cela se produit car holo-client peut récupérer des colonnes inattendues lors de la gestion de l'élagage des colonnes. |
11.3-11,5 |
Des correctifs ont été publiés pour toutes les versions concernées (11,3-11,5). |
Un correctif résout ce problème, il est donc peu probable que vous le rencontriez. Pour les jobs DataStream, utilisez la dernière version du connecteur. |
|
P2 |
Le scanner d'une table de dimension un-à-plusieurs ne se ferme pas correctement lorsque vous arrêtez le job. Cela peut entraîner des fuites de ressources ou des délais d'expiration du job lors de l'arrêt. Un problème dans la logique d'arrêt interne du scanner de holo-client est à l'origine de ce problème. |
Versions antérieures à 11,3 |
11.4 |
Effectuez une mise à niveau vers la version 11.4 ou ultérieure. |
|
P1 |
Lorsque vous utilisez la fonctionnalité check-and-put, le traitement d'un enregistrement de suppression génère une NullPointerException (NPE) et provoque l'échec du job. |
8.0.11-11.4 |
11.5 |
Effectuez une mise à niveau vers la version 11.5 ou ultérieure. Vous pouvez également éviter d'utiliser check-and-put sur les flux comportant des opérations de suppression. |
|
P2 |
Le connecteur échoue à reprendre depuis un point de contrôle si une table a été supprimée et recréée pendant l'exécution du job. |
11.0-11,2 |
11.3 |
Dans un environnement de test, vous pouvez effectuer une mise à niveau vers la version 11.3 ou ultérieure pour éviter ce problème. Remarque : La suppression d'une table pendant la consommation de Binlog affecte l'exactitude des données. Par conséquent, évitez de reconstruire une table pendant la consommation de Binlog dans un environnement de production. |
|
P1 |
La lecture des données RoaringBitmap via JDBC Binlog échoue et génère une exception d'analyse. |
11.0-11,2 |
11.3 |
Effectuez une mise à niveau vers la version 11.3 ou ultérieure. |
|
P1 |
Lors de la consommation à partir d'une table physiquement partitionnée, si un shard ne contient aucune donnée, le connecteur initialise incorrectement le Log Sequence Number (LSN) de l'état à 0. Cela entraîne une perte de données lorsque le job reprend à partir de cet état. |
Versions antérieures à 8.0.10, 11.0-11.2 |
8.0.11, 11.3 |
Effectuez une mise à niveau vers la version 8.0.11, ou 11.3 ou ultérieure. |
|
P1 |
L'écriture d'un tableau TEXT contenant un élément null génère une NPE et provoque l'échec de l'opération d'écriture. |
11.0-11,1 |
11.2 |
Effectuez une mise à niveau vers la version 11.2 ou ultérieure. Vous pouvez également vous assurer que le tableau TEXT en amont ne contient pas d'éléments null. |
|
P1 |
Un conflit entre le suffixe de création de partition et le partitionnement dynamique entraîne l'échec de la création de partition. |
11.0-11,2 |
11.3 |
Effectuez une mise à niveau vers la version 11.3 ou ultérieure. |
|
P2 |
Des exceptions non liées aux données erronées peuvent déclencher la politique de données erronées, entraînant une gestion incorrecte des exceptions valides (par exemple, elles sont silencieusement ignorées). |
11.0-11,1 |
11.2 |
Effectuez une mise à niveau vers la version 11.2 ou ultérieure. |
|
P1 |
Pour une table source d'intégration complète et incrémentielle, JDBC Binlog commence la consommation à LSN+1. Si le LSN actuel figure déjà dans un point de contrôle, la reprise à partir de celui-ci peut entraîner l'omission d'un enregistrement. |
8.0.10 et antérieures |
8.0.11 |
Effectuez une mise à niveau vers la version 8.0.11. |
|
P2 |
Dans un scénario CTAS, si une suppression de colonne et un changement de type se produisent lors de la même opération, une erreur de normalisation de type entraîne l'échec de la modification du schéma. |
8.0.10 et antérieures |
8.0.11 |
Effectuez une mise à niveau vers la version 8.0.11. Vous pouvez également éviter de supprimer une colonne et de modifier un type lors de la même opération. |
|
P2 |
Lors de l'utilisation d'une table de dimension de catalogue, la validation d'usine des paramètres Binlog génère une fausse exception positive. |
8.0.10 et antérieures |
8.0.11 |
Effectuez une mise à niveau vers la version 8.0.11. |
|
P2 |
Dans les scénarios multi-tables, un nombre excessif de requêtes d'interrogation JDBC entraîne l'expiration du délai SQL Gateway. |
11.0-11,5 |
11.6 |
Effectuez une mise à niveau vers la version 11.6. Vous pouvez également réduire le nombre de tables Hologres dans un seul job. |
|
P2 |
Lorsque le mode FixedFE est sélectionné, si une table contient un type de données non pris en charge par FixedFE, la connexion ne revient pas automatiquement à une connexion FE, ce qui provoque des exceptions d'écriture ou de requête. |
11.0-11,2 |
11.3 |
Effectuez une mise à niveau vers la version 11.3 ou ultérieure. Vous pouvez également spécifier manuellement le mode de connexion FE. |
|
P1 |
Lors de la consommation d'un Binlog en mode JDBC, une exception « Binlog Convert Failed » peut se produire, ou la lecture des données depuis certains shards peut se bloquer. Cela se produit car la passerelle de l'instance Hologres rencontre un problème lorsqu'elle renvoie une exception de délai d'expiration backend au client, ce qui bloque l'opération de lecture ou échoue avec une erreur d'analyse. |
N/A |
N/A |
Ce problème est plus susceptible de se produire lorsque la contre-pression du job est élevée. Si la lecture des données se bloque, redémarrez le job et reprenez à partir du dernier point de contrôle. Pour résoudre complètement ce problème, mettez à niveau votre instance Hologres vers la version V2.2.21 ou ultérieure. |
|
P2 |
Les déploiements de jobs sont lents ou expirent. Une analyse du vidage de threads montre que le processus est bloqué sur GetTableSchema. |
N/A |
N/A |
Ce problème peut avoir plusieurs causes. Vous pouvez le dépanner en suivant ces étapes :
|
|
P0 |
Lors de l'écriture de données TEXT, JSON ou JSONB dans Hologres en mode FixedFE (qui correspond au mode jdbc_fixed du connecteur), un caractère invalide dans la source de données peut générer une exception inattendue. Cela peut provoquer le redémarrage du nœud FE connecté, interrompant ainsi la connexion. |
N/A |
N/A |
Si vous ne pouvez pas garantir la validité de la chaîne en amont, vous devez écrire les données en mode JDBC. Vous devez également définir le paramètre Vous pouvez également mettre à niveau votre instance Hologres vers la version V3.0 ou ultérieure pour continuer à utiliser le mode jdbc_fixed. |
|
P1 |
Lorsque vous effectuez une jointure un-à-plusieurs sur une table de dimension JDBC, les tâches Flink peuvent connaître une utilisation élevée de la mémoire ou une erreur Out Of Memory (OOM). |
N/A |
N/A |
Dans Hologres V1.3, si vous utilisez Pour résoudre complètement ce problème, mettez à niveau votre instance Hologres vers la version V2.0 ou ultérieure. |
|
P1 |
Un job Binlog génère l'exception |
8.0.4 |
8.0.9 |
À partir de la version 8.0.9, la vérification de l'ID de table n'est plus appliquée. À la place, un avertissement est enregistré, ce qui permet au job de reprendre à partir du dernier état. Cependant, évitez de reconstruire une table pendant qu'un job Binlog est en cours d'exécution, car cette opération entraîne la perte de toutes les données Binlog précédentes. |
|
P2 |
Une contre-pression se produit pendant l'exécution d'un job. Un vidage de threads montre que le pool d'exécution est bloqué dans la méthode close() ou start(). Cela peut se produire si plusieurs clients partagent le même pool de connexions, ce qui peut entraîner un interblocage empêchant la fermeture correcte du pool de connexions. |
8.0.5 |
8.0.9 |
Mettez à niveau la version du connecteur. |
|
P2 |
Si vous exécutez un job pour une consommation complète et incrémentielle après avoir effectué une opération |
8.0.6 et antérieures |
8.0.7 |
Mettez à niveau la version du connecteur ou spécifiez une heure de début pour la consommation incrémentielle. |
|
P1 |
Si une table de dimension contient un grand nombre de champs, le déploiement du job expire. |
8.0.6 |
8.0.7 |
Mettez à niveau la version du connecteur. |
|
P0 |
Lorsque le paramètre Remarque
Ce problème n'affecte pas les tables sources pour l'intégration complète et incrémentielle ni les tables sources Binlog. |
8.0.5 et antérieures |
8.0.6 |
Mettez à niveau la version du connecteur. |
|
P0 |
Lorsque vous écrivez des données JSON ou JSONB dans Hologres en mode FixedFE (qui correspond au mode |
8.0.5 et antérieures |
Aucune |
Si la validité des chaînes JSON ou JSONB en amont ne peut pas être garantie, utilisez le mode JDBC pour écrire les données. |
|
P1 |
Lors de l'exécution d'une jointure un-à-plusieurs sur une table de dimension JDBC, les exceptions internes telles que les échecs de connexion ne sont pas correctement propagées. Cela peut se manifester par une contre-pression sur le nœud de jointure asynchrone, arrêtant ainsi le flux de données. Ce problème survient rarement. |
6.0.7 et antérieures |
8.0.3 |
Mettez à niveau la version du connecteur. Vous pouvez également redémarrer le job comme solution temporaire. |
|
P1 |
Une fuite de mémoire se produit lors de la consommation de données Binlog en mode JDBC. Cela peut se manifester par un taux de consommation élevé au début du job, qui diminue ensuite continuellement. |
6.0.7 et antérieures |
6.0.7 |
Mettez à niveau la version du connecteur. Pour les jobs DataStream, vous devez utiliser la dépendance de la version 6.0.7-1. |
|
P0 |
Lors de l'écriture en mode JDBC, les exceptions capturées lors d'un vidage planifié (contrôlé par le paramètre jdbcWriteFlushInterval) ne sont propagées qu'au traitement de l'enregistrement de données suivant. Si le trafic d'écriture est faible, un point de contrôle peut être créé avec succès alors qu'une exception a été capturée mais pas encore propagée. En cas d'échec ultérieur, le job reprendra à partir de ce point de contrôle invalide, ce qui peut entraîner une perte de données. |
6.0.6 et antérieures |
6.0.7 |
Ce problème est plus susceptible de se produire avec un trafic faible. Mettez à niveau la version du connecteur, ou définissez jdbcWriteFlushInterval sur une valeur supérieure à l'intervalle de point de contrôle. |
|
P2 |
Lors de la consommation de données Binlog en mode JDBC sans définir de nom de slot, le système en crée un automatiquement. Si le nom de la table ou du schéma contient des caractères spéciaux, le nom de slot généré automatiquement est invalide et provoque une erreur de syntaxe. |
6.0.6 |
6.0.7 |
Mettez à niveau la version du connecteur. Pour les jobs DataStream, vous devez utiliser la dépendance de la version 6.0.7-1. |
|
P1 |
Si différentes instances ou bases de données Hologres dans le même job utilisent le même |
6.0.6 et antérieures |
6.0.7 |
Utilisez un |
|
P1 |
Une NPE est générée si une table de dimension contient un champ de chaîne avec une valeur |
6.0.6 |
6.0.7 |
Mettez à niveau la version du connecteur. |
|
P0 |
Le pushdown de filtre est activé par défaut pour les tables sources Hologres. Cependant, si un job utilise également une table de dimension Hologres, et que le DML d'écriture contient un filtre sur un champ non clé primaire de la table de dimension, le filtre est également incorrectement poussé vers la table de dimension. Cela peut entraîner des résultats de jointure de table de dimension incorrects. |
6.0.3-6.0.5 |
6.0.6 |
Mettez à niveau la version du connecteur. |
|
P0 |
Si plusieurs tables de résultats ont des paramètres |
6.0.2 et antérieures |
6.0.3 |
Définissez le |
|
P1 |
Une NPE est générée si le champ |
6.0.2 |
6.0.3 |
N'utilisez pas ce champ, ou mettez à niveau la version du connecteur. |
|
P1 |
La publication de métriques affecte les performances d'écriture des tables de résultats. Un |
4.0.15-4.0.17 |
4.0.18 |
Utilisez une version non affectée par ce problème. |
|
P2 |
Lors de la lecture de données de type STRING ou STRING ARRAY à partir d'une table source par lot, l'analyse échoue si les données contiennent des caractères spéciaux. |
4.0.14 et antérieures |
4.0.15 |
Supprimez les données erronées de la table source, ou mettez à niveau la version du connecteur. |
|
P2 |
Si vous déclarez des champs spécifiques à Binlog, tels que |
4.0.13 |
4.0.14 |
Évitez d'utiliser la fonctionnalité d'intégration complète et incrémentielle, ou mettez à niveau la version du connecteur. |