我可以在Spark的log4j.properties中使用与我的虚拟应用程序中相同的设置来配置appender。
但是当Spark shell启动时,它似乎在加载任何额外的jar之前就启动了记录器,然后立即抛出一个错误,因为它找不到Kafka appender:
log4j:错误无法实例化类[kafka.producer.kafkalog4jappender]。ClassNotFoundException:kafka.producer.Kafkalog4Jappender
我设法在cluster
模式下使用spark-submit 2.1.1
,并使用kafka-log4j-appender 2.3.0
,但我相信其他版本也会有类似的行为。
首先,我认为阅读日志真的很有帮助,所以您需要能够阅读应用程序纱线日志和spark-submit
信息。有时,当应用程序在accept
阶段挂起时(因为kafka生产者配置失误),需要从Hadoop Yarn应用程序概述中读取日志。
所以每当我启动我的应用程序时,抓取
19/08/01 10:52:46 INFO yarn.Client: Application report for application_1564028288963_2380 (state: RUNNING)
完成时从YARN行并下载所有日志
yarn logs -applicationId application_1564028288963_2380
好,让我们试试!
基本上,spark
缺少kafka-log4j-appender
。
kafka-log4j-appender-2.3.0.jar
kafka-clients-2.3.0.jar
JARS='/absolute/path/kafka-log4j-appender-2.3.0.jar,/absolute/path/kafka-clients-2.3.0.jar'
JARS_CLP='/absolute/path/kafka-log4j-appender-2.3.0.jar:/absolute/path/kafka-clients-2.3.0.jar'
JARS_NAMES='kafka-log4j-appender-2.3.0.jar:kafka-clients-2.3.0.jar'
spark-submit \
--deploy-mode client \
--jars "$JARS"
--conf "spark.driver.extraClassPath=$JARS_CLP" \
--conf "spark.executor.extraClassPath=$JARS_NAMES" \
spark-submit \
--deploy-mode cluster \
--jars "$JARS"
--conf "spark.driver.extraClassPath=$JARS_NAMES" \
--conf "spark.executor.extraClassPath=$JARS_NAMES" \
19/11/15 19:44:08 INFO yarn.Client: Uploading resource file:/srv/cortb/home/atais/.ivy2/jars/org.apache.kafka_kafka-log4j-appender-2.3.0.jar -> hdfs:///user/atais/.sparkStaging/application_1569430771458_10776/org.apache.kafka_kafka-log4j-appender-2.3.0.jar
19/11/15 19:44:08 INFO yarn.Client: Uploading resource file:/srv/cortb/home/atais/.ivy2/jars/org.apache.kafka_kafka-clients-2.3.0.jar -> hdfs:///user/atais/.sparkStaging/application_1569430771458_10776/org.apache.kafka_kafka-clients-2.3.0.jar
并记下如何在HDFS
上的application_1569430771458_10776
文件夹中调用jar
。
现在为客户端
模式
JARS_CLP='/srv/cortb/home/atais/.ivy2/jars/org.apache.kafka_kafka-log4j-appender-2.3.0.jar:/srv/cortb/home/atais/.ivy2/jars/org.apache.kafka_kafka-clients-2.3.0.jar'
KAFKA_JARS='org.apache.kafka_kafka-log4j-appender-2.3.0.jar:org.apache.kafka_kafka-clients-2.3.0.jar'
spark-submit \
--deploy-mode client \
--packages "org.apache.kafka:kafka-log4j-appender:2.3.0"
--conf "spark.driver.extraClassPath=$JARS_CLP" \
--conf "spark.executor.extraClassPath=$KAFKA_JARS" \
或者对于群集
模式
spark-submit \
--deploy-mode cluster \
--packages "org.apache.kafka:kafka-log4j-appender:2.3.0"
--conf "spark.driver.extraClassPath=$KAFKA_JARS" \
--conf "spark.executor.extraClassPath=$KAFKA_JARS" \
我注意到在 Spark 中的规则探索器每次催化剂更改计划时都会执行跟踪日志: https://github . com/Apache/spark/blob/78801881 c 405 de 47 f 7 e 53 EEA 3 e 0420 DD 69593 DBD/SQL/catalyst/src/main/Scala/org/Apache/spark/SQL/catalyst/rules/ru
我将pyspark应用程序从我自己的工作站上的pycharm启动到一个8节点集群。这个群集还有编码在spark-defaults.conf和spark-env.sh中的设置 显示未来的信息消息,但到那时已经太晚了。 如何设置spark开始时的默认日志记录级别?
我们从kafka向SparkStreaming发送了15张唱片,但是spark只收到了11张唱片。我用的是spark 2.1.0和kafka_2.12-0.10.2.0。 密码 bin/Kafka-console-producer . sh-broker-list localhost:9092-topic input data topic # 1 2 3 4 5 6 7 8 9 10 11 12
问题内容: 我在独立应用程序中使用Apache Common Logging库。在网上搜索后,我尝试通过使用以下方式关闭日志记录 但是,我仍然可以看到正在打印的日志消息。我可以知道我错过了什么吗? 我可以通过以下方式关闭日志记录 在commons-logging.properties中。 但是,在开发期间,我的Netbeans不知道从何处获取commons-logging.properties,有
我正在使用python日志记录我的程序。所有日志当前都打印在stdout上,但我希望使用POST REST调用将它们发送到远程日志服务器。当前,我的程序发出了多个日志记录的POST请求。有没有更优化的方式发送日志,我可以捆绑多个日志在一个POST请求?