Из чего состоит executorRunTime в Spark?

#pandas #apache-spark #pyspark #apache-spark-mllib #metrics

#pandas #apache-spark #pyspark #apache-spark-mllib #показатели

Вопрос:

В настоящее время, работая над Spark, я собрал некоторые показатели производительности с помощью пользовательского API Spark listener для целей анализа. Я попытался создать график с накоплением столбцов, который показывает процент времени, затрачиваемого исполнителем на выполнение задачи, перетасовку или паузы при сборке мусора для трех разных алгоритмов машинного обучения. Вот скриншот того, что я нашел:

скорость выполнения, сборки мусора, сериализации и перетасовки в Spark MLlib

Что привлекло мое внимание сразу после появления графика, так это то, что скорости являются ложными. Вы можете видеть, что оно превышает значение 1 для алгоритма kmeans и меньше 0,8 для персептрона.

Вот как я вычислил скорости:

 execution['cpuRate'] = execution['executorCpuTime'] / execution['executorRunTime']
execution['serRate'] = execution['resultSerializationTime'] / execution['executorRunTime']
execution['gcRate'] = execution['jvmGCTime'] / execution['executorRunTime']
execution['shuffleFetchRate'] = execution['shuffleFetchWaitTime'] / execution['executorRunTime']
execution['shuffleWriteRate'] = execution['shuffleWriteTime'] / execution['executorRunTime']

execution = execution[['cpuRate', 'serRate', 'gcRate', 'shuffleFetchRate', 'shuffleWriteRate']]

execution.plot.bar(stacked=True)
  

Я использую библиотеку Pandas, а выполнение — это фрейм данных, содержащий усредненные показатели.
Конечно, я предполагаю, что executorRunTime является суммированием других базовых показателей, но это оказывается ложным.

Что означают эти периоды времени и как они соотносятся? Я имею в виду: из чего состоит время выполнения, если не из всех других показателей, указанных выше?

Спасибо

Ответ №1:

Согласно TaskMetrics.scala:

   * Time the executor spends actually running the task (including fetching shuffle data).
  */
def executorRunTime: Long = _executorRunTime.sum
  

Измеряется в миллисекундах.