Os pipelines permitem especificar as CPUs e a memória a serem fornecidas ao driver e cada executor. É possível configurar recursos no pipeline do Studio do Cloud Data Fusion personalizadas. Para mais informações, consulte Gerenciar configurações de pipeline.
Esta página fornece as diretrizes sobre a quantidade de recursos de driver e executor para configurar para seu caso de uso.
Driver
Como o driver não faz muito trabalho, o padrão de 1 CPU e 2 GB e memória é suficiente para executar a maioria dos pipelines. Talvez seja necessário aumentar a memória para pipelines com muitos estágios ou esquemas grandes. Como mencionado no Processamento paralelo de instruções JOIN, se o pipeline estiver realizando na memória os conjuntos de dados na memória também precisam caber na memória do driver.
Executor
Considere as diretrizes a seguir sobre recursos de CPU e memória.
CPU
O número de CPUs atribuídas a um executor determina o número de tarefas que executor pode ser executado em paralelo. Cada partição de dados requer uma tarefa para de desenvolvimento de software. Na maioria dos casos, é mais simples definir o número de CPUs como um. em vez disso, concentre-se em ajustar a memória.
Memória
Para a maioria dos pipelines, 4 GB de memória do executor são suficientes para executar com sucesso o pipeline. As junções altamente distorcidas de vários terabytes foram concluídas com 4 GB de memória do executor. É possível melhorar a velocidade de execução aumentar a quantidade de memória, mas isso exige uma forte compreensão seus dados e seu pipeline.
O Spark divide a memória em várias seções. Uma seção é reservada para o Spark interno, e outro para execução e armazenamento.
Por padrão, a seção de armazenamento e execução representa aproximadamente 60% do total
memória. Propriedade spark.memory.fraction configuration
do Spark (o padrão é 0,6).
controla essa porcentagem. Esse valor funciona bem para a maioria das cargas de trabalho
normalmente não precisam ser ajustados.
A seção de armazenamento e execução é dividida em espaços separados para
armazenamento e execução. Por padrão, esses espaços têm o mesmo tamanho, mas é possível
ajuste-as definindo spark.memory.storageFraction
(o padrão é 0,5) como
controla qual porcentagem do espaço é reservada para armazenamento.
O espaço de armazenamento guarda dados em cache. O espaço de execução armazena embaralhamento, mesclagem classificar e agregar dados. Se houver espaço extra na seção de execução, O Spark pode usar parte deles para armazenamento de dados. No entanto, os dados de execução nunca usar o espaço de armazenamento.
Se você souber que o pipeline não está armazenando dados em cache, reduza o armazenamento para deixar mais espaço para requisitos de execução.
Ponto a ser considerado: memória do contêiner YARN
A configuração de memória do executor controla a quantidade de memória de heap fornecida ao
executores. O Spark adiciona mais memória para memória fora do heap,
é controlado pela configuração spark.executor.memoryOverhead
, que tem como padrão
384m. Isso significa que a quantidade de memória que o YARN reserva para cada executor é
maior que o número definido na configuração de recursos do pipeline. Por exemplo:
se você definir a memória do executor como 2048m, o Spark adicionará 384m a esse número e solicitará
YARN para um contêiner de 2432m. Além disso, o YARN arredonda o número da solicitação para
um múltiplo de yarn.scheduler.increment-allocation-mb
, que tem como padrão
de yarn.scheduler.minimum-allocation-mb
. Se ela estiver definida como 512, YARN
arredonda a 2432 m para 2.560 m. Se o valor for definido como 1024, o YARN arredondará
2.432 m a 3.072 m. Este ponto é útil para se ter em mente ao determinar o tamanho
de cada nó de trabalho no cluster.