当前位置: 首页 > 知识库问答 >
问题:

spark-submit,如何指定log4j.properties

翟宾实
2023-03-14

这是我的剧本。我已经尝试了所有的组合,甚至只使用一个本地节点。但是看起来没有加载log4j.properties,所有调试级别的信息都被转储了。

current_dir=/tmp
DRIVER_JAVA_OPTIONS="-Dlog4j.configuration=file://${current_dir}/log4j.properties "

spark-submit \
--conf "spark.driver.extraClassPath=$current_dir/lib/*"  \
--conf "spark.driver.extraJavaOptions=-Djava.security.krb5.conf=${current_dir}/config/krb5.conf -Djava.security.auth.login.config=${current_dir}/config/mssqldriver.conf" \
--conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=file://${curent_dir}/log4j.properties " \
--class "my.AppMain" \
--files ${current_dir}/log4j.properties \
--master local[1] \
--driver-java-options "$DRIVER_JAVA_OPTIONS" \
--num-executors 4 \
--driver-memory 16g \
--executor-cores 10 \
--executor-memory 6g \
$current_dir/my-app-SNAPSHOT-assembly.jar

log4j属性:

log4j.rootCategory=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

log4j.additivity.org=false

log4j.logger.org=WARN
parquet.hadoop=WARN
log4j.logger.com.barcap.eddi=WARN
log4j.logger.com.barcap.mercury=WARN
log4j.logger.yarn=WARN
log4j.logger.io.netty=WARN
log4j.logger.Remoting=WARN   
log4j.logger.org.apache.hadoop=ERROR

# this disables the table creation logging which is so verbose
log4j.logger.hive.ql.parse.ParseDriver=WARN

# this disables pagination nonsense when running in combined mode
log4j.logger.com.barcap.risk.webservice.servlet.PaginationFactory=WARN

共有1个答案

孟栋
2023-03-14

请注意,Spark worker不是您的Java应用程序,因此不能使用类路径中的log4j.properties文件。

要了解纱线上的Spark如何读取log4j.properties文件,可以使用log4j.debug=true标志:

spark.executor.extraJavaOptions=-Dlog4j.debug=true

大多数情况下,错误是文件在worker YARN容器中找不到/可用。有一个非常有用的Spark指令允许共享文件:--files

--files "./log4j.properties"
-Dlog4j.configuration=log4j.properties
log4j: Using URL [file:/var/log/ambari-server/hadoop/yarn/local/usercache/hdfs/appcache/application_1524817715596_3370/container_e52_1524817715596_3370_01_000002/log4j.properties] for automatic log4j configuration.
 类似资料:
  • 有人能解释一下spark-submit脚本中的和之间的区别吗? 另外,如果依赖项在应用程序中,我是否需要配置?(我这样问是因为我在中更改了版本,而忘记在中更改了它,这使我的应用程序崩溃了)

  • 我在使用以下简单示例时遇到了“ClassNotFound”异常的问题: 在本地模式下,按照文档提交会在第31行生成一个“ClassNotFound”异常,其中ClassToRoundTrip对象被反序列化。奇怪的是,前面28行的使用还可以: 但是,提交给本地开发人员主机仍然会产生相同的问题: 我可以从输出中看到JAR文件正在被执行器提取。 下面是其中一个执行程序的日志:

  • 我们在所有节点上都有6台机器、hdfs和纱线服务,1个主节点和6个从节点。我们在3台机器上安装Spark,1台主机器,3个工人(1个节点主工人)。我们知道,当主spark://[主机]:[端口]时,作业将仅运行3个节点,使用独立模式。当使用spark submit--master Thread提交一个jar时,它会使用所有6个服务器cpu和内存,还是只使用3个spark worker节点机器?如果

  • 我使用IntelliJ创建了一个sbt项目。我将所需的jdbc jar复制到项目的文件夹中。成功完成。在Windows上,我通过启动了spark。 但是,以下命令得到了错误。

  • 哪里可以找到的所有调优参数的详尽列表(连同它们的属性名),这些参数可以通过命令传递?

  • 我试图向spark提交一个jar,但我的jar包含与spark内置jar(snakeyml和其他)冲突的依赖项。 我使用以下命令提交: 但我还是有同样的例外