我正在嘗試記錄每個在一個Yarn集羣中運行的Spark應用程序的屬性(屬性如spark.shuffle.compress,spark.reducer.maxMbInFlight,spark.executor.instances等)。日誌記錄火花配置屬性
但是我不知道這些信息是否記錄在任何地方。我知道我們可以通過「紗線」命令訪問紗線日誌,但我所談論的屬性並不存儲在那裏。
有無論如何去訪問這種信息?這個想法是跟蹤羣集中運行的所有應用程序及其屬性,以確定哪些應用程序對執行時間影響最大。
我正在嘗試記錄每個在一個Yarn集羣中運行的Spark應用程序的屬性(屬性如spark.shuffle.compress,spark.reducer.maxMbInFlight,spark.executor.instances等)。日誌記錄火花配置屬性
但是我不知道這些信息是否記錄在任何地方。我知道我們可以通過「紗線」命令訪問紗線日誌,但我所談論的屬性並不存儲在那裏。
有無論如何去訪問這種信息?這個想法是跟蹤羣集中運行的所有應用程序及其屬性,以確定哪些應用程序對執行時間影響最大。
您可以自己記錄它...使用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明確指定的值 ,或將出現命令行。對於所有其他配置屬性,您可以使用默認值 。
我對sc上下文的屬性更感興趣。至於我所說的屬性,您可以在配置文件中提供它們,當您通過spark-submit或通過上下文啓動應用程序時。事情是,我不認爲他們登錄到任何地方,我可能不得不弄清楚如何收集它們。 – Brandon
是的。並非所有的配置都在SparkConf對象中,或者任何其他conf對象。例如,'spark.executor.instances'不在SparkConf對象中。如果您沒有將其指定爲您的選項,則不會將其定義爲SparkConf中的密鑰。當它在Spark源代碼中使用時,會檢查它是否存在,然後給出默認值,例如[在此行](https://github.com/apache/spark/blob/master/core/src/main/scala/組織/阿帕奇/火花/ UTIL/Utils.scala#L2186)。 – KrisP