日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > 服務(wù)器 > 通過(guò) JMX 獲取Hadoop/HBase監(jiān)控?cái)?shù)據(jù)

通過(guò) JMX 獲取Hadoop/HBase監(jiān)控?cái)?shù)據(jù)

來(lái)源:程序員人生   發(fā)布時(shí)間:2015-04-23 07:47:12 閱讀次數(shù):4966次


概述

說(shuō)到對(duì)Hadoop和 HBase的集群監(jiān)控,大家知道的和用的最多的可能還是第3方的監(jiān)控工具,cacti,ganglia,zabbix之類(lèi)的。玩的深1些的,會(huì)用 zenoss之類(lèi)的。這些工具確切不錯(cuò),也能發(fā)揮很大的作用,但時(shí)間長(zhǎng)了總感覺(jué)監(jiān)控粒度還是比較粗,不夠詳細(xì)。畢竟是第3方的監(jiān)控,即使Hadoop自帶 了ganglia的接口,也還是覺(jué)得不夠。

其實(shí)Hadoop本身是帶有監(jiān)控接口的,各公司的發(fā)行版還有自己定制的接口,不過(guò)可能知道的人就不太多了。

其實(shí)這個(gè)接口特別簡(jiǎn)單,但是非常詳細(xì),也非常方便,就是JMX。

Hadoop的http監(jiān)控端口基本所有人都知道,namenode 50070,jobtracker 50030,datanode 50075,tasktracker 50060。不過(guò)當(dāng)用戶訪問(wèn)這些端口的時(shí)候,會(huì)自動(dòng)跳轉(zhuǎn)到dfshealth.jsp或jobtracker.jsp這樣的監(jiān)控頁(yè)面。jmx的訪問(wèn)很簡(jiǎn) 單,只需要把網(wǎng)頁(yè)的名字換成jmx就能夠了。

例如

http://your_namenode:50070/dfshealth.jsp的地址替換成http://your_namenode:50070/jmx

便可,其他如50030,50060等等,也順次類(lèi)推,HBase的系統(tǒng)信息也能夠用這類(lèi)方法獲得。

返回值全部是JSON,非常便于自己進(jìn)行處理。返回的信息也非常詳細(xì),內(nèi)存狀態(tài),內(nèi)存池狀態(tài),java堆信息等等。乃至還有操作系統(tǒng)信息,版本,JVM版本信息等等,很全面。



實(shí)現(xiàn)

對(duì)http://your_namenode:50070/jmx 這樣地址的數(shù)據(jù)訪問(wèn)可以通過(guò)HttpClient進(jìn)行數(shù)據(jù)訪問(wèn),再將得到的數(shù)據(jù)通過(guò)

由于返回的Json數(shù)據(jù)量很大,而且基本上不可能全部需要,對(duì)這類(lèi)情況可以通過(guò)添加?qry方式取得部份數(shù)據(jù),

例如http://your_namenode:60010/jmx?qry=Hadoop:service=HBase,name=Master,sub=Server


Maven配置:

<dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20090211</version> </dependency>



Java類(lèi)

該程序以取得Hbase的監(jiān)控?cái)?shù)據(jù)為例,關(guān)于HDFS的監(jiān)控?cái)?shù)據(jù)相似

/** * 作為HBase Master監(jiān)控信息的source * * @author aihua.sun * @date 2015/4/6 * @since V1.0 */ import com.eric.agent.flume.model.HMasterRoleInfo; import com.eric.agent.utils.AgentConstants; import com.eric.agent.utils.MetricDataUtils; import org.json.JSONException; import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HBaseMasterDataProvider{ protected final Logger LOGGER = LoggerFactory.getLogger(getClass()); private static final String server = "Hadoop:service=HBase,name=Master,sub=Server"; private static final String assignment = "Hadoop:service=HBase,name=Master,sub=AssignmentManger"; @Override public String extractMonitorData() { //TODO 通過(guò)調(diào)用API取得IP和參數(shù) HMasterRoleInfo monitorDataPoint = new HMasterRoleInfo(); String URL = "http://hostname:60010/jmx"; JSONObject serverJson = qryJSonObjectFromJMX(URL, server); JSONObject assignJson = qryJSonObjectFromJMX(URL, assignment); try { monitorDataPoint.setNumRegionServers(serverJson.getLong("numRegionServers")); monitorDataPoint.setNumDeadRegionServers(serverJson.getLong("numDeadRegionServers")); monitorDataPoint.setClusterRequests(serverJson.getLong("clusterRequests")); monitorDataPoint.setRitCount(assignJson.getLong("ritCount")); monitorDataPoint.setRitCountOverThreshold(assignJson.getLong("ritCountOverThreshold")); monitorDataPoint.setRitOldestAge(assignJson.getLong("ritOldestAge")); } catch (JSONException e) { e.printStackTrace(); } return monitorDataPoint.toString(); } public static void main(String[] args){ System.out.println(new HBaseMasterDataProvider().extractMonitorData()); } /** * 通過(guò)jmx獲得監(jiān)控?cái)?shù)據(jù) * * @param URL * @param objectName * @return */ public static JSONObject qryJSonObjectFromJMX(String URL, String objectName) { JSONObject jsonObject = null; try { StringBuilder sb = new StringBuilder(URL); sb.append("?qry="); sb.append(objectName); GetMethod getMethod = new GetMethod(sb.toString()); int statusCode = httpClient.executeMethod(getMethod); String jsonStr = new String(getMethod.getResponseBody()); jsonObject = new JSONObject(removeDuplicateContext(jsonStr)).getJSONArray("beans").getJSONObject(0); } catch (JSONException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return jsonObject; } }



參考文章

JMXJsonServlet 介紹
http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/http/jmx/JMXJsonServlet.html

Hadoop指標(biāo)介紹
http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-common/Metrics.html#rpc











生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 成人欧美一区二区三区黑人孕妇 | 国产99在线视频 | 成人福利免费在线观看 | a级毛片大全 | 亚洲在线一区二区三区 | 欧美乱妇18p| 色一乱一伦一图一区二区精品 | 久久久国产精品ⅴa麻豆ai换脸 | 亚洲色图25p| 99re在线观看| 久久久亚洲综合 | 国产精品不卡一区二区三区 | 91精品国产色综合久久不卡98口 | 国产在线播放一区 | 国产精品不卡一区二区三区 | 欧美日精品 | 亚洲永久在线 | 精精国产xxxx视频在线播放 | 国产精品久久精品 | 欧美一级毛片免费网站 | 91精品成人久久 | 一个色综合视频 | 亚洲三区在线 | 欧美日韩国产大片 | 成人午夜精品一区二区三区 | 黄色免费视频在线观看 | 国产精品18久久久久久久久 | 久久综合成人精品亚洲另类欧美 | 99国产精品久久久久久久久久 | 99久久久久国产精品免费 | 亚洲成人一二三 | 中文字幕在线观看av | 性视频网 | 亚洲视频中文 | 日韩欧美视频在线 | 欧美日韩1区2区3区 麻豆视频观看 | 成人黄色小视频 | 在线免费观看黄色片 | 欧美日韩精品在线 | 国产一区二 | 国产中文字幕网 |