我正在YARN上運行Spark作業,並希望獲取YARN容器ID(作爲在一組Spark工作中生成唯一ID的要求的一部分)。我可以看到Container.getId()方法獲取ContainerId,但不知道如何從YARN獲取對當前正在運行的容器的引用。這甚至有可能嗎? YARN容器如何獲得它自己的信息?如何從容器內獲取YARN ContainerId?
2
A
回答
2
我可以得到的東西的唯一方法是使用日誌目錄。以下在火花外殼中工作。
import org.apache.hadoop.yarn.api.records.ContainerId
def f(): String = {
val localLogDir: String = System.getProperty("spark.yarn.app.container.log.dir")
val containerIdString: String = localLogDir.split("/").last
val containerIdLong: Long = ContainerId.fromString(containerIdString).getContainerId
containerIdLong.toHexString
}
val rdd1 = sc.parallelize((1 to 10)).map{ _ => f() }
rdd1.distinct.collect().foreach(println)
1
這裏下面介紹如何火花店集裝箱ID
星火隱藏容器的id和揭露每個應用程序/工作 所以執行ID,如果你打算保持每火花的工作的唯一ID,我建議使用應用程序ID這火花給你,那麼你可以添加自己的一些字符串,使獨特的你
下面火花代碼「YarnAllocator.scala」
私人[紗線] VAL executorIdToConta iner = new HashMap [String,Container]
相關問題
- 1. 如何從Yarn獲取Hive源SQL?
- 2. 從Ajax獲取容器的內容
- 3. 如何從Yarn rest API在瀏覽器上獲取JSON?
- 4. YARN:容器和JVM
- 5. 如何從控制器內的html內容中獲取文本?
- 6. 如何從uploadfilefield獲取文件內容?
- 7. 如何從JDOM獲取節點內容
- 8. 如何從iframe跨域獲取內容
- 9. 如何從XUL獲取內容頁面?
- 10. 如何從數組中獲取內容
- 11. 如何從iframe獲取內容類型?
- 12. 如何從UIWebView獲取內容?
- 13. 如何從System.ServiceModel.Channels.Message獲取消息內容?
- 14. 如何從UIView的內容獲取CGImageRef?
- 15. 如何從about:cache?獲取內容?device = disk
- 16. 如何從nutch獲取html內容
- 17. 如何從XWalkView獲取html內容?
- 18. 如何從內容中獲取數字
- 19. 如何從Jsoup跨度獲取內容
- 20. 如何從PAMIE獲取頁面內容?
- 21. 如何從URL異步獲取內容?
- 22. 如何從Solr獲取內容到drupal?
- 23. PHP preg_match_all - 如何從HTML獲取內容?
- 24. Firebug如何從IFrame獲取內容?
- 25. 如何內容獲取:從WordPress的RSS
- 26. 如何從gowalla網址獲取內容?
- 27. 從TinyMCE編輯器獲取內容
- 28. 如何獲取iframe內容?
- 29. 如何獲取getElementsByTagNameNS內容?
- 30. 如何獲取href內容
其中一些是我想要的。我用'sc.parallelize((1到10))。map {_ => System.getProperty(「spark.yarn.app.container.log.dir」)} .distinct.collect()。foreach(println)'並給出(1行粘貼)'/ var/log/hadoop-yarn/container/application_1504924099862_7571/container_e16_1504924099862_7571_01_000005' – codeaperature
+1這樣的答案。在Java中,我試圖跟隨火花1.6,CDH 5.9,它顯示我** CONTAINER_ID ** Map envVarMap = System.getenv(); Set > envVarSet = envVarMap.entrySet(); (Entry entry:envVarSet){ { \t \t \t logger.info(「KEY = {VALUE = {}」,entry.getKey(),entry.getValue()); \t \t} –