
O componente ETL do data warehouse geralmente fica na sombra do próprio armazém e é dada menos atenção a ele do que o banco de dados principal ou o componente frontal, BI, relatórios. Ao mesmo tempo, do ponto de vista da mecânica de preenchimento do data warehouse, o ETL desempenha um papel fundamental e requer menos atenção dos administradores do que outros componentes. Meu nome é Alexander, atualmente estou administrando ETLs no Rostelecom e, neste artigo, tentarei compartilhar um pouco com o que o administrador de um dos mais famosos sistemas ETL em um grande data warehouse da Rostelecom tem que lidar.
Se queridos leitores já estiverem familiarizados com o nosso projeto de armazém de dados e o produto Informatica PowerCenter em geral, você pode pular para a próxima seção.
Alguns anos atrás, a idéia de um único data warehouse corporativo amadureceu e começou a ser efetivada na Rostelecom. Vários armazenamentos que solucionavam tarefas individuais já haviam sido criados, mas o número de cenários estava aumentando, os custos de suporte também aumentavam e ficou claro que o futuro estava centralizado. Arquitetonicamente, este é o próprio repositório, composto por várias camadas, implementadas no Hadoop e GreenPlum, bancos de dados auxiliares, mecanismos ETL e BI.
Ao mesmo tempo, devido ao grande número de fontes de dados heterogêneas distribuídas geograficamente, foi criado um mecanismo especial de upload de dados, cujo trabalho é controlado pela Informatica. Como resultado, os pacotes de dados terminam na área de front-end do Hadoop, após o qual o processo de carregamento de dados através das camadas de armazenamento, no Hadoop e no GreenPlum, começa e são controlados pelo chamado mecanismo de controle ETL implementado na Informatica. Portanto, o sistema Informatica é um dos principais elementos que garantem a operação de armazenamento.
Mais detalhes sobre nosso armazenamento serão discutidos em uma das seguintes postagens.
O Informatica PowerCenter / Big Data Management é atualmente considerado o software líder no campo de ferramentas de integração de dados. Este é um produto da empresa americana Informatica, que é um dos players mais fortes em ETL (Extract Transform Load), gerenciamento de qualidade de dados, MDM (Master Data Management), ILM (Information Lifecycle Management) e muito mais.
O PowerCenter usado por nós é um servidor de aplicativos Tomcat integrado, no qual os aplicativos da Informatica operam, implementando seus serviços:
De fato, o domínio é a base de tudo o mais; dentro do domínio, serviços, usuários e componentes GRID funcionam.
Console do Administrador , uma ferramenta de gerenciamento e monitoramento baseada na Web, além do cliente Informatica Developer, a principal ferramenta para interagir com o produto
O MRS, Model Repository Service , um repositório de metadados, é uma camada entre o banco de dados no qual os metadados estão fisicamente armazenados e o cliente Informatica Developer no qual está sendo desenvolvido. Os repositórios armazenam uma descrição dos dados e outras informações, inclusive para vários outros serviços da Infromatica, por exemplo, Agendas para iniciar tarefas ou monitorar dados, bem como o conjunto de parâmetros do aplicativo, em particular, permitindo o uso do mesmo aplicativo para trabalho com várias fontes de dados e receptores.
O DIS, Data Integration Service , é um serviço no qual ocorrem os principais processos funcionais, os aplicativos trabalham nele e os lançamentos reais de Fluxos de Trabalho (descrições da sequência de mapeamentos e suas interações) e Mapeamentos (transformações, blocos nos quais as transformações ocorrem, processamento de dados).
A configuração do GRID é, de fato, uma opção para criar um complexo usando vários servidores, quando a carga iniciada pelo DIS é distribuída entre os nós (ou seja, os servidores que fazem parte do domínio). No caso desta opção, além de distribuir a carga para o DIS por meio de uma camada de abstração GRID adicional, combinando vários nós, nos quais o DIS trabalha em vez de trabalhar em um único nó específico, também podem ser criadas instâncias adicionais de backup do MRS. Você pode até implementar alta disponibilidade quando chamadas externas podem ser feitas por meio de nós de backup no caso de uma falha primária. Até agora, recusamos tal opção de construção.
Informatica PowerCenter, esquemáticoNos primeiros estágios do trabalho, os problemas apareciam regularmente na cadeia de fornecimento de dados, alguns deles devido ao trabalho instável da Informatica na época. Vou compartilhar alguns dos momentos memoráveis desta saga - o desenvolvimento da Informatica 10.
Antigo logotipo da InformaticaOutros ambientes da Informatica também fazem parte da nossa área de responsabilidade; eles têm suas próprias especificidades devido a uma carga diferente, mas, por enquanto, lembrarei exatamente como a Informatica se desenvolveu como um componente ETL do próprio data warehouse.
Como isso aconteceu
Em 2016, quando nos tornamos responsáveis pela Informatica, ela já alcançava a versão 10.0 e, por colegas otimistas que decidiram usar um produto com uma versão menor .0 em uma solução séria, tudo parecia óbvio - você precisa usar a nova versão! Do ponto de vista dos recursos de hardware, tudo estava excelente naquele momento.
Desde a primavera de 2016, o contratado era responsável pelo trabalho da Informatica e, de acordo com os poucos usuários do sistema, "funcionava duas vezes por semana". Aqui é necessário explicar que o armazenamento era de fato no estágio de PoC, não havia administradores na equipe e o sistema travava constantemente por várias razões, após as quais o engenheiro contratado o levantou novamente.
No outono, três administradores apareceram na equipe, compartilhando suas responsabilidades e começaram a alinhar o trabalho normal nos sistemas operacionais do projeto, incluindo a Informatica. Separadamente, deve-se dizer que este produto não é generalizado e possui uma grande comunidade na qual você pode encontrar a resposta para qualquer pergunta e resolver qualquer problema. Portanto, o suporte técnico completo da parceira russa Informatica foi muito importante, com a ajuda da qual foram corrigidos todos os nossos erros e os erros do jovem Informatca 10.
A primeira coisa que tivemos que fazer pelos desenvolvedores de nossa equipe e contratada foi estabilizar o trabalho da Informatica, para tornar operacional o console de administração baseado na Web (Informatica Administrator).
Por isso, frequentemente conhecemos desenvolvedores da InformaticaDeixando de lado o processo de descoberta das causas, o principal motivo das falhas foi a interação entre o software Informatica e o banco de dados do repositório localizado em um servidor relativamente remoto do ponto de vista do cenário da rede. Isso levou a atrasos e interrompeu os mecanismos de monitoramento do status do domínio Informatica. Após alguns ajustes no banco de dados, alterando os parâmetros da Informatica, o que a tornou mais tolerante a atrasos do banco de dados e, como resultado da atualização da versão da Informatica para 10.1 e da transferência do banco de dados do servidor anterior para o servidor localizado mais próximo à Informatica, o problema perdeu sua relevância e, desde então, esse tipo de falha nós não estamos observando.
Uma das tentativas de obter o Informatica Monitor funcionandoCom o console de administração, a situação também foi crítica. Como houve desenvolvimento ativo diretamente em um ambiente condicionalmente produtivo, os colegas precisavam constantemente analisar o trabalho de mapeamentos, fluxo de trabalho "em movimento". Na nova Informatica, o Serviço de Integração de Dados não possui uma ferramenta separada para esse monitoramento, mas a seção de monitoramento (Informatica Administrator Monitor) apareceu no console da Web de administração, no qual é possível observar a operação de aplicativos, fluxo de trabalho e mapeamentos, iniciações e logs. Periodicamente, o console ficava completamente indisponível ou as informações sobre os processos atuais no DIS deixavam de ser atualizadas ou ocorriam erros ao carregar as páginas.
Seleção de parâmetros java para estabilizar o trabalhoO problema foi resolvido de várias maneiras, experimentos foram conduzidos para alterar os parâmetros, registros foram coletados, jstack foi enviado como suporte, pesquisa ativa foi realizada ao mesmo tempo e observação foi realizada.
Em primeiro lugar, foi criada uma MRS separada para monitoramento, que mais tarde se tornou um dos principais consumidores de recursos em nossos ambientes, uma vez que os mapeamentos são lançados de forma muito intensa. Os parâmetros relativos ao heap java e vários outros foram alterados.
Como resultado, a próxima atualização do Informatica 10.1.1 conseguiu estabilizar o console e o monitor, os desenvolvedores começaram a trabalhar com mais eficiência e os processos regulares se tornaram mais regulares.
A experiência da interação entre desenvolvimento e administração pode ser interessante. A questão de um entendimento comum de como tudo funciona, o que pode e o que não pode ser feito, é sempre importante ao usar sistemas complexos. Portanto, podemos recomendar com segurança que você primeiro treine a equipe de administração em como administrar o software e a equipe de desenvolvimento em como escrever código e desenhar processos no sistema, e somente então envie o primeiro e o segundo para trabalhar no resultado. Isso é realmente importante quando o tempo não é um recurso infinito. Muitos problemas podem ser resolvidos mesmo pela enumeração aleatória de opções, mas algumas vezes exigem conhecimento a priori - nosso caso confirma a importância de entender esse axioma.
Por exemplo, quando tentamos incluir a versão no MRS (precisávamos de uma versão diferente do SVN), depois de algum tempo estávamos ansiosos para descobrir que o tempo de reinicialização do sistema aumentou para várias dezenas de minutos. Indo para a causa do início atrasado e desativando o controle de versão, eles se saíram bem novamente.
Dos obstáculos notáveis associados à Informatica, é possível recordar a batalha épica com o crescente fluxo de java. Em algum momento, chegou a hora da replicação, ou seja, de estender os processos estabelecidos a um grande número de sistemas de origem. Verificou-se que nem todos os processos da versão 10.1.1 funcionaram bem e, após algum tempo, o DIS se tornou inoperante. Dezenas de milhares de encadeamentos foram detectados, seu número cresceu especialmente de maneira notável durante o procedimento de implantação do aplicativo. Às vezes, era necessário reiniciar várias vezes ao dia para restaurar o desempenho.
Aqui você precisa agradecer o suporte, os problemas foram localizados e corrigidos relativamente rapidamente usando o EBF (Emergency Bug Fix) - após o qual todos tiveram a sensação de que a ferramenta estava realmente funcionando.
Ainda funciona!
Quando o trabalho começou no modo de destino, a Informatica parecia o seguinte. Informatica versão 10.1.1HF1 (HF1 é HotFix1, um conjunto de fornecedores de um conjunto de EBFs) com EBFs adicionais instalados que corrigem nossos problemas de dimensionamento e outros, em um dos três servidores GRID, 20 núcleos x86_64 e armazenamento, em uma enorme variedade lenta de discos locais - essa é a configuração do servidor para o cluster Hadoop. Em outro servidor do mesmo tipo, o DBMS Oracle com o qual o domínio Informatica e o mecanismo de controle ETL funcionam. Tudo isso é monitorado pelas ferramentas de monitoramento padrão usadas na equipe (Zabbix + Grafana), de ambos os lados - a própria Informatica com seus serviços e os processos de carregamento envolvidos nela. Agora, tanto o desempenho quanto a estabilidade, sem levar em consideração fatores externos, agora dependem das configurações que limitam a carga.
Separadamente, podemos dizer sobre GRID. O ambiente foi construído em três nós, com a possibilidade de balanceamento de carga. No entanto, durante o teste, verificou-se que, devido a problemas de interação entre as instâncias em execução de nossos aplicativos, essa configuração não funcionava conforme o esperado e decidiu temporariamente abandonar esse esquema de construção removendo dois dos três nós do domínio. Ao mesmo tempo, o próprio esquema permaneceu o mesmo e agora é um serviço GRID, mas degenerado em um nó.
No momento, permanece a dificuldade associada à queda no desempenho durante a limpeza regular do circuito do monitor - com processos simultâneos na CNN e com a limpeza em execução, podem ocorrer falhas na operação do mecanismo de controle ETL. Isso está sendo resolvido até agora pela “muleta” - limpeza manual do circuito do monitor, com a perda de todos os seus dados anteriores. Isso não é muito crítico para o produto, com trabalho normal em tempo integral, mas até agora a busca por uma solução normal está em andamento.
Outro problema surge da mesma situação - às vezes ocorrem vários lançamentos de nosso mecanismo de controle.
Lançamento de vários aplicativos, levando à quebra do mecanismoAo iniciar de acordo com uma programação em momentos de carga pesada no sistema, às vezes ocorrem situações que levam a uma falha do mecanismo. Até agora, o problema foi corrigido manualmente; uma solução permanente está sendo procurada.
Em geral, pode-se resumir que, sob carga pesada, é muito importante fornecer recursos adequados, isso também se aplica aos recursos de hardware da própria Informatica e o mesmo para o repositório de banco de dados, além de garantir as configurações ideais. Além disso, permanece a questão de qual layout de banco de dados é melhor - em um host separado ou no mesmo local em que o software Informatica funciona. Por um lado, será mais barato em um servidor e, quando combinado, um possível problema com a interação da rede é praticamente eliminado; por outro, a carga no host do banco de dados é complementada pela carga da Informatica.
Como em qualquer produto sério, a Informatica tem alguns momentos curiosos.
Uma vez, analisando algum tipo de acidente, notei que a hora dos eventos estava estranhamente marcada nos logs da MRS.
Dualismo temporário nos logs do MRS "por design"Verificou-se que os carimbos de hora são gravados no formato de 12 horas, sem especificar AM / PM, ou seja, antes do meio dia ou depois. Até um aplicativo foi aberto sobre esse assunto e uma resposta oficial foi recebida - foi planejada de maneira que as marcas no log do MRS sejam gravadas neste formato. Ou seja, algumas vezes ainda existe alguma intriga quanto ao tempo de ocorrência de algum ERRO ...
Esforce-se para o melhor
Hoje, a Informatica é uma ferramenta bastante estável, conveniente para o administrador e usuários, extremamente poderosa em termos de recursos e potencial atuais. Muitas vezes excede funcionalmente nossas necessidades e agora é de fato usado no projeto de uma maneira não muito característica e típica. Parte da dificuldade é como os mecanismos funcionam - a especificidade é que um grande número de threads é iniciado em um curto período de tempo, que atualiza intensivamente os parâmetros e trabalha com o banco de dados do repositório, enquanto os recursos de hardware do servidor são quase completamente utilizados pela CPU.
Agora chegamos perto de mudar para o Informatica 10.2.1 ou 10.2.2, no qual alguns mecanismos internos foram redesenhados, e o suporte promete a ausência de vários problemas atuais com desempenho e funcionamento. E do ponto de vista do hardware, espera-se que os servidores sejam ótimos para nós, dada a margem para o futuro próximo devido ao crescimento e desenvolvimento do armazenamento.
Obviamente, testes, testes de compatibilidade e, possivelmente, alterações arquiteturais na parte HA GRID estão à frente. O desenvolvimento na Informatica continuará, porque, a curto prazo, não podemos colocar nada para substituir o sistema.
E aqueles que continuarão sendo responsáveis por esse sistema certamente poderão trazê-lo aos indicadores de confiabilidade e desempenho exigidos pelos clientes.
Este artigo foi preparado pela equipe de gerenciamento de dados Rostelecom
Logotipo atual da Informatica