Capacidade pré-inicializada para trabalhar com uma aplicação no EMR Sem Servidor - Amazon EMR

Capacidade pré-inicializada para trabalhar com uma aplicação no EMR Sem Servidor

O EMR Sem Servidor fornece um recurso opcional que mantém o driver e os trabalhadores pré-inicializados e prontos para responder em segundos. Isso cria efetivamente um grupo de aquecimento de trabalhadores para uma aplicação. Esse recurso é chamado de capacidade pré-inicializada. Para configurar esse recurso, você pode definir o parâmetro initialCapacity de uma aplicação para o número de trabalhadores que deseja pré-inicializar. Com a capacidade de trabalhadores pré-inicializada, os trabalhos começam imediatamente. Isso é ideal quando você deseja implementar aplicações iterativas e trabalhos urgentes.

A capacidade pré-inicializada mantém um grupo de aquecimento de trabalhadores prontos para a inicialização de trabalhos e sessões em segundos. Você pagará por trabalhadores pré-inicializados provisionados mesmo quando a aplicação estiver ociosa. Portanto, recomendamos habilitá-los para casos de uso que se beneficiem do rápido tempo de inicialização e dimensioná-los para a utilização ideal dos recursos. As aplicações do EMR Sem Servidor são desligadas automaticamente quando ociosas. Recomendamos manter esse recurso ativado ao usar trabalhadores pré-inicializados para evitar cobranças inesperadas.

Quando você envia um trabalho, se houver trabalhadores da initialCapacity disponíveis, o trabalho usa esses recursos para iniciar sua execução. Se esses trabalhadores já estiverem sendo usados por outros trabalhos, ou se o trabalho precisar de mais recursos do que os disponíveis da initialCapacity, a aplicação solicitará e obterá trabalhadores adicionais, até os limites máximos de recursos definidos para a aplicação. Quando um trabalho termina a execução, ele libera os trabalhadores que usou e o número de recursos disponíveis para a aplicação retorna para initialCapacity. Uma aplicação mantém a initialCapacity dos recursos mesmo após o término da execução dos trabalhos. A aplicação libera recursos em excesso além da initialCapacity quando os trabalhos não precisam mais deles para serem executados.

A capacidade pré-inicializada está disponível e pronta para uso quando a aplicação é iniciada. A capacidade pré-inicializada fica inativa quando a aplicação é interrompida. Uma aplicação passa para o estado STARTED somente se a capacidade pré-inicializada solicitada tiver sido criada e estiver pronta para uso. Durante todo o tempo em que a aplicação está no estado STARTED, o EMR Sem Servidor mantém a capacidade pré-inicializada disponível para utilização ou em uso por trabalhos ou workloads interativas. O recurso restaura a capacidade de contêineres liberados ou com falha. Isso mantém o número de trabalhadores que o parâmetro InitialCapacity especifica. O estado de uma aplicação sem capacidade pré-inicializada pode mudar imediatamente de CREATED para STARTED.

Você pode configurar a aplicação para liberar a capacidade pré-inicializada se ela não for usada por um determinado período, com um padrão de 15 minutos. Uma aplicação interrompida é iniciada automaticamente quando você envia um novo trabalho. Você pode definir essas configurações automáticas de início e parada ao criar a aplicação ou alterá-las quando a aplicação estiver em um estado CREATED ou STOPPED.

Você pode alterar as contagens da InitialCapacity e especificar configurações de computação, como CPU, memória e disco, para cada trabalhador. Como você não pode fazer modificações parciais, é necessário especificar todas as configurações de computação ao alterar os valores. Você só pode alterar as configurações quando a aplicação está no estado CREATED ou STOPPED.

nota

Para otimizar o uso de recursos da aplicação, recomendamos alinhar os tamanhos dos contêineres com os tamanhos dos trabalhadores da capacidade pré-inicializada. Por exemplo, se você configurar o tamanho do executor do Spark para 2 CPUs e a memória para 8 GB, mas a capacidade de trabalho pré-inicializada for de 4 CPUs com 16 GB de memória, os executores do Spark usarão apenas metade dos recursos dos trabalhadores quando forem designados para esse trabalho.

Personalização da capacidade pré-inicializada para Spark e Hive

Você pode personalizar ainda mais a capacidade pré-inicializada de workloads executadas em estruturas específicas de big data. Por exemplo, quando uma workload é executada no Apache Spark, você pode especificar quantos trabalhadores começam como drivers e quantos começam como executores. Da mesma forma, ao usar o Apache Hive, você pode especificar quantos trabalhadores começam como drivers do Hive e quantos devem executar tarefas do Tez.

Configuração de aplicações executando o Apache Hive com capacidade pré-inicializada

A solicitação de API a seguir cria uma aplicação executando o Apache Hive com base na versão emr-6.6.0 do Amazon EMR. A aplicação começa com 5 drivers pré-inicializados do Hive, cada um com 2 vCPUs e 4 GB de memória, e 50 trabalhadores pré-inicializados de tarefas do Tez, cada um com 4 vCPUs e 8 GB de memória. Quando as consultas do Hive são executadas nessa aplicação, elas primeiro usam os trabalhadores pré-inicializados e começam a ser executadas imediatamente. Se todos os trabalhadores pré-inicializados estiverem ocupados e mais trabalhos do Hive forem enviados, a aplicação pode escalar para um total de 400 vCPU e 1.024 GB de memória. Opcionalmente, você pode omitir a capacidade do trabalhador do DRIVER ou da TEZ_TASK.

aws emr-serverless create-application \ --type "HIVE" \ --name my-application-name \ --release-label emr-6.6.0 \ --initial-capacity '{ "DRIVER": { "workerCount": 5, "workerConfiguration": { "cpu": "2vCPU", "memory": "4GB" } }, "TEZ_TASK": { "workerCount": 50, "workerConfiguration": { "cpu": "4vCPU", "memory": "8GB" } } }' \ --maximum-capacity '{ "cpu": "400vCPU", "memory": "1024GB" }'

Configuração de aplicações executando o Apache Spark com capacidade pré-inicializada

A solicitação de API a seguir cria uma aplicação que executa o Apache Spark 3.2.0 com base na versão 6.6.0 do Amazon EMR. A aplicação começa com 5 drivers pré-inicializados do Spark, cada um com 2 vCPUs e 4 GB de memória, e 50 executores pré-inicializados, cada um com 4 vCPUs e 8 GB de memória. Quando os trabalhos do Spark são executados nessa aplicação, eles primeiro usam os trabalhadores pré-inicializados e começam a ser executados imediatamente. Se todos os trabalhadores pré-inicializados estiverem ocupados e mais trabalhos do Spark forem enviados, a aplicação pode escalar para um total de 400 vCPU e 1.024 GB de memória. Opcionalmente, você pode omitir a capacidade do DRIVER ou do EXECUTOR.

nota

O Spark adiciona uma sobrecarga de memória configurável, com um valor padrão de 10%, à memória solicitada pelo driver e pelos executores. Para que os trabalhos usem trabalhadores pré-inicializados, a configuração inicial da memória de capacidade deve ser maior do que a memória solicitada pelo trabalho e pela sobrecarga.

aws emr-serverless create-application \ --type "SPARK" \ --name my-application-name \ --release-label emr-6.6.0 \ --initial-capacity '{ "DRIVER": { "workerCount": 5, "workerConfiguration": { "cpu": "2vCPU", "memory": "4GB" } }, "EXECUTOR": { "workerCount": 50, "workerConfiguration": { "cpu": "4vCPU", "memory": "8GB" } } }' \ --maximum-capacity '{ "cpu": "400vCPU", "memory": "1024GB" }'