代码之家  ›  专栏  ›  技术社区  ›  Deepan Ram

spark submit in cluster deploy mode获取应用程序ID到控制台

  •  2
  • Deepan Ram  · 技术社区  · 7 年前

    我陷入了一个需要迅速解决的问题中。我已经阅读了很多关于Spark集群部署模式的文章和教程,但是我对这种方法一无所知,因为我已经坚持了几天。

    我的用例:我有很多使用“spark2 submit”命令提交的spark作业,提交后我需要在控制台中打印应用程序ID。spark作业使用集群部署模式提交。(在正常客户机模式下,它将被打印)

    创建解决方案时需要考虑的要点:-我不应该更改代码(因为这需要很长时间,因为有许多应用程序正在运行),我只能提供log4j属性或一些自定义编码。

    我的方法:

    1)我已经尝试更改log4j级别和各种log4j参数,但是日志仍然会转到集中日志目录。

    部分来自我的日志4J.属性:

    log4j.logger.org.apache.spark.scheduler.cluster.YarnClusterSchedulerBackend=ALL,console
    log4j.appender.org.apache.spark.scheduler.cluster.YarnClusterSchedulerBackend.Target=System.out
    
    log4j.logger.org.apache.spark.deploy.SparkSubmit=ALL
    log4j.appender.org.apache.spark.deploy.SparkSubmit=console
    
    log4j.logger.org.apache.spark.deploy.SparkSubmit=TRACE,console
    log4j.additivity.org.apache.spark.deploy.SparkSubmit=false
    
    log4j.logger.org.apache.spark.deploy.yarn.Client=ALL
    log4j.appender.org.apache.spark.deploy.yarn.Client=console
    
    
    log4j.logger.org.apache.spark.SparkContext=WARN
    log4j.logger.org.apache.spark.scheduler.DAGScheduler=INFO,console
    
    log4j.logger.org.apache.hadoop.ipc.Client=ALL
    

    2)我还尝试添加自定义监听器,我可以在应用程序完成后获取Spark应用程序ID,但不能访问控制台。

    代码逻辑:

    public void onApplicationEnd(SparkListenerApplicationEnd arg0) 
        {
             for (Thread t : Thread.getAllStackTraces().keySet()) 
             {
                if (t.getName().equals("main"))
                {
                    System.out.println("The current state : "+t.getState());
    
                    Configuration config = new Configuration();
    
                    ApplicationId appId = ConverterUtils.toApplicationId(getjobUId);
    
                    // some logic to write to communicate with the main thread to print the app id to console.
                }
             }
        }
    

    3)我已将spark.eventlog启用为true,并在hdfs中指定了一个目录,用于从spark submit命令写入事件日志。

    如果有人能帮助我找到解决方案的方法,那将是非常有帮助的。或者如果我做错了什么,任何见解都会帮助我。

    谢谢。

    2 回复  |  直到 7 年前
        1
  •  2
  •   Deepan Ram    7 年前

    <location> <rest of the parameters>

        2
  •  1
  •   Kit Menke    7 年前

    1. client mode
    2. cluster mode