Des accidents quotidiens à la stabilité : Informatica 10 à travers les yeux d'un administrateur

Des accidents quotidiens à la stabilité : Informatica 10 à travers les yeux d'un administrateur

Le composant ETL de l'entrepôt de données est souvent éclipsé par l'entrepôt lui-même et reçoit moins d'attention que la base de données principale ou le composant frontal, la BI et le reporting. Dans le même temps, du point de vue des mécanismes de remplissage de l'entrepôt en données, ETL joue un rôle clé et ne nécessite pas moins d'attention de la part des administrateurs que les autres composants. Je m'appelle Alexander, j'administre maintenant ETL chez Rostelecom, et dans cet article je vais essayer de partager un peu ce à quoi l'administrateur de l'un des systèmes ETL les plus célèbres dans un grand entrepôt de données chez Rostelecom doit faire face.

Si chers lecteurs connaissent déjà en général notre projet d'entrepôt de données et le produit Informatica PowerCenter, vous pouvez immédiatement passer à la section suivante.

Il y a plusieurs années, l'idée d'un entrepôt de données d'entreprise unique a mûri et a commencé à être mise en œuvre chez Rostelecom. Un certain nombre de référentiels permettant de résoudre des problèmes individuels avaient déjà été créés, mais le nombre de scénarios a augmenté, les coûts de support ont également augmenté et il est devenu clair que l'avenir résidait dans la centralisation. Sur le plan architectural, il s'agit du stockage lui-même, composé de plusieurs couches, implémenté sur Hadoop et GreenPlum, des bases de données auxiliaires, des mécanismes ETL et BI.

Dans le même temps, en raison du grand nombre de sources de données hétérogènes et géographiquement réparties, un mécanisme spécial de téléchargement de données a été créé, dont le fonctionnement est contrôlé par Informatica. En conséquence, les paquets de données se retrouvent dans la zone d'interface Hadoop, après quoi commencent les processus de chargement des données via les couches de stockage, Hadoop et GreenPlum, et ils sont gérés par le mécanisme de contrôle dit ETL implémenté dans Informatica. Ainsi, le système Informatica est l'un des éléments clés qui assurent le fonctionnement de l'entrepôt.

Notre stockage sera décrit plus en détail dans l'un des articles suivants.

Informatica PowerCenter/Big Data Management est actuellement considéré comme le logiciel leader dans le domaine des outils d'intégration de données. Il s'agit d'un produit de la société américaine Informatica, qui est l'un des acteurs les plus puissants en matière d'ETL (Extract Transform Load), de gestion de la qualité des données, de MDM (Master Data Management), d'ILM (Information Lifecycle Management) et bien plus encore.

Le PowerCenter que nous utilisons est un serveur d'applications Tomcat intégré dans lequel les applications Informatica elles-mêmes s'exécutent, implémentant ses services :

Domaine, en fait, c'est la base de tout le reste ; les services, les utilisateurs et les composants GRID opèrent au sein du domaine.

Console d'administration, un outil de gestion et de surveillance basé sur le Web, en plus du client Informatica Developer, le principal outil d'interaction avec le produit

MRS, service de référentiel de modèles, un référentiel de métadonnées, est une couche entre la base de données dans laquelle les métadonnées sont physiquement stockées et le client Informatica Developer dans lequel le développement s'effectue. Les référentiels stockent des descriptions de données et d'autres informations, y compris pour un certain nombre d'autres services Infromatica, par exemple, des calendriers d'exécution de tâches (Schedules) ou de surveillance des données, ainsi que des paramètres d'application, permettant notamment l'utilisation de la même application pour travailler avec diverses sources et récepteurs de données.

DIS, Service d'intégration de données, il s'agit d'un service dans lequel se déroulent les principaux processus fonctionnels, les applications qui y sont exécutées et les lancements effectifs des Workflows (descriptions de la séquence des mappages et de leurs interactions) et des Mappings (transformations, blocs dans lesquels les transformations elles-mêmes se produisent, traitement des données ) prend place.

