1
我想檢查任務跟蹤器是否在服務器上運行。我如何檢查使用Java代碼?如何知道TaskTracker是否正在運行Java代碼?
我不需要命令行的解決方案。有任何Java API來檢查tasktracker的狀態嗎?
我想檢查任務跟蹤器是否在服務器上運行。我如何檢查使用Java代碼?如何知道TaskTracker是否正在運行Java代碼?
我不需要命令行的解決方案。有任何Java API來檢查tasktracker的狀態嗎?
一種解決方法是調用服務的HTTP端點的JMX指標JSON轉儲URL。您可以使用您選擇的語言的任何HTTP客戶端庫來執行此操作。你提到的TaskTracker,所以它聽起來就像你正在運行的Hadoop 1.這是指定HTTP端點配置屬性:
<property>
<name>mapred.task.tracker.http.address</name>
<value>0.0.0.0:50060</value>
<description>
The task tracker http server address and port.
If the port is 0 then the server will start on a free port.
</description>
</property>
假設你沒有覆蓋這一點,URL用GET請求調用會http://<host>:50060/jmx
。
許多Hadoop守護進程暴露一個HTTP服務器,並在/jmx
網址作出反應。這個解決方案不僅限於TaskTracker。 JSON響應中的特定指標有效負載在每個守護進程中會有所不同,但是如果您只關心守護進程是否正在運行,那麼只需檢查成功的HTTP響應就足夠了。
謝謝,克里斯。還有一個問題:如果我收到'ERR_CONNECTION_REFUSED'表示TaskTracker已成功關閉? –
@SavanPatel,拒絕TCP連接可能意味着1)進程不再運行或2)進程剛剛啓動,但有一個簡短的窗口,它沒有爲HTTP服務器綁定偵聽套接字。實際上,這個時間窗口很短,所以這種區別對監視儀表板等事情來說並不重要。我想我會提到它的完整性。 –
@SavanPatel,對此有幫助?如果是這樣,那麼請考慮接受答案。 https://stackoverflow.com/help/someone-answers –