在YARN上的Spark中获取当前正在运行的容器数

时间:2017-10-19 08:46:02

标签: scala apache-spark yarn

我有一个在纱线上运行的Spark应用程序。 有了RDD我需要对数据库执行查询。 问题是我必须设置正确的连接选项,否则数据库将被重载。这些选项取决于同时查询此DB的工作人员数量。为了解决这个问题,我想在运行时(来自worker)检测当前运行的worker数。 这样的事情:

val totalDesiredQPS = 1000 //queries per second
val queries: RDD[String] = ???
queries.mapPartitions(it => {
      val dbClientForThisWorker = ...
      //TODO: get this information from YARN somehow
      val numberOfContainers = ???
      val dbClientForThisWorker.setQPS(totalDesiredQPS / numberOfContainers)
      it.map(query => dbClientForThisWorker.executeAsync...)
      ....
})

我也很欣赏其他解决方案,但我想避免随机播放,无论工作人员的数量是多少,都要获得几乎完整的数据库利用率。

0 个答案:

没有答案