我用ganglia监视hadoop。我选择度量“dfs.datanode.heartbeatsavgtime”来判断datanode(我指的是datanode服务,而不是主机)是否关闭。
当datanode正常工作时,“dfs.datanode.heartbeatsavgtime”仍在更改。也就是说,图中的值是变化的。
看起来是这样的:
但是在我停止datanode服务之后,图中的值保持不变。
看起来是这样的:
第二个图形中的值保持不变。但该值不是0或无穷大。因此,我无法判断datanode服务是否正常。
在处理其他指标时也是如此。
我检查了ganglia使用的rrd,它使用“rrdtool fetch”存储度量数据。有关度量的值存储在*.rrd文件中。当我检查该文件时,我发现在停止datanode之后,有关度量的值也会更新。但价值并没有变化。
我在rrd的官方网站上看到了关于rrd的参考资料。他们说,如果rrd没有收到之前设置的间隔之间的更新日期,rrd将在*.rrdfile中写入未知。
我认为引起这个问题的原因可能有两个。
当gmetad没有收到metric时。它用旧值更新rrd,这样图形就和旧值一样了。
当gmond不能收集度量时,它将旧值报告给gmetad。
但是我在ganglia的github的源代码中没有找到任何证据。
那么你知道如何解决图中的值保持不变的问题吗?或者您知道关于如何使用ganglia监视hadoop集群的其他细节吗?
@davestephens@lorin hochstein公司
1条答案
按热度按时间3pvhb19x1#
在我努力解决这个问题之后,我发现如果我们在hadoop-metrics2.properties中设置度量的dmax,当hadoop崩溃时,ganglia将不会接收任何数据,并且返回未知。ganglia网站上的图表将消失。当ganglia+nagios时,nagios也将返回未知状态。这足以判断hadoop是上还是下。
dmax意味着在dmax时间之后,hadoop将销毁度量。