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 –