기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon EMR Serverless에 대한 Apache Log4j2 속성 구성
이 페이지에서는 StartJobRun
에서 EMR Serverless 작업에 대한 사용자 지정 Apache Log4j 2.x
Amazon EMR Serverless에 대한 Spark Log4j2 속성 구성
Amazon EMR 릴리스 6.8.0 이상에서는 Apache Log4j 2.xspark-driver-log4j2
및 spark-executor-log4j2
분류를 사용합니다.
Spark에 대한 Log4j2 분류
Spark 로그 구성을 사용자 지정하려면 applicationConfiguration
에서 다음 분류를 사용합니다. Log4j 2.x 속성을 구성하려면 다음 properties
를 사용합니다.
spark-driver-log4j2
-
이 분류는 드라이버에 대한
log4j2.properties
파일의 값을 설정합니다. spark-executor-log4j2
-
이 분류는 실행기에 대한
log4j2.properties
파일의 값을 설정합니다.
Spark에 대한 Log4j2 구성 예제
다음 예제에서는 Spark 드라이버 및 실행기에 대한 Log4j2 구성을 사용자 지정하기 위해 applicationConfiguration
을 사용해 Spark 작업을 제출하는 방법을 보여줍니다.
작업을 제출할 때 대신 애플리케이션 수준에서 Log4j 분류를 구성하려면 EMR Serverless의 기본 애플리케이션 구성 섹션을 참조하세요.
aws emr-serverless start-job-run \
--application-id application-id \
--execution-role-arn job-role-arn \
--job-driver '{
"sparkSubmit": {
"entryPoint": "/usr/lib/spark/examples/jars/spark-examples.jar",
"entryPointArguments": ["1"],
"sparkSubmitParameters": "--class org.apache.spark.examples.SparkPi --conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1"
}
}'
--configuration-overrides '{
"applicationConfiguration": [
{
"classification": "spark-driver-log4j2",
"properties": {
"rootLogger.level":"error", // will only display Spark error logs
"logger.IdentifierForClass
.name": "classpath for setting logger
",
"logger.IdentifierForClass
.level": "info"
}
},
{
"classification": "spark-executor-log4j2",
"properties": {
"rootLogger.level":"error", // will only display Spark error logs
"logger.IdentifierForClass
.name": "classpath for setting logger
",
"logger.IdentifierForClass
.level": "info"
}
}
]
}'
샘플 Spark 작업의 Log4j2
다음 코드 샘플에서는 애플리케이션에 대한 사용자 지정 Log4j2 구성을 초기화하는 동안 Spark 애플리케이션을 생성하는 방법을 보여줍니다.
예 - Python에서 Spark 작업에 Log4j2 사용
import os
import sys
from pyspark import SparkConf, SparkContext
from pyspark.sql import SparkSession
app_name = "PySparkApp
"
if __name__ == "__main__":
spark = SparkSession\
.builder\
.appName(app_name)\
.getOrCreate()
spark.sparkContext._conf.getAll()
sc = spark.sparkContext
log4jLogger = sc._jvm.org.apache.log4j
LOGGER = log4jLogger.LogManager.getLogger(app_name)
LOGGER.info("pyspark script logger info")
LOGGER.warn("pyspark script logger warn")
LOGGER.error("pyspark script logger error")
// your code here
spark.stop()
Spark 작업을 실행하는 경우 드라이버에 대해 Log4j2를 사용자 지정하려면 다음 구성을 사용할 수 있습니다.
{
"classification": "spark-driver-log4j2",
"properties": {
"rootLogger.level":"error", // only display Spark error logs
"logger.PySparkApp.level": "info",
"logger.PySparkApp.name": "PySparkApp
"
}
}
Spark에 대한 Log4j2 고려 사항
다음 Log4j2.x 속성은 Spark 프로세스에 대해 구성할 수 없습니다.
-
rootLogger.appenderRef.stdout.ref
-
appender.console.type
-
appender.console.name
-
appender.console.target
-
appender.console.layout.type
-
appender.console.layout.pattern
구성할 수 있는 Log4j2.x 속성에 대한 자세한 내용은 GitHub의 log4j2.properties.template
file