Pools do Serviço Data Flow
Os Pools de Fluxo de Dados podem ser usados em muitas cargas de trabalho de batch, Streaming e Sessão do serviço Data Flow por vários usuários ao mesmo tempo no mesmo tenant.
Os pools fornecem um mecanismo avançado e flexível para gerenciar com eficiência cargas de trabalho em lote, streaming e sessão baseadas no Spark em vários usuários dentro do mesmo locatário. Projetados para suportar ambientes de produção sensíveis ao tempo e cenários de desenvolvimento dinâmico, os Pools reduzem os tempos de inicialização do aplicativo, mantendo a infraestrutura de computação pré-inicializada.
Elas permitem o isolamento da carga de trabalho de nível empresarial, garantindo que os trabalhos críticos de produção não sejam impactados pelas atividades de desenvolvimento por meio da segmentação de recursos dedicada. O controle de custos é simplificado com políticas de IAM refinadas que restringem o uso do pool a usuários autorizados ou ambientes específicos. Ao mesmo tempo, os mecanismos inteligentes de enfileiramento permitem o envio de tarefas de alto volume enquanto otimizam o uso de recursos.
Os pools podem ser programados para serem iniciados automaticamente dentro de intervalos de tempo definidos e, eventualmente, interrompidos após um tempo limite no uso, alinhando a disponibilidade de computação com processos de negócios e minimizando o custo ocioso. Além disso, a automação integrada lida com a aplicação de patches de segurança sem interromper os aplicativos em execução, tornando os Pools uma escolha ideal para execução de carga de trabalho Spark segura, escalável e econômica.
Os pools oferecem uma ampla gama de funcionalidades para vários casos de uso, como:
- Cargas de trabalho de produção grandes sensíveis ao tempo com muitos executores que precisam de tempo de inicialização mais rápido em segundos.
- As cargas de trabalho de produção críticas não são afetadas por cargas de trabalho de desenvolvimento dinâmico porque seus recursos podem ser separados em pools diferentes.
- Controle o custo e o uso para desenvolvimento com a política do serviço IAM que permite enviar execuções do serviço Data Flow para pools específicos.
- Um grande número de execuções do serviço Data Flow precisa ser processado com menos tempo de inicialização.
- O serviço Queueing Data Flow é executado em um pool para uso eficiente de recursos e controle de custos.
- As cargas de trabalho são executadas apenas em uma janela de tempo específica de um dia que precisa do início automático de um pool em uma programação e parada automática quando ocioso.
- Aplicação automática de patches de segurança sem afetar execuções ou recursos em um pool.
Outro caso de uso do serviço Data Flow é a capacidade de pré-alocar (ou reservar) nós com configuração especial. São recursos de tamanhos específicos (ou a relação entre CPU e memória) que são raros nos data centers que suportam a região. Os jobs que exigem essa configuração especial geralmente envolvem grandes volumes de dados e tamanhos de registros que não podem ser facilmente distribuídos alocando mais nós para a execução do job.
Para esses cenários, é prático interrogar os data centers da região para avaliar a disponibilidade desses recursos. As amostras da Oracle oferecem uma abordagem simples para examinar essa capacidade em vários contextos comerciais.
Configurando Execuções e Aplicativos para Usar Pools
Use pools com Aplicativos e Execuções do Serviço Data Flow.
Desenvolvendo um Aplicativo com um Pool
Ao desenvolver aplicativos, é possível selecionar um pool em qualquer estado, exceto DELETED, para ser adicionado a um Aplicativo. Selecione apenas as formas de driver e executor configuradas no pool do serviço Data Flow adicionado ao aplicativo.
Executar um Aplicativo com um Pool
Ao enviar uma Execução do Serviço Data Flow, selecione um pool em qualquer estado, exceto DELETED, para ser adicionado a um Aplicativo. Selecione apenas as formas de driver e executor configuradas no pool do serviço Data Flow adicionado à Execução.
Enfileirando Fluxo de Dados com Pool
Você pode enviar mais execuções para a fila do pool enquanto os recursos de computação do pool são usados por outras Execuções. Por padrão, as Execuções são enfileiradas por 20 minutos para aguardar que os recursos do pool estejam disponíveis. Você pode configurar o tempo de espera na fila definindo a configuração do Spark, spark.dataflow.acquireQuotaTimeout , nas opções avançadas de Execução do Serviço Data Flow ou Aplicativo. O valor dessa configuração pode ser formatado como 1h | 30m | 45min e assim por diante.
Enquanto uma Execução do Serviço Data Flow está aguardando na fila para que os recursos mantidos por Execuções ativas no Pool fiquem disponíveis, ocorre uma inicialização a frio.
Iniciando o Pool de Fluxos de Dados na Execução
Os pools de Fluxo de Dados interrompidos ou aceitos também podem ser iniciados submetendo-se uma Execução com um pool.
As execuções aguardam o início do pool se tornar ativo. Recomendamos o uso do recurso de enfileiramento do pool para evitar tempos limite de execução. Cancelar e interromper a Execução não interrompe o pool.
Substituindo o ID do Pool em uma Execução ou Aplicativo
- 
Ao adicionar um pool em um Aplicativo e Execução, o pool adicionado à Execução é usado. 
- 
Ao adicionar um pool em um Aplicativo, mas não em uma Execução, ao enviar a Execução, o pool adicionado ao Aplicativo é usado. 
- 
Ao adicionar um pool em uma Execução, mas não em um Aplicativo, ao enviar a Execução, o pool adicionado à Execução é usado. 
- 
Isso permite o uso de muitos pools em Execuções diferentes do mesmo Aplicativo. 
Limites
- Os limites do serviço Data Flow no nível do tenant e as cotas de compartimento ainda são aplicáveis ao criar ou iniciar pools.
- Máximo de 1000 nós no total de todas as configurações em um pool.
- Não há limites para o número de pools que podem ser criados e usados. Um administrador pode gravar uma política de cota de compartimento para limitar um usuário, grupo de usuários ou compartimento para controlar a forma e o número de nós configurados em um pool.