我正在使用oozie運行工作流。它有一個運行任意(非map縮減)代碼的java動作。此java代碼旨在在本地文件系統上創建文件和文件夾。我想確保java操作在hadoop集羣的單個節點上運行(我的節點是7個節點)。對我來說,這個java動作總是運行在同一臺機器上,最好只在hadoop主節點上運行。可能嗎?即使有工作,請分享。確認使用java操作的oozie運行的Java代碼是否僅在單個節點上運行
2
A
回答
2
Java Action與map reduce作業一樣運行,因此您無法控制羣集中的哪個節點。
我不確定oozie是否會尊重這一點。但是您可以嘗試將可接受的映射器失敗次數設置爲較高值(例如10),然後在執行羣集節點不是您想要的時候在Java動作中引發異常(使用InetAddress獲取本地計算機名稱/ IP)。
然後希望(但不一定保證),您的操作將繼續在不需要的節點上失敗,並最終在您選擇的節點上成功。
有點一個黑客攻擊,但它可能工作(同樣這取決於你是否能在整個作業之前修改的地圖任務失敗次數失敗 - mapred.map.max.attempts
,這是4默認)
0
任何Oozie的作業(簡單的Java動作或豬動作或蜂巢動作或..)輪流作爲地圖縮減作業運行。它是Oozie框架的核心屬性。
Oozie工作流程是按照控制相關性DAG(直接非循環圖)排列的動作。
所以,我希望我們是不是可以將文件保存在集羣中的目標節點(或多個)。
相關問題
- 1. 使用java代碼運行oozie工作流程
- 2. 僅在單個節點上運行的SLURM上的R作業
- 3. 如何使用oozie-4.1.0運行正常的「HelloWorld.java」Java操作?
- 4. 確定應用程序引擎運行時(Java)上是否運行代碼
- 5. 在所有操作系統上是否包含java可運行的C++代碼?
- 6. 新的Android運行時(ART)是否僅編譯Java代碼AOT?
- 7. 在多節點羣集上運行mapreduce wordcount(Java代碼)
- 8. Spring Quartz Scheduler服務僅需要在單個節點上運行,而不是在所有節點上運行
- 9. 使用BeanShell的運行Java代碼
- 10. 在線運行Java代碼
- 11. 無法運行簡單的java代碼
- 12. 運行Java字節碼
- 13. 運行Java字節碼
- 14. 使用java運行jython字節碼
- 15. 使用#if來確定代碼是否在WP8上運行
- 16. 強制Oozie作業在特定節點上運行
- 17. 在Android上運行標準Java代碼
- 18. 在客戶機上運行java代碼
- 19. Solr 4.3.1是否運行在Java 8上
- 20. 無法使用java動作運行oozie工作流程
- 21. Java運行時執行 - 確認問題
- 22. 使用oozie運行多個mapreduce作業?
- 23. 使用System.console運行java代碼類
- 24. 使用MPI函數運行Java代碼
- 25. 運行.sql文件使用java代碼
- 26. Java從命令行運行的代碼
- 27. 在多個計算節點上運行相同的Java程序
- 28. 是否在GPU上運行opengl代碼?
- 29. 根據操作系統運行不同的java代碼(Windows/Android)
- 30. 從Java代碼運行Matlab