2016-08-26 7 views
3

Архитектура Spark полностью вращается вокруг концепции исполнителей и ядер. Я бы хотел увидеть практически, сколько исполнителей и ядер работает для моего искрового приложения, запущенного в кластере.Spark - Сколько исполнителей и ядер выделено для моей искровой работы

Я пытался использовать сниппет в моем приложении, но не повезло.

val conf = new SparkConf().setAppName("ExecutorTestJob") 
val sc = new SparkContext(conf) 
conf.get("spark.executor.instances") 
conf.get("spark.executor.cores") 

Есть ли способ, чтобы получить эти значения с помощью SparkContext объекта или SparkConf объекта и т.д ..

+1

Вы можете посмотреть в Спарк UI. Перейдите на страницу http: // : 4040 и нажмите вкладку «Исполнители». Это варьируется между менеджерами кластеров. –

+1

Кришна, вы могли бы получить? не стесняйтесь задавать вопросы –

+0

Были ли вы в состоянии проверить? –

ответ

7

Scala (Programmatic пути):

getExecutorStorageStatus и getExecutorMemoryStatus возвращают число исполнителей, включая водитель. как ниже пример фрагмента.

/** Method that just returns the current active/registered executors 
     * excluding the driver. 
     * @param sc The spark context to retrieve registered executors. 
     * @return a list of executors each in the form of host:port. 
     */ 
     def currentActiveExecutors(sc: SparkContext): Seq[String] = { 
     val allExecutors = sc.getExecutorMemoryStatus.map(_._1) 
     val driverHost: String = sc.getConf.get("spark.driver.host") 
     allExecutors.filter(! _.split(":")(0).equals(driverHost)).toList 
     } 

sc.getConf.getInt("spark.executor.instances", 1) 

так же получить все свойства и печати, как показано ниже, вы можете получить информацию сердечников, а также ..

sc.getConf.getAll.mkString("\n") 

ИЛИ

sc.getConf.toDebugString 

В основном spark.executor.cores для исполнителей spark.driver.cores водитель должен иметь это значение.

Python:

Above methods getExecutorStorageStatus and getExecutorMemoryStatus, In python api were not implemented

EDIT Но можно получить с помощью Py4J привязок подвергаются от SparkSession.

sc._jsc.sc().getExecutorMemoryStatus()

-1

Это питон пример, чтобы получить число ядер (в том числе магистра) def workername(): import socket return str(socket.gethostname()) anrdd=sc.parallelize(['','']) namesRDD = anrdd.flatMap(lambda e: (1,workername())) namesRDD.count()