Uso da alternância de log do contêiner do Spark
Com as versões 6.11.0 e posteriores do Amazon EMR, você pode ativar o recurso de alternância de log do contêiner do Spark para o Amazon EMR no EKS. Em vez de gerar um arquivo único de log stdout
ou stderr
, esse recurso alterna o arquivo com base na dimensão de alternância configurada e remove os arquivos de log mais antigos do contêiner.
A alternância de logs do contêiner do Spark pode ajudar você a evitar possíveis problemas com grandes arquivos de log do Spark gerados para trabalhos de execução prolongada ou de transmissão. Por exemplo, é possível iniciar um trabalho do Spark de execução prolongada e o driver do Spark gerar um arquivo de log do contêiner. Se o trabalho for executado por horas ou por dias, e houver um espaço em disco limitado no nó do Kubernetes, o arquivo de log do contêiner poderá consumir todo o espaço em disco disponível. Ao ativar a alternância de log do contêiner do Spark, você divide o arquivo de log em vários arquivos e remove os arquivos mais antigos.
Para ativar o recurso de alternância de log do contêiner do Spark, configure os seguintes parâmetros do Spark:
containerLogRotationConfiguration
-
Inclua esse parâmetro em
monitoringConfiguration
para ativar a alternância de log. O recurso é desabilitado por padrão. Você deve usarcontainerLogRotationConfiguration
além des3MonitoringConfiguration
. rotationSize
-
O parâmetro
rotationSize
especifica o tamanho do arquivo para a alternância de log. O intervalo de valores possíveis é de2KB
a2GB
. A parcela numérica da unidade do parâmetrorotationSize
é transferida como um número inteiro. Como não há suporte para valores decimais, você pode especificar um tamanho de rotação de 1,5 GB, por exemplo, com o valor1500MB
. maxFilesToKeep
-
O parâmetro
maxFilesToKeep
especifica o número máximo de arquivos a serem retidos no contêiner após a alternância ter ocorrido. O valor mínimo é de 1 e o valor máximo é de 50.
Você pode especificar esses parâmetros na seção monitoringConfiguration
da API StartJobRun
, como mostra o exemplo a seguir. Neste exemplo, com rotationSize = "10 MB"
e maxFilesToKeep = 3
, o Amazon EMR no EKS alterna seus logs em 10 MB, gera um novo arquivo de log e, em seguida, limpa o arquivo de log mais antigo quando o número de arquivos de log atinge três.
{ "name": "
my-long-running-job
", "virtualClusterId": "123456
", "executionRoleArn": "iam_role_name_for_job_execution
", "releaseLabel": "emr-6.11.0-latest", "jobDriver": { "sparkSubmitJobDriver": { "entryPoint": "entryPoint_location
", "entryPointArguments": ["argument1", "argument2", ...
], "sparkSubmitParameters": "--classmain_class
--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1" } }, "configurationOverrides": { "applicationConfiguration": [ { "classification": "spark-defaults", "properties": { "spark.driver.memory":"2G" } } ], "monitoringConfiguration": { "persistentAppUI": "ENABLED", "cloudWatchMonitoringConfiguration": { "logGroupName": "my_log_group
", "logStreamNamePrefix": "log_stream_prefix" }, "s3MonitoringConfiguration": { "logUri": "s3://my_s3_log_location
" }, "containerLogRotationConfiguration": { "rotationSize":"10MB
", "maxFilesToKeep":"3
" } } } }
Para iniciar uma execução de trabalho com a alternância de log do contêiner do Spark, inclua um caminho para o arquivo JSON que você configurou com esses parâmetros no comando StartJobRun.
aws emr-containers start-job-run \ --cli-input-json file://
path-to-json-request-file