2015-12-09 123 views
0

我正在尝试记录每个在一个Yarn集群中运行的Spark应用程序的属性(属性如spark.shuffle.compress,spark.reducer.maxMbInFlight,spark.executor.instances等)。日志记录火花配置属性

但是我不知道这些信息是否记录在任何地方。我知道我们可以通过“纱线”命令访问纱线日志,但我所谈论的属性并不存储在那里。

有无论如何去访问这种信息?这个想法是跟踪群集中运行的所有应用程序及其属性,以确定哪些应用程序对执行时间影响最大​​。

回答

0

您可以自己记录它...使用sc.getConf.toDebugString,sqlContext.getConf("")sqlContext.getAllConfs

scala> sqlContext.getConf("spark.sql.shuffle.partitions") 
res129: String = 200 

scala> sqlContext.getAllConfs 
res130: scala.collection.immutable.Map[String,String] = Map(hive.server2.thrift.http.cookie.is.httponly -> true, dfs.namenode.resource.check.interval .... 

scala> sc.getConf.toDebugString 
res132: String = 
spark.app.id=local-1449607289874 
spark.app.name=Spark shell 
spark.driver.host=10.5.10.153 

编辑:但是,我找不到你sqlContext.getAllConfs的1200+性能中指定的属性:(否则,文件说:在http

应用程序Web UI: //:4040在“Environment”选项卡中列出了Spark属性 这是一个有用的检查地点,以确保 您的属性已被正确设置注意,只有通过spark-defaults.conf,SparkConf明确指定的值 ,或将出现命令行。对于所有其他配置属性,您可以使用默认值 。

+0

我对sc上下文的属性更感兴趣。至于我所说的属性,您可以在配置文件中提供它们,当您通过spark-submit或通过上下文启动应用程序时。事情是,我不认为他们登录到任何地方,我可能不得不弄清楚如何收集它们。 – Brandon

+0

是的。并非所有的配置都在SparkConf对象中,或者任何其他conf对象。例如,'spark.executor.instances'不在SparkConf对象中。如果您没有将其指定为您的选项,则不会将其定义为SparkConf中的密钥。当它在Spark源代码中使用时,会检查它是否存在,然后给出默认值,例如[在此行](https://github.com/apache/spark/blob/master/core/src/main/scala/组织/阿帕奇/火花/ UTIL/Utils.scala#L2186)。 – KrisP