Configuration GRILLE – essentiellement, une option pour construire un complexe utilisant plusieurs serveurs, lorsque la charge lancée par DIS est répartie entre les nœuds (c'est-à-dire les serveurs qui font partie du domaine). Dans le cas de cette option, en plus de répartir la charge dans DIS via une couche d'abstraction GRID supplémentaire qui unit plusieurs nœuds, sur laquelle DIS s'exécute au lieu de travailler sur un seul nœud spécifique, des instances MRS de sauvegarde supplémentaires peuvent également être créées. Vous pouvez même mettre en œuvre une haute disponibilité, où des appels externes peuvent être effectués via des nœuds de sauvegarde en cas de panne du nœud principal. Nous avons abandonné cette option de construction pour l'instant.

Des accidents quotidiens à la stabilité : Informatica 10 à travers les yeux d'un administrateur
Informatica PowerCenter, schéma

Au début du travail dans le cadre de la chaîne d'approvisionnement des données, des problèmes survenaient régulièrement, certains d'entre eux étant dus au fonctionnement instable d'Informatica à cette époque. Je vais partager certains des moments mémorables de cette saga : la maîtrise d'Informatica 10.

Des accidents quotidiens à la stabilité : Informatica 10 à travers les yeux d'un administrateur
Ancien logo Informatica

Notre domaine de responsabilité comprend également d'autres environnements Informatica, ils ont leurs propres spécificités en raison d'une charge différente, mais pour l'instant je me souviendrai exactement de la façon dont Informatica s'est développé en tant que composant ETL de l'entrepôt de données lui-même.

Comment est-ce arrivé

En 2016, lorsque nous sommes devenus responsables du travail d'Informatica, celui-ci avait déjà atteint la version 10.0, et pour les collègues optimistes qui décidaient d'utiliser un produit avec une version mineure .0 dans une solution sérieuse, tout semblait évident - nous devons utiliser la nouvelle version ! Du point de vue des ressources matérielles, tout allait bien à cette époque.

Depuis le printemps 2016, un entrepreneur est responsable du travail d'Informatica et, selon les quelques utilisateurs du système, « il travaillait plusieurs fois par semaine ». Ici, il est nécessaire de préciser que le référentiel était de facto au stade PoC, qu'il n'y avait aucun administrateur dans l'équipe et que le système tombait constamment en panne pour diverses raisons, après quoi l'ingénieur de l'entrepreneur l'a repris.

À l'automne, trois administrateurs ont rejoint l'équipe, se partageant leurs domaines de responsabilité, et le travail normal a commencé pour organiser le fonctionnement des systèmes du projet, y compris Informatica. Par ailleurs, il faut dire que ce produit n'est pas très répandu et dispose d'une large communauté dans laquelle vous pouvez trouver des réponses à toutes vos questions et résoudre n'importe quel problème. Par conséquent, le support technique complet du partenaire russe Informatica a été très important, avec l'aide duquel toutes nos erreurs et erreurs du jeune Informatica 10 ont été corrigées.

La première chose que nous avons dû faire pour les développeurs de notre équipe et le sous-traitant a été de stabiliser le travail d'Informatica lui-même, afin d'assurer la fonctionnalité de la console d'administration Web (Informatica Administrator).

Des accidents quotidiens à la stabilité : Informatica 10 à travers les yeux d'un administrateur
C'est ainsi que nous rencontrions souvent les développeurs Informatica

Mis à part le processus de recherche des raisons, la principale raison des plantages était le modèle d'interaction du logiciel Informatica avec la base de données du référentiel, qui se trouvait sur un serveur relativement distant, du point de vue du paysage réseau. Cela a entraîné des retards et perturbé les mécanismes qui surveillent l'état du domaine Informatica. Après quelques ajustements de la base de données, la modification des paramètres d'Informatica, ce qui la rendait plus tolérante aux retards de la base de données, et finalement la mise à jour de la version d'Informatica vers 10.1 et le transfert de la base de données du serveur précédent vers un serveur situé plus près d'Informatica, le problème a perdu son ampleur. pertinence, et depuis lors, il y a eu des crashs de ce genre que nous n'observons pas.

Des accidents quotidiens à la stabilité : Informatica 10 à travers les yeux d'un administrateur
L'une des tentatives pour faire fonctionner Informatica Monitor

La situation de la console d'administration était également critique. Étant donné qu'un développement actif était en cours directement dans un environnement relativement productif, les collègues devaient constamment analyser le travail de mappage et le flux de travail « en déplacement ». Dans le nouveau Informatica, le service d'intégration de données ne dispose pas d'un outil distinct pour une telle surveillance, mais une section de surveillance est apparue dans la console Web d'administration (Informatica Administrator Monitor), dans laquelle vous pouvez surveiller le fonctionnement des applications, du flux de travail et des mappages. lancements, journaux. Périodiquement, la console devenait complètement indisponible, ou les informations sur les processus en cours dans DIS arrêtaient de se mettre à jour, ou des erreurs se produisaient lors du chargement des pages.

Des accidents quotidiens à la stabilité : Informatica 10 à travers les yeux d'un administrateur
Sélection des paramètres Java pour stabiliser le fonctionnement

Le problème a été corrigé de plusieurs manières, des expériences ont été menées pour modifier les paramètres, des journaux et du jstack ont ​​été collectés, envoyés au support, en même temps il y avait une recherche active sur Google et simplement une observation.

Tout d'abord, un MRS distinct a été créé pour la surveillance ; comme il s'est avéré plus tard, c'est l'un des principaux consommateurs de ressources dans nos environnements, puisque les mappages sont lancés de manière très intensive. Les paramètres concernant le tas Java et un certain nombre d'autres ont été modifiés.
En conséquence, lors de la prochaine mise à jour d'Informatica 10.1.1, le fonctionnement de la console et du moniteur a été stabilisé, les développeurs ont commencé à travailler plus efficacement et les processus réguliers sont devenus de plus en plus réguliers.

L'expérience d'interaction entre le développement et l'administration peut être intéressante. La question d’une compréhension générale du fonctionnement des choses, de ce qui peut être fait et de ce qui ne peut pas l’être, est toujours importante lorsqu’on utilise des systèmes complexes. Par conséquent, nous pouvons vous recommander en toute sécurité de former d'abord l'équipe administrative sur la façon d'administrer le logiciel et l'équipe de développement sur la façon d'écrire du code et de dessiner des processus dans le système, puis d'envoyer ensuite le premier et le second travailler sur le résultat. C’est vraiment important lorsque le temps n’est pas une ressource infinie. De nombreux problèmes peuvent être résolus même par une recherche aléatoire d'options, mais certains nécessitent parfois une connaissance a priori - notre cas confirme l'importance de comprendre cet axiome.

Par exemple, lorsque nous avons essayé d'activer le contrôle de version dans MRS (il s'est finalement avéré qu'une version différente de SVN était nécessaire), après un certain temps, nous avons été alarmés de découvrir que le temps de redémarrage du système avait augmenté jusqu'à plusieurs dizaines de minutes. Après avoir trouvé la raison du retard de démarrage et de la désactivation du versioning, nous avons encore une fois bien fait.

Les obstacles notables associés à Informatica incluent la bataille épique contre la croissance des threads Java. À un moment donné, l’heure est à la réplication, c’est-à-dire à l’extension des processus établis à un grand nombre de systèmes sources. Il s'est avéré que tous les processus de la version 10.1.1 ne fonctionnaient pas correctement et qu'après un certain temps, DIS est devenu inutilisable. Des dizaines de milliers de threads ont été détectés, leur nombre augmentant particulièrement sensiblement au cours de la procédure de déploiement de l'application. Parfois, je devais redémarrer plusieurs fois par jour pour restaurer les fonctionnalités.

Ici, nous devons remercier le support ; les problèmes ont été localisés et résolus relativement rapidement à l'aide d'EBF (Emergency Bug Fix) - après cela, tout le monde a eu le sentiment que l'outil fonctionnait vraiment.

Ça fonctionne encore!

Au moment où nous avons commencé à travailler en mode cible, Informatica ressemblait à ceci. Version d'Informatica 10.1.1HF1 (HF1 est HotFix1, un assemblage fournisseur issu d'un complexe d'EBF) avec EBF installé en plus, qui corrige nos problèmes de mise à l'échelle et quelques autres, sur un serveur sur trois qui faisaient partie de GRID, 20 cœurs x86_64 et le stockage, sur une vaste gamme de disques locaux lents - c'est la configuration du serveur pour un cluster Hadoop. Sur un autre serveur similaire - le SGBD Oracle avec lequel fonctionnent à la fois le domaine Informatica et le mécanisme de contrôle ETL. Tout cela est surveillé par les outils de surveillance standard utilisés dans l'équipe (Zabbix + Grafana) des deux côtés - Informatica elle-même avec ses services et les processus de chargement qui y sont associés. Désormais, les performances et la stabilité, sans prendre en compte les facteurs externes, dépendent désormais des paramètres qui limitent la charge.

Séparément, nous pouvons parler de GRID. L'environnement a été construit sur trois nœuds, avec possibilité d'équilibrage de charge. Cependant, lors des tests, il a été découvert qu'en raison de problèmes d'interaction entre les instances en cours d'exécution de nos applications, cette configuration ne fonctionnait pas comme prévu, et ils ont décidé d'abandonner temporairement ce schéma de construction, en supprimant deux des trois nœuds du domaine. Dans le même temps, le schéma lui-même est resté le même, et il s'agit désormais précisément d'un service GRID, mais dégénéré en un seul nœud.

À l'heure actuelle, la difficulté reste liée à une baisse des performances lors du nettoyage régulier du circuit du moniteur - avec des processus simultanés dans le CNN et un nettoyage en cours, des dysfonctionnements dans le fonctionnement du mécanisme de contrôle ETL peuvent survenir. Ce problème est actuellement résolu « comme une béquille » - en effaçant manuellement le circuit du moniteur, avec la perte de toutes ses données précédentes. Ceci n'est pas trop critique pour la productivité, dans le cadre d'un fonctionnement normal, mais pour l'instant, la recherche d'une solution normale est en cours.

Un autre problème découle de cette même situation : il arrive parfois que plusieurs lancements de notre mécanisme de contrôle se produisent.

Des accidents quotidiens à la stabilité : Informatica 10 à travers les yeux d'un administrateur
Plusieurs lancements d'applications entraînant une défaillance du mécanisme

Lors d'un fonctionnement selon un calendrier, en période de forte charge sur le système, des situations surviennent parfois qui conduisent à une panne du mécanisme. Le problème est toujours en cours de résolution manuelle et une solution permanente est recherchée.

De manière générale, nous pouvons résumer que lorsqu'il y a une charge importante, il est très important de fournir des ressources adéquates, cela s'applique également aux ressources matérielles d'Informatica lui-même, et de même pour son référentiel de base de données, ainsi que de fournir des paramètres optimaux. pour eux. De plus, la question reste ouverte de savoir quel schéma de placement de base de données est le meilleur : sur un hôte distinct ou sur celui sur lequel le logiciel Informatica s'exécute. D'une part, cela coûtera moins cher sur un serveur et, une fois combinés, l'éventuel problème d'interaction réseau est pratiquement éliminé ; d'autre part, la charge sur l'hôte de la base de données est complétée par la charge d'Informatica.

Comme pour tout produit sérieux, Informatica propose aussi des moments amusants.
Un jour, alors que je réparais une sorte d'accident, j'ai remarqué que les journaux MRS indiquaient étrangement l'heure des événements.

Des accidents quotidiens à la stabilité : Informatica 10 à travers les yeux d'un administrateur
Dualisme temporel dans les journaux MRS « par conception »

Il s’est avéré que les horodatages sont écrits au format 12 heures, sans préciser AM/PM, c’est-à-dire avant midi ou après. Une candidature a même été ouverte à ce sujet et une réponse officielle a été reçue - c'est ainsi que cela était prévu, les notes sont écrites dans le journal MRS exactement dans ce format. Autrement dit, il reste parfois une certaine intrigue concernant le moment où se produit une ERREUR...

Efforcez-vous d'obtenir le meilleur

Aujourd'hui, Informatica est un outil assez stable, pratique pour les administrateurs et les utilisateurs, extrêmement puissant en termes de capacités et de potentiel actuels. Il dépasse plusieurs fois nos besoins fonctionnels et est désormais utilisé de facto dans le projet d'une manière qui n'est pas la plus typique et la plus typique. Les difficultés sont en partie liées au fonctionnement des mécanismes - la particularité est que dans un court laps de temps, un grand nombre de threads sont lancés qui mettent à jour de manière intensive les paramètres et fonctionnent avec la base de données du référentiel, tandis que les ressources matérielles du serveur sont presque entièrement utilisées. par le processeur.

Nous sommes maintenant sur le point de passer à Informatica 10.2.1 ou 10.2.2, qui ont retravaillé certains mécanismes internes et promettent de prendre en charge pour éliminer certains des problèmes de performances et de fonctionnalités que nous rencontrons actuellement. Et d'un point de vue matériel, nous attendons pour nous des serveurs avec une configuration optimale, compte tenu de la réserve pour le futur proche due à la croissance et au développement du stockage.

Bien entendu, il y aura des tests, des vérifications de compatibilité et éventuellement des modifications architecturales dans la partie HA GRID. Le développement au sein d'Informatica va se poursuivre, car à court terme nous ne pouvons rien fournir pour remplacer le système.
Et ceux qui seront responsables de ce système à l'avenir seront certainement en mesure de l'amener aux indicateurs de fiabilité et de performance requis par les clients.

L'article a été préparé par l'équipe de gestion des données de Rostelecom

Des accidents quotidiens à la stabilité : Informatica 10 à travers les yeux d'un administrateur
Logo Informatica actuel

Source: habr.com

Ajouter un commentaire