O que é o Informatica DEI?
DEI seria a sigla para Data Engineering Integration.
Ele é uma solução fornecida pelo Informatica que pode ser usada para integrações de dados, também é chamada de Informatica BDM ou Big Data Management.
É uma ferramenta bem visual que permite executar o processamento de tempo de execução(run-time processing) no ambiente nativo ou em um ambiente não nativo.
O ambiente nativo(native environment) é o domínio Informatica em que o Data Integration Service executa todo o processamento de tempo de execução, recomendado o uso caso estamos processando menos de 10 terabytes.
Já o ambiente não nativo(non-native environment) é um cluster distribuído fora do domínio Informatica, como Hadoop, Databricks ou Dataproc, onde o Data Integration Service pode enviar processamento em tempo de execução, é recomendado usar se vamos processar mais de 10 terabytes.
Podemos usar várias ferramentas e clients da Informatica para se conectar a ferramenta, mas as principais que podemos usar são:
- Administrator tool: É uma ferramenta que permite gerenciar o domínio Informatica e a segurança da Informatica.
- Developer tool: É um aplicativo que permite importar metadados, criar conexões e objetos de dados. Você também pode usar a ferramenta para criar e executar perfis, mapeamentos e fluxos de trabalho.
- Analyst tool: É uma ferramenta que permite descobrir, definir e revisar a lógica de negócios para projetos em uma organização. Com essa ferramenta, você pode: Definir glossários, termos e políticas comerciais. Execute a descoberta de dados. Defina a lógica de integração de dados. Defina e gerencie regras de conformidade de dados. Revise e resolva problemas de qualidade de dados.
- Interface de linha de comando
Repositórios
O Data Engineering Integration utilizaza alguns repositórios e bancos de dados para armazenar os dados provenientes de metadados, conexões, domínios de dados, criação de perfis de dados, mascaramento de dados e linhagem de dados.
O acesso aos repositórios são feitos por serviços de aplicativo(application services) do domínio Informatica.
Os tipos de repositórios são:
- Model repository: Realiza o armazenamento de profiles,mappings(somente Developer Tool), domínios de dados, fluxos de trabalho(workflows)(somente Developer Tool) e especificações de mapeamento(mapping specifications)(somente Analyst Tool) que são gerenciados na Developer Tool e Analyst Tool.
- Profiling warehouse: O Data Integration Service faz a execução de profiles e armazena os seus resultados neste repositório.
Application services
Como dito anteriormente, a ferramenta usa alguns tipos de serviços para realizar o processamento dos dados e acesso aos repositórios. Vamos falar de forma breve sobre os principais tipos de serviços de aplicação:
- Analyst Service: É responsavel pela execução da Analyst Tool em um domínio Informatica, também gerencia as conexões entre os componentes do serviço e os usuários que têm acesso à ferramenta Analyst.
- Data Integration Service: É reponsável pelo processamento de mapeamentos no ambiente nativo ou realização do envio de mapeamentos para processamento em um cluster no ambiente não nativo. Ao executar um mapping ou workflow no Developer Tool esse derviço permite recuperar os metadados no Model repository. Ao executar profile jobs na Developer e Analyst Tool é utilizado esse serviço para gravar no profiling warehouse
- Mass Ingestion Service: É reponsável pelo gerenciamento, validação e implantação das especificações de ingestão em massa.
- Metadata Access Service: Permite que a Developer Tool importe e visualize metadados de um cluster Hadoop. As conexões HBase, HDFS, Hive e MapR-DB usam esse serviço quando é importado um objeto de um cluster Hadoop.
- Model Repository Service: É reponsável pelo gerenciamento do repositório do modelo. O serviço se conecta ao repositório quando é executado um mapeamento, especificação de mapeamento, profile ou workflow.
- REST Operations Hub: É reponsável por expor a ferramenta a clients externos por meio de APIs REST.
Observação:
A Administrador Tool pode ser usada para gerenciar esses serviços além de criar conexões e monitorar tarefas.
Integração Hadoop
As vezes um domínio Informatica pode precisar de suporte de um ambiente Hadoop para se conectar à alguns tipos de fontes de dados, o HDFS, Hbase e Hive são um exemplo.
O domínio pode ser conectado a clusters que executam diferentes distribuições do Hadoop.
O Data Integration Service pode enviar trabalhos de mapeamento para o Spark ou Blaze e pode enviar trabalhos de profile para o mecanismo Blaze no ambiente Hadoop.
Engine de integração
Ao executar um mapeamento, você pode optar por executá-lo no ambiente nativo ou em um ambiente não nativo.
No ambiente nativo, o Data Integration Service do domínio Informatica executaria esse mapeamento. Já quando a execução é feita em um ambiente não nativo, o Data Integration Service envia o processamento de tempo de execução para um cluster no ambiente não nativo.
Para validar um mapeamento, você pode validá-lo em qualquer tipo de engine. A Developer Tool devera retornar mensagens de validação para cada tipo.
No tipo não nativo temos as seguintes opções:
- Hadoop/Blaze Engine: A Blaze Engine é um mecanismo próprio da Informatica para processamento distribuído no Hadoop. Ao executar um mapeamento com essa engine, o O Blaze Engine Executor(componente de software que permite a comunicação entre o Data Integration Service e os componentes do Blaze Engine no cluster Hadoop) se comunica com o Grid Manager para inicializar os componentes do Blaze Engine no cluster do Hadoop e consulta o Grid Manager por um orquestrador disponível. O Grid Manager vai iniciar o Blaze Job Monitor. O Grid Manager iniciará o orquestrador e enviar as informações do orquestrador de volta ao LDTM. O LDTM por sua vez, se comunicará com o orquestrador. O Grid Manager se comunica com o Resource Manager para obter os recursos disponíveis para o orquestrador. O Resource Manager lida com a alocação de recursos em datanodes por meio do Node Manager. O orquestrador envia as tarefas para os Processos do DTM por meio do Gerenciador de Processos do DTM. O DTM Process Manager se comunica continuamente com os Processos DTM. Os Processos DTM comunicam-se continuamente com o Data Exchange Framework para enviar e receber dados em unidades de processamento executadas em nós do cluster.
- Hadoop/Spark Engine: A Spark Engine é um mecanismo de alto desempenho para processamento em lote usando Spark que pode ser executado em um cluster Hadoop ou em um cluster de modo autônomo Spark. Quando o Data Integration Service executa um mapeamento nessa engine o Logical Data Transformation Manager traduz esse mapeamento para um programa Scala, empacota-o como um aplicativo e o envia para o executor Spark. O executor Spark envia o aplicativo ao Resource Manager no cluster Hadoop e solicita recursos para executar o aplicativo. O Resource Manager identifica os Node Managers que podem fornecer recursos e atribui trabalhos aos data nodes. Os processos do driver e do executor são iniciados em data nodes onde o aplicativo Spark é executado.
- Databricks/Databricks Spark Engine
Observação:
Quando você seleciona vários mecanismos, o Data Integration Service determina o melhor mecanismo para executar o mapeamento durante a validação.
Dependendo da Engine escolhida pode ser que aconteça algumas mudanças no processamento e configurações.
Planos de execução de mapeamento
O DIS(Data Integration Service) vai gerar um plano de execução para executar os mapeamentos nas engines de execução não-nativas.
O DIS irá traduz a lógica do mapeamento em um código que a engine poderá executar.
Podemos visualizar como seria o plano na ferramenta Developer antes de executar o processo e na ferramenta Administrator depois de executar o mapeamento. O plano de execução fica diferente dependendo da engine escolhido, no Spark um mecanismo de tradução irá traduzir o mapeamento em uma representação interna da lógica. A representação interna é renderizada em código Scala que acessa a API Spark. Podemos visualizar o código Scala no plano de execução para depurar a lógica.
A tela de retorna conterá:
- Script ID: Identificador exclusivo para o script do mecanismo Spark.
- Script: Código Scala que o Data Integration Service gera com base na lógica do mapeamento.
- Depends on: Tarefas das quais esse script vai depender para executar.
- Start task: A tarefa de início do fluxo de trabalho.
- Command task: A tarefa de pré-processamento ou pós-processamento para dados locais.
- Grid mapping: Um mapeamento Informatica que o mecanismo Blaze compila e distribui em um cluster de nós.
- Grid task: Uma solicitação de trabalho de processamento paralelo enviada pelo executor do mecanismo Blaze ao Grid Manager.
- Grid segment: Segmento de um grid mapping que está contido em uma grid task.
- Tasklet: Uma partição de um Grid segment que é executado em um DTM separado.