(Le premier article sur l'ensemble du réseau) Data Warehouse Topic - Solution de garantie de rapidité

Dans la voie de la construction de l'entrepôt de données, l'un des composants dépendants indispensables est le système de planification. À l'heure actuelle, il existe de nombreux excellents produits sur le marché, tels que le système de flux de travail avec DAG comme noyau : Azkaban, Oozie, Airflow, DolphinScheduler ; le système de chronométrage représenté par Quartz comprend Elastic-Job, Xxl-Job, Saturn, PowerJob, etc. A propos du système de planification L'importance de , ne sera pas développée ici.

Comme nous le savons tous, dans la norme de construction de l'entrepôt de données, il existe deux indicateurs de mesure de l'actualité et de la stabilité . En même temps, la qualité de ces deux indicateurs dépend également du fonctionnement normal du système de planification et du fonctionnement des fonctions. riche. Puis cet article se focalisera sur les standards de construction d'entrepôt de données pour introduire les fonctions nécessaires du système d'ordonnancement dépendant :

1. Relancez le retour en arrière

1.1. Retour en arrière sur les tâches

 在日常工作当中,对于ETL工程师或者建模工程师等数据人员来说调整开发口径或者修复计算逻辑并不是痛苦的事情,而历史数据的修复可以说是数据人的噩梦,有可能要花费上一周甚至一个月的时间。举个例子:某运营部门想要看每天近一年窗口截止当日的成功下单的用户数,对于开发这种需求来说可能两个小时就搞定了(当然下面的SQL并没有经过任何优化的,也没有涉及到任何模型,只是举例说明)。
--统计近一年,每天截止当日成功下单的用户数
select 
  '统计日',
  count(distinct user_id) as uv
from dw_table
where create_date>=date_sub(统计日,365)
    and create_date<='统计日'
    and pay_status='成功下单'

Puis, après un mois de fonctionnement normal, le collègue d'exploitation est soudainement venu à la porte et a dit que le calibre devait être ajusté. Cela dépend du nombre de tous les utilisateurs au jour de la statistique et il doit restaurer toutes les données de l'indicateur. compté le mois dernier. À ce moment, voulez-vous faire exploser le ciel, puis voulez-vous exécuter manuellement les données pendant un mois selon le SQL suivant ?

--统计截止2021-09-01 成功下单的用户数
select 
  '统计日',
  count(distinct user_id) as uv
from dw_table
where create_date>=date_sub('2021-09-01',365)
    and create_date<='2021-09-01'

--统计截止2021-09-02 成功下单的用户数
select 
  '统计日',
  count(distinct user_id) as uv
from dw_table
where create_date>=date_sub('2021-09-02',365)
    and create_date<='2021-09-02'

Par conséquent, dans le cas de tâches de statistiques de fenêtre ou de tâches qui nécessitent une formation sur le modèle d'autodépendance ou de support , lorsque le calibre est ajusté et que les données sont réparées, le traitement de la chair humaine devient faible. Si les données peuvent être retracées à tout moment au niveau du système de planification (à condition que les données dépendantes des tâches puissent couvrir la date tracée), la main-d'œuvre peut être complètement libérée à ce moment.

1.2, réexécution du point d'arrêt

Dans le développement quotidien, les erreurs de débogage des tâches sont inévitables. Par exemple : pour les tâches statistiques (impliquant de grandes tables de centaines de millions), cela peut prendre des heures pour terminer la tâche, donc pour Cette tâche nécessite également de configurer un nœud d'audit pour garantir l'unicité Lorsqu'une erreur d'audit se produit en raison d'une erreur de configuration d'audit pendant le processus de débogage, elle doit être réajustée, vérifiée et réparée, et sa réexécution prendra quelques heures. De cette façon, cela peut prendre plusieurs jours pour développer et terminer une tâche, ce qui réduit considérablement l'efficacité du travail.

Si le système de planification peut prendre en charge la réexécution du nœud, il lui suffit de réajuster le nœud d'audit sans dépenser de ressources pour exécuter à nouveau le nœud SQL, l'efficacité globale sera alors grandement améliorée et le gaspillage de ressources sera également réduit.

image

2. Dépendance des tâches

Il existe actuellement deux types de dépendances de tâches : l'autodépendance et la dépendance amont-aval.

2.1. Autosuffisance

 在数仓建设的需求场景中,会出现当前任务的数据依赖于上个版本任务产出的数据。因此需要调度系统能够支持这种自身依赖的功能,对于DAG流的调度产品是能够支持的。

2.2 Dépendances en amont et en aval

对于上下游依赖的场景,是很容易理解的,例如在前面讲到稽核任务是依赖于SQL任务执行成功后才能够执行。

3. Conception prioritaire

Pour les besoins en données du développement quotidien, la tâche elle-même peut être graduée (c'est-à-dire, si la tâche appartient à un niveau élevé, moyen ou bas), et la définition des priorités doit être basée sur les exigences de rapidité de la demande. côté pour les données et les exigences commerciales. Selon le degré d'importance et l'importance axée sur l'utilisateur, etc.

Bien sûr, l'un des avantages de définir la priorité des tâches est : du point de vue de la stratification de l'entrepôt de données, la couche inférieure est l'accès aux données. Aux premières heures du matin, un grand nombre de tâches de synchronisation seront appelées et exécutées en même temps. , donc ce temps est aussi une ressource des plus rares. Du point de vue de la priorité, toutes les tâches ne doivent pas être appelées en même temps, mais sont exécutées séquentiellement en fonction de l'importance de la priorité. À ce stade, les ressources seront allouées de manière relativement raisonnable, ce qui est important pour la sortie des données en temps opportun. Il y a aussi certaines garanties. Bien sûr, le réglage de la priorité des tâches ne peut pas être entièrement maintenu manuellement, en particulier pour des dizaines de millions de tâches. Après tout, il est impossible pour tout le monde de se souvenir de la relation de tâche de l'ensemble du lien, il est donc nécessaire de s'appuyer sur un ensemble de algorithmes raisonnables basés sur La priorité fixée artificiellement est calculée pour obtenir une priorité raisonnable. Plus précisément, comment concevoir une priorité raisonnable, voici quatre situations ( reportez-vous à la méthode de retour en arrière ) :

image

Pour la situation 1 : le haut est haut et le bas est haut : lorsqu'un nouveau développement de la tâche B doit s'appuyer sur la tâche A, et que la tâche B est plus importante, alors à ce moment, la priorité peut être directement déterminée manuellement.

Pour la situation 2 : le haut est haut et le bas est bas : lorsqu'un nouveau développement de la tâche B doit s'appuyer sur la tâche A, mais que la tâche B n'est pas très importante, alors à ce moment, la priorité définie manuellement peut toujours prévaloir.

Situation 3 : Up-down et down-high : Lors du développement d'une nouvelle tâche B qui doit s'appuyer sur la tâche A, la tâche B est très importante, mais on constate que la priorité de la tâche A n'est pas très élevée, alors c'est nécessaire de s'appuyer sur un algorithme raisonnable pour déduire que la tâche A est hautement prioritaire et apporter des modifications.

Situation 4 : Up-down et down-down : Lorsqu'une tâche B nouvellement développée doit s'appuyer sur la tâche A, et que la tâche B n'est pas très importante et que la tâche A n'est pas importante, alors à ce moment, la priorité peut être directement déterminée manuellement .

4. Nouvelle tentative de tâche

Lorsque nous avons parlé de conception prioritaire, nous avons mentionné que la nuit est le moment où les ressources sont les plus rares, de sorte que de nombreuses tâches peuvent provoquer des erreurs dues à des problèmes de ressources. Par conséquent, le système de planification doit prendre en charge la fonction de réexécution automatique, afin de réduire le situation d'intervention humaine. Bien sûr, il existe également un cas où une erreur est causée par la logique de la tâche elle-même, et l'exécution de la tâche prend beaucoup de temps, et les tentatives affecteront grandement l'efficacité de la sortie de la tâche, donc le nombre de tentatives doit être raisonnablement contrôlé.

5. Notification d'alarme (responsabilité)

La dernière ligne de défense pour la production de données en temps opportun est la nécessité d'une intervention humaine. À ce stade, le système de garde doit être introduit. Cependant, afin de protéger la santé physique et mentale du personnel de garde, le nombre des observations nocturnes doivent être réduites autant que possible. Par conséquent, il est essentiel que le système de répartition fournisse des services d'alarme précis, efficaces et opportuns.Bien sûr, cela implique divers facteurs tels que la communication de base, l'équipement et les fournisseurs de services.

Sur la base d'assurer la notification d'alarme, il est également nécessaire d'assurer la qualité et l'efficacité du service. Il est nécessaire que le personnel de service ait le sens des responsabilités et traite les problèmes en temps opportun pour vraiment assurer la ponctualité. , il est également nécessaire d'assurer le respect des délais, ce qui nécessite la mise en place d'un processus de notification à tous les niveaux sur la base du système d'alerte et de garde.

image

6. Visualisation

Dans le processus de création d'un entrepôt de données, le nombre de tâches planifiées est très important et les types de planification et les dépendances des tâches elles-mêmes sont très complexes, de sorte que la probabilité d'erreurs est également très élevée. Avoir une interface visuelle est très convivial pour problèmes de positionnement.

7. Statut de planification

image

おすすめ

転載: blog.csdn.net/qq_28680977/article/details/121864951