使用 log4j 从 spark 记录到 hdfs,没有水槽

Ire*_*ene 5 logging log4j hdfs hadoop-yarn apache-spark

我在 cdh 5.3 集群上有一个 spark 1.2.0。

由于 jar 中捆绑了一个自定义的 log4j.properties 文件,我设法将我的 spark 应用程序日志记录到本地文件系统。这很好,直到在纱线客户端模式下启动 spark 时,但在纱线集群模式下不可行,因为无法知道驱动程序在哪台机器上运行。

我查看了纱线日志聚合器,查看了在 h 中生成的文件,dfs://nameservice1/user/spark/applicationHistory/application_1444387971657_0470/*这与普通文件系统上的文件完全不匹配,但是是这样的信息

{"Event":"SparkListenerTaskEnd","Stage ID":1314,"Stage Attempt ID":0,"Task Type":"ResultTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":3120,"Index":1,"Attempt":0,"Launch Time":1445512311024,"Executor ID":"3","Host":"usqrtpl5328.internal.unicreditgroup.eu","Locality":"RACK_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1445512311685,"Failed":false,"Accumulables":[]},"Task Metrics":{"Host Name":"usqrtpl5328.internal.unicreditgroup.eu","Executor Deserialize Time":5,"Executor Run Time":652,"Result Size":1768,"JVM GC Time":243,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":26,"Local Blocks Fetched":10,"Fetch Wait Time":0,"Remote Bytes Read":16224},"Output Metrics":{"Data Write Method":"Hadoop","Bytes Written":82983}}}
Run Code Online (Sandbox Code Playgroud)

现在有没有办法将所有内容以及我想要的内容记录到 HDFS 中?

欢迎任何建议

编辑我在发布我的问题时看到过这个问题。它不能解决我的问题,因为我需要登录到 HDFS 而没有考虑到这一点。

我什至不知道是否可以直接使用 log4j 登录到 HDFS,如果您对如何相应地编写 log4j.properties 有任何想法,请分享