Il componente ETL di un data warehouse è spesso trascurato rispetto allo stesso warehouse, ricevendo meno attenzione rispetto al database principale o ai componenti front-end, BI e reportistica. Tuttavia, da un punto di vista meccanico, l'approvvigionamento dei dati nel magazzino, l'ETL gioca un ruolo chiave e richiede altrettanta attenzione da parte degli amministratori quanto gli altri componenti. Mi chiamo Alessandro, attualmente gestisco l'ETL in Rostelecom, e in questo articolo cercherò di condividere alcune esperienze che un amministratore di un noto sistema ETL in un grande data warehouse come quello di Rostelecom deve affrontare.
Se i gentili lettori sono già familiari con il nostro progetto di data warehouse e con il prodotto Informatica PowerCenter, possono passare direttamente alla sezione successiva.
Qualche anno fa, in Rostelecom, è emersa e ha cominciato a prendere forma l'idea di un'unica piattaforma di archiviazione dati aziendale. Sono già stati creati vari archivi per scopi specifici, ma il numero di scenari aumentava, le spese di supporto cresceva e divenne chiaro che il futuro era nella centralizzazione. Architettonicamente, questo archivio è composto da più strati, realizzato su Hadoop e GreenPlum, con database ausiliari, meccanismi ETL e BI.
A causa dell'elevato numero di fonti dati territorialmente distribuite e eterogenee, è stato creato un meccanismo speciale per l'esportazione dei dati, il cui funzionamento è gestito da Informatica. Di conseguenza, i pacchetti di dati vengono inviati all'area interfaccia di Hadoop, dopo di che inizia il processo di caricamento dei dati attraverso gli strati dell'archivio, in Hadoop e GreenPlum, coordinato da un meccanismo di gestione ETL implementato in Informatica. In questo modo, il sistema Informatica è uno degli elementi chiave che garantiscono il funzionamento dell'archivio.
Maggiore approfondimento sul nostro archivio verrà fornito in uno dei prossimi post.
Informatica PowerCenter/Big Data Management è attualmente considerato il software leader nel settore degli strumenti di integrazione dei dati. È un prodotto dell'azienda americana Informatica, uno dei principali attori nel campo dell'ETL (Extract Transform Load), gestione della qualità dei dati, MDM (Master Data Management), ILM (Information Lifecycle Management) e altro.
Il PowerCenter che utilizziamo è un server applicativo integrato Tomcat, dove operano le applicazioni Informatica che realizzano i suoi servizi:
Dominio, fondamentalmente questo è la base per tutto il resto, nel dominio lavorano servizi, utenti, componenti GRID.
Administrator Console, strumento web di gestione e monitoraggio, oltre al client Informatica Developer, è lo strumento principale per interagire con il prodotto
MRS, Model Repository Service, un repository di metadati funge da strato intermedio tra il database, in cui i metadati sono fisicamente archiviati, e il client Informatica Developer, dove avviene lo sviluppo. I repository conservano sia la descrizione dei dati che altre informazioni, inclusi quelli per vari altri servizi di Informatica, come la programmazione delle esecuzioni dei lavori (Schedules) o i dati di monitoraggio, oltre ai parameterset delle applicazioni, che consente di utilizzare la stessa applicazione con diverse fonti e destinazioni di dati.
DIS, Data Integration Service, è il servizio in cui avvengono i principali processi funzionali, in cui operano le applicazioni e dove vengono avviati i Workflows (descrizioni della sequenza di mappings e le loro interazioni) e i Mappings (trasformazioni, blocchi in cui avvengono le trasformazioni e l'elaborazione dei dati).
Configurazione GRID – in sostanza, una costruzione del complesso che utilizza più server, dove il carico generato da DIS è distribuito tra i nodi (ossia i server che fanno parte del dominio). In questo caso, oltre alla distribuzione del carico in DIS attraverso un ulteriore strato di astrazione GRID, che unisce più nodi e su cui funziona DIS invece di operare su un singolo nodo specifico, possono anche essere creati ulteriori esemplari di backup MRS. È persino possibile implementare un'elevata disponibilità, quando le richieste esterne possono essere effettuate attraverso nodi di backup in caso di guasto del principale. Per ora, abbiamo rinunciato a questa modalità di costruzione.

Informatica PowerCenter, schematicamente
Nelle fasi iniziali del lavoro nella catena di approvvigionamento dei dati, si sono verificati regolarmente problemi, alcuni dei quali sono stati causati dalla stabilità instabile di Informatica in quel momento. Intendo condividere alcuni dei momenti memorabili di questa saga — l'apprendimento di Informatica 10.

Il precedente logo di Informatica
L'ambito di responsabilità del nostro settore comprende anche altri ambienti Informatica, ognuno con le proprie specifiche a causa di un carico diverso; per ora, mi concentrerò proprio su come Informatica si è evoluta come componente ETL del data warehouse.
Come è successo
Nel 2016, quando abbiamo iniziato a gestire Informatica, era già arrivata alla versione 10.0, e per i colleghi ottimisti che decidevano di utilizzare un prodotto serio con una versione minore .0, tutto sembrava ovvio: dovevano usare la nuova versione! Dal punto di vista delle risorse hardware, tutto andava benissimo in quel momento.
Dalla primavera del 2016, la gestione di Informatica era affidata a un appaltatore, e secondo quanto riferito dai pochi utenti del sistema, "funzionava un paio di volte a settimana". È importante precisare che il data warehouse era de facto in fase di PoC, non c'erano amministratori nel team e il sistema crollava costantemente per vari motivi, dopodiché l'ingegnere dell'appaltatore lo riavviava.
In autunno, nel team sono arrivati tre amministratori, che hanno suddiviso tra loro le responsabilità, e ha cominciato a prendere forma un lavoro regolare nella gestione dei sistemi del progetto, inclusa Informatica. Vale la pena di sottolineare che questo prodotto non è ampiamente diffuso e non ha una grande comunità in cui si possano trovare risposte a qualsiasi domanda e risolvere problemi. Pertanto, è stata fondamentale un'assistenza tecnica completa da parte del partner russo di Informatica, che ha aiutato a correggere tutti i nostri errori e quelli della giovane Informatica 10.
La prima cosa che abbiamo dovuto fare per gli sviluppatori del nostro team e per il fornitore è stata stabilizzare il funzionamento stesso di Informatica, garantendo la funzionalità della console di amministrazione web (Informatica Administrator).

Così, spesso incontravamo gli sviluppatori di Informatica.
Al di là del processo di individuazione delle cause, la principale ragione per le interruzioni era il modo in cui il software Informatica interagiva con il database del repository, situato su un server relativamente lontano nel contesto della topologia di rete. Questo portava a ritardi e interferiva con i meccanismi che garantivano il monitoraggio dello stato del dominio Informatica. Dopo aver ottimizzato il database e modificato le impostazioni di Informatica per renderlo più tollerante ai ritardi del database, e infine aggiornato la versione di Informatica a 10.1 e spostato il database da un server precedente a uno più vicino a Informatica, il problema è diventato obsoleto e da allora non abbiamo più osservato interruzioni simili.

Uno dei tentativi di far funzionare Informatica Monitor
Con la console di amministrazione la situazione era critica. Poiché lo sviluppo attivo avveniva direttamente in un ambiente quasi produttivo, era necessario per i colleghi analizzare costantemente il funzionamento delle mappings e dei workflow "al volo". Nella nuova Informatica, nel Data Integration Service non è presente uno strumento specifico per tale monitoraggio, ma nella web console di amministrazione è stata aggiunta una sezione di monitoraggio (Informatica Administrator Monitor), dove è possibile osservare il funzionamento delle applicazioni, dei workflow e delle mappings, delle esecuzioni e dei log. Periodicamente la console diventava completamente inaccessibile, oppure le informazioni sui processi correnti in DIS smettevano di aggiornarsi, o si verificavano errori durante il caricamento delle pagine.

Selezione dei parametri Java per stabilizzare il funzionamento
La risoluzione del problema è avvenuta per molte strade, sono stati condotti esperimenti di modifica dei parametri, sono stati raccolti log, jstack, inviati al supporto, e nel contempo si è attivamente cercato su Google e si è semplicemente osservato.
In primo luogo, è stato creato un MRS separato per il monitoraggio, che si è rivelato essere uno dei principali consumatori di risorse nei nostri ambienti, poiché i lanci delle mappature avvengono con grande intensità. Sono stati modificati i parametri relativi al java heap e altri aspetti.
Di conseguenza, con il successivo aggiornamento a Informatica 10.1.1, è stato possibile stabilizzare il funzionamento della console e del monitor, i programmatori sono diventati più efficienti e i processi regolari sono diventati sempre più costanti.
L'esperienza di interazione tra sviluppo e amministrazione può essere interessante. La questione della comprensione comune di come funziona tutto, cosa si può e cosa non si può fare, è sempre importante quando si utilizzano sistemi complessi. Pertanto, si può tranquillamente raccomandare di istruire prima il team degli amministratori su come gestire il software, e il team degli sviluppatori su come scrivere codice e disegnare processi nel sistema, e solo dopo inviare entrambi a lavorare per dei risultati. Questo è davvero importante quando il tempo non è una risorsa illimitata. Molti problemi possono essere risolti anche con un tentativo casuale delle opzioni, ma a volte alcuni richiedono conoscenze aprioristiche — il nostro caso conferma l'importanza di comprendere questa assioma.
Ad esempio, cercando di abilitare la versioning in MRS (come si è scoperto, era necessaria un'altra versione di SVN), dopo un po' abbiamo scoperto con preoccupazione che il tempo di riavvio del sistema era aumentato a diverse decine di minuti. Individuata la causa del ritardo all'avvio e disabilitando la versioning, tutto è tornato a funzionare bene.
Tra gli ostacoli più significativi legati a Informatica, possiamo ricordare l'epica battaglia con i crescenti flussi java. A un certo punto è arrivato il momento della replicazione, ovvero diffondere i processi consolidati su un gran numero di sistemi sorgente. Tuttavia, si è rivelato che non tutti i processi in 10.1.1 funzionavano bene, e dopo un po' DIS diventava non funzionante. Venivano riscontrati decine di migliaia di flussi, il cui numero aumentava in modo particolarmente evidente durante la procedura di deploy delle applicazioni. A volte era necessario effettuare un riavvio più volte al giorno per ripristinare la funzionalità.
Qui bisogna ringraziare il supporto, in quanto i problemi sono stati localizzati e risolti in modo abbastanza rapido con l'EBF (Emergency Bug Fix) – dopo di che è sorto a tutti la sensazione che lo strumento funzionasse davvero.
Funziona comunque!
All'inizio del funzionamento nella modalità target, Informatica era configurata come segue. Versione Informatica 10.1.1HF1 (HF1 è HotFix1, una build del fornitore proveniente dal pacchetto EBF) con EBF aggiuntivi installati per risolvere i nostri problemi di scalabilità e alcuni altri, su uno dei tre server che componevano il GRID, 20 core x86_64 e storage su un enorme e lento array di dischi locali — questo è la configurazione del server per il cluster Hadoop. Su un altro server simile - un database Oracle con cui interagiscono sia il dominio di Informatica che il motore di controllo ETL. Tutto questo è monitorato con strumenti di monitoraggio standard utilizzati dal team (Zabbix + Grafana), da entrambe le parti — sia Informatica stessa con i suoi servizi, sia i processi di caricamento che le alimentano. Attualmente, le prestazioni e la stabilità del lavoro, al di là dei fattori esterni, dipendono dalle impostazioni che limitano il carico.
È possibile parlare separatamente di GRID. L'ambiente è stato costruito su tre nodi, con possibilità di bilanciamento del carico. Tuttavia, durante i test, è stato riscontrato che, a causa di problemi di interazione tra le istanze delle nostre applicazioni, tale configurazione non funzionava come previsto, e si è deciso temporaneamente di abbandonare questo schema, disattivando due dei tre nodi dal dominio. Tuttavia, lo schema è rimasto invariato, e ora è effettivamente un servizio GRID, ma ridotto a un solo nodo.
Al momento, persiste la difficoltà legata al calo delle prestazioni durante la pulizia regolare dello schema del monitor: mentre processi contemporanei in CHN e la pulizia sono in corso, possono verificarsi malfunzionamenti nel meccanismo di controllo ETL. Questo viene attualmente risolto in modo "provvisorio" – con la pulizia manuale dello schema del monitor, a costo di perdere tutti i dati precedenti. Non è troppo critico per il sistema produttivo in condizioni normali di funzionamento, ma siamo ancora alla ricerca di una soluzione adeguata.
Da questa situazione scaturisce un altro problema: a volte si verificano molteplici avvii del nostro meccanismo di controllo.

Avvii multipli dell'applicazione che portano a un guasto del sistema
Durante i lanci programmati in momenti di alta pressione sul sistema, possono verificarsi situazioni che portano al guasto del meccanismo. Fino ad ora, il problema è stato risolto manualmente e si sta cercando una soluzione permanente.
In generale, si può riassumere che, in caso di alta pressione, è fondamentale fornire risorse adeguate, riguardo le risorse hardware per Informatica e lo stesso per il suo database, così come garantire loro configurazioni ottimali. Inoltre, resta aperta la questione su quale schema di posizionamento del DB sia migliore: su un host separato o sullo stesso dove funziona il software di Informatica. Da un lato, avere tutto su un unico server sarebbe più economico, e quasi eliminerebbe il potenziale problema delle interazioni di rete; dall'altro, il carico sull'host dal database si aggiungerebbe a quello di Informatica.
Come in ogni prodotto serio, anche in Informatica ci sono momenti curiosi.
Una volta, esaminando un guasto, ho notato che nei log di MRS era strano il timestamp degli eventi.

Dualismo temporale nei log di MRS 'by design'
Si è scoperto che i timestamp vengono scritti nel formato delle 12 ore, senza specificare AM/PM, quindi prima o dopo mezzogiorno. È stata persino aperta una segnalazione al riguardo, e si è ricevuta una risposta ufficiale: era così che era previsto, nel registro MRS le registrazioni sono scritte proprio in questo formato. Pertanto, a volte rimane un certo alone di mistero riguardo al momento di insorgenza di un errore…
Mirare al meglio
Oggi Informatica è uno strumento abbastanza stabile, comodo per gli amministratori e gli utenti, estremamente potente per le attuali capacità e potenzialità. Supera di gran lunga le nostre esigenze funzionali e di fatto viene ora utilizzato nel progetto in un modo non tipicamente caratteristico. Le difficoltà sono in parte legate a come funzionano i meccanismi: la specificità è che in un breve lasso di tempo viene avviato un gran numero di flussi che aggiornano intensamente i parameterset e lavorano con il database del repository, mentre le risorse hardware del server sono praticamente completamente utilizzate dal CPU.
Siamo molto vicini al passaggio a Informatica 10.2.1 o 10.2.2, che introducono una revisione di alcuni meccanismi interni e la nostra assistenza promette di risolvere diversi problemi di prestazioni e funzionamento attualmente presenti. Inoltre, ci si aspetta anche server con una configurazione ottimale per noi, considerando le necessità future a causa della crescita e dello sviluppo dello storage.
Naturalmente, ci sarà bisogno di test, verifiche di compatibilità e, possibilmente, modifiche architetturali per quanto riguarda l'HA GRID. Lo sviluppo in ambito Informatica continuerà, poiché nel breve termine non possiamo sostituire il sistema attuale.
E coloro che saranno responsabili di questo sistema in futuro sapranno certamente portarlo ai livelli richiesti di affidabilità e performance richiesti dai clienti.
Articolo preparato dal team di gestione dati di «Ростелеком»

Logo attuale di Informatica
Fonte: habr.com
