spark on yarn共有兩種提交方式悴晰,
1 是yarn-client铡溪,此時(shí)driver節(jié)點(diǎn)就是spark作業(yè)的提交節(jié)點(diǎn)
2 是yarn-cluster泪喊,此時(shí)spark作業(yè)的提交節(jié)點(diǎn)相當(dāng)于一個(gè)提交client,只負(fù)責(zé)提交作業(yè)至yarn集群饲帅,applicationMaster(也即driver)是集群中的任一節(jié)點(diǎn)瘤泪,所以需要通過其他方式來獲取driver的信息;
目前可以通過如下幾種方式來獲取
1赦邻、yarnClient API
val appReport = yarnClient.getApplication(appid)
val amHost = appReport.getHost()
2实檀、yarn rest API
yarn提供了非常多的rest API膳犹,其中
GET [http://rm-http-address:port/ws/v1/cluster/apps/appId]
返回結(jié)果(json或者XML)如下:
...
"amHostHttpAddress": "host.domain.com:8042",
...
3、yarn運(yùn)行日志
1)作業(yè)運(yùn)行完以后铐料,在yarn的任一節(jié)點(diǎn)執(zhí)行yarn logs -applicationId appId 可以獲取完整的運(yùn)行日志豺旬,其中即包括driver的日志也包括各executor的日志
2)yarn中資源的最小單位是container,其中container編號(hào)為000001的即是AM所在的container篓跛,可以在日志中找到如下信息:
Container: container_e02_1519868127773_1010_01_000001 on hostname_8041
3)此外坦刀,也可以根據(jù)driverUrl關(guān)鍵字搜索日志獲仁咭А:
driverUrl: spark://CoarseGrainedScheduler@172.168.4.8:35377, executorHostname: hostname
參考:
1沐寺、http://hadoop.apache.org/docs/r2.6.0/api/org/apache/hadoop/yarn/api/records/ApplicationReport.html
2芽丹、http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/ResourceManagerRest.html#Cluster_Metrics_API
3卜朗、https://hvivani.com.ar/2016/03/30/get-the-driver-ip-in-spark-yarn-cluster-mode/