基于jmx和ganglia的hadoop性能监控.docx
- 文档编号:23012142
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:10
- 大小:23.30KB
基于jmx和ganglia的hadoop性能监控.docx
《基于jmx和ganglia的hadoop性能监控.docx》由会员分享,可在线阅读,更多相关《基于jmx和ganglia的hadoop性能监控.docx(10页珍藏版)》请在冰豆网上搜索。
基于jmx和ganglia的hadoop性能监控
基于jmx和ganglia的hadoop性能监控
基于jmx和ganglia的hadoop性能监控论文基于JMX和Ganglia的Hadoop性能监控平台孙元成,李文生5(北京邮电大学计算机学院,智能通信软件与多媒体北京重点实验室,北京100876)摘要:
Hadoop作为一个开源分布式系统架构,实现了分布式文件系统HDFS和MapReduce分布式计算框架。
由于越来越多的网络应用使用Hadoop集群进行计算和存储,如何对集群中的节点进行性能监控保证集群高效正常的运行就显的尤为重要。
本文基于Hadoop分布式平台,采用Hadoop的JMX接口与Ganglia工具实现了对Hadoop集群进行性能监控。
10关键词:
分布式;Hadoop;监控;JMX;Ganglia中图分类号:
TP315HadoopPerformanceMonitoringPlatformbasedonJMXandGanglia15SunYuancheng,LiWensheng(BeijingKeyLaboratoryofIntelligentTelecommunicationsSoftwareandMultimediaDepartmentofComputer,BeijingUniversityofPostsandTelcommunications,Beijing100876)Abstract:
Hadoop,anopensourcedistributedsystemarchitectureimplementsadistributedfilesystemHDFSanddistributedcomputingframworkMapReduce.Duetoagrowingnumberof20InternetcompaniesandcloudcomputingvendorsusingHadoopclustertocomputeandstoragemoreandmorewidely,itbecomesparticularlyinportanttomonitorthenodesperformanceintheclusterinordertokeeptheclusterrunningefficientlyandnormally.InthispaperwewillusetheJMXinterfaceandtheGangliatoolforperformancemonitoringonaHadoopcluster.Keywords:
DistributedComputation;Hadoop;Monitor;JMX;Ganglia250引言随着计算机技术的高速发展和互联网的快速普及,如今的互联网企业每天都面对上百GB或者TB级别的数据处理,Hadoop的HDFS分布式存储和MapReduce分布式计算框架提供了高可靠性的分布式存储和高速的海量数据计算,越来越多的公司开始利用Hadoop实30现海量数据的信息挖掘、日志分析等,因此如何搭建Hadoop集群监控系统保证集群系统的正常运行就显的尤为重要。
设计Hadoop集群监控平台要解决的主要问题有如何从Hadoop集群中获得NameNode、DataNode的运行指标;从JobTracker、TaskTracker中获取MapReduce任务的执行状态,包括:
启动时间、运行时间、调度策略、以及任务Kill次数等内容;从集群中获取系统运行指35标,如内存使用量、JVM堆使用量、CPUIdle、网络流量、IO速度等信息;以及如何将这些数据以图表等形式展现出来,提供良好的UI界面便于维护人员快速发现集群的问题。
JMX(JavaManagementExtensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。
JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。
由于Hadoop支持JMX,按40照JMX协议提供了获取NameNode、DataNode以及JobTracker的运行指标的接口。
因此可作者简介:
孙元成,(1987-),男,硕士研究生,主要研究方向:
云计算在物联网领域的应用。
E-mail:
stevesun521@通信联系人:
李文生,(1966-),女,副教授,部门工会主席、中心党支部书记,主要研究方向:
数据库系统及应用、网络信息处理、多媒体技术。
E-mail:
wenshli@-9-以使用上述接口获取数据,也可以使用JMX扩展Hadoop的监控接口,使其具有可扩展和可定制性。
Ganglia是UCBerkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。
Ganglia的核心包含gmond、gmetad以及一个Web前端。
主要是用来监控系统性能,如:
cpu、45mem、硬盘利用率、I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。
综上所述,通过Hadoop的JMX接口可以获取NameNode的性能指标、DataNode的HDFS信息、以及JobTracker、TaskTracker的性能指标数据。
通过Ganglia监控平台可以将使用JMX获取的Hadoop集群信息和系统指标合理的组织在一起,并以Web的形式展现出来。
501基于Hadoop的分布式系统1.1Hadoop基本架构介绍1.1.1Hadoop分布式文件系统HDFS图1分布式文件系统HDFS体系结构55Fig.1HDFSArchitecture如图1所示,HDFS采用master/slave架构1。
一个HDFS集群是由一个NameNode和一定数目的DataNode组成。
NameNode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。
集群中的DataNode一般是一个节点一个,负责管理60它所在节点上的存储。
HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。
从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组DataNode上。
NameNode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。
它也负责确定数据块到具体DataNode节点的映射。
DataNode负责处理文件系统客户端的读写请求。
在NameNode的统一调度下进行数据块的创建、删除和复制。
651.1.2HadoopMapReduce执行过程图2HadoopMapReduce执行过程2Fig.2HadoopMapReduceExecutionoverview.70如图2所示,一个MapReduce任务的执行过程分为如下几个阶段3:
1client端启动mapreduce程序;2本次运行将生成一个Job,于是JobClient向JobTracker申请一个JobID以标识这个Job;3JobClient将Job所需要的资源提交到HDFS中一个以JobID命名的目录中。
这些资源75包括JAR包、配置文件、InputSplit等;4JobClient向JobTracker提交这个Job;5JobTracker初始化这个Job;6JobTracker从HDFS获取这个Job的Split等信息;7JobTracker向TaskTracker分配任务;808TaskTracker从HDFS获取这个Job的相关资源;9TaskTracker开启一个新的JVM;10TaskTracker用新的JVM来执行Map或Reduce;1.2Hadoop平台搭建1.2.1实验平台85硬件环境:
DellR410刀片服务器内存12G磁盘6T软件环境:
采用ESX虚拟化,生成6台虚拟机,每台内存3G,硬盘30Gserver1~server6,其中server1作为NameNode节点,server2~server6作为DataNode.图3实验集群运行环境90Fig.3ExperimentEnvironmentofCluster2JMX监控Hadoop节点信息95100105
2.1JMX介绍JMX是由Sun公司及其合作伙伴共同制定的管理规范,是标准Java技术的扩展,它定义了三层的体系结构4:
(1)设备层定义了如何实现JMX管理资源的规范。
一个JMX管理资源可以是一个Java应用、一个服务或一个设备,它们可以用Java开发,或者至少能用Java进行包装,并且能被置入JMX框架中,从而成为JMX的一个管理构件(ManagedBean,Mbean)。
(2)代理层是一个运行在Java虚拟机上的管理实体,它活跃在管理资源和管理者之间,用来直接管理资源,并使这些资源可以被远程的管理程序所控制。
代理层由一个MBean服务器和一系列处理被管理资源的服务所组成。
(3)分布服务层,Sun目前并没有给出这一层的具体规范,给出的只是一个简要描述。
该层规定了实现JMX应用管理平台的接口,定义了能对代理层进行操作的管理接口和组件。
图4JMX体系结构Fig.4JMXArchitecture110115
和其它的资源系统一样,JMX是管理系统和资源之间的一个接口,它定义了管理系统和资源之间交互的标准。
javax.management.MBeanServer实现了Agent的功能,以标准的方式给出了管理系统访问JMX框架的接口。
而javax.management.MBeans实现了SubAgent的功能,以标准的方式给出了JMX框架访问资源的接口。
而从类库的层次上看,JMX包括了核心类库java.lang.management和javax.management包。
java.lang.management包提供了基本的VM监控功能,而javax.management包则向用户提供了扩展功能。
2.2JMX监控Hadoop节点信息120125130
2.2.1原理Hadoop启动的NameNode、SecondaryNameNode、DataNode、JobTracker、TaskTracker守护进程后,会注册相应的Metrics到本地的MBeanServer上,对外访问其运行指标的接口,例如NamenodeActivity和RpcActivity等等。
配置参数在hadoop-env.sh里,例如jmxremote的port,这里注意port必须要不一样,因为每个配置都是对应的一个java进程而言,每个端口只能绑定一个进程。
因此借助JMX我们可以获取Hadoop运行时各个守护进程的性能指标。
2.2.2JMX监控Hadoop性能指标步骤1)假设hadoop(hadoop-0.20.0)安装目录用$hadoop_home表示。
修改$hadoop_home/conf/hadoop_env.sh配置文件,修改之处如下:
#ExtraJavaruntimeoptions.Emptybydefault.exportHADOOP_OPTS=”-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.access.file=$HADOOP_CONF_DIR/jmxremote.access-Dcom.sun.management.jmxremote.password.file=$HADOOP_CONF_DIR/jmxremote.password”#CommandspecificoptionsappendedtoHADOOP_OPTSwhenspecifiedexportHADOOP_NAMENODE_OPTS=”-Dcom.sun.management.jmxremote$HADOOP_NAMENODE_OPTS-Dcom.sun.management.jmxremote.port=8004″exportHADOOP_SECONDARYNAMENODE_OPTS=”-Dcom.sun.management.jmxremote$HADOOP_SECONDARYNAMENODE_OPTS-Dcom.sun.management.jmxremote.port=8005″exportHADOOP_DATANODE_OPTS=”-Dcom.sun.management.jmxremote$HADOOP_DATANODE_OPTS-Dcom.sun.management.jmxremote.port=8006″exportHADOOP_BALANCER_OPTS=”-Dcom.sun.management.jmxremote$HADOOP_BALANCER_OPTS-Dcom.sun.management.jmxremote.port=8007″exportHADOOP_JOBTRACKER_OPTS=”-Dcom.sun.management.jmxremote$HADOOP_JOBTRACKER_OPTS-Dcom.sun.management.jmxremote.port=8008″exportHADOOP_TASKTRACKER_OPTS=”-Dcom.sun.management.jmxremote.port=8009″说明:
上述配置文件,设置了jmx客户端访问服务端需要进行安全认证,包括启动验证、ssl、用户名跟权限以及密码,使用8004~8009端口依次监测NameNode、SecondNameNode、DataNode、Blancer、JobTracker、TaskTracker。
支持远程访问端口的开放,默认本地,修改好后,按上述配置好之后,Hadoop就开启了其JMX的支持,可以通过JMX协议标准获取监控指标。
配置Hadoopconf/hadoop-metrics.properties135140
#Configurationofthe“dfs”contextforfiledfs.class=org.apache.hadoop.metrics.file.FileContextdfs.period=10#You’llwanttochangethepathdfs.fileName=/tmp/dfsmetrics.log#Configurationofthe“mapred”contextforfilemapred.class=org.apache.hadoop.metrics.file.FileContextmapred.period=10mapred.fileName=/tmp/mrmetrics.log#Configurationofthe“jvm”contextforfilejvm.class=org.apache.hadoop.metrics.file.FileContextjvm.period=10jvm.fileName=/tmp/jvmmetrics.log#Configurationofthe“rpc”contextforfilerpc.class=org.apache.hadoop.metrics.file.FileContextrpc.period=10rpc.fileName=/tmp/rpcmetrics.log最后执行$hadoop_home/bin/stop-all.sh和start-all.sh重启Hadoop即可。
2)JConsole客户端监控方式配置JDK值系统PATH路径下,在windows命令行模式中输入Jconsole-debugip:
800x打开JConsole监控见面图5JConsole控制界面Fig.5JConsoleControlUI3)JMXAPI监控数据获取由于Hadoop支持JMX,因此遵循JMX协议5,提供通用的访问接口,具体代码如下JMXServiceURLjmxServiceURL=newJMXServiceURL(“service:
jmx:
rmi:
///jndi/rmi:
//yourip:
8004/jmxrmi“);JMXConnectorconn=JMXConnectorFactory.connect(jmxServiceURL);MBeanServerConnectionmbs=conn.getMBeanServerConnection();ObjectNamenamenode=newObjectName(“Hadoop:
service=NameNode,name=NameNode“);intsafemodetime=(Integer)mbs.getAttribute(namenode,“SafemodeTime“);doubletransactions_avg_time=(Double)mbs.getAttribute(namenode,“Transactions_avg_time“);ObjectNamenamenodeinfo=newObjectName(“Hadoop:
service=NameNode,name=NameNodeInfo“);longused=(Long)mbs.getAttribute(namenodeinfo,“Used“);145
4)通过Rest的形式获取Json格式的监控数据由于Hadoop中内置了Jetty作为WebServer,当NameNode启动时,会调用HttpServer类,并在此类中启动Jetty,此WebServer中存在一个JMXJsonServlet,可以使用此Servlet以Rest的形式获取Json格式的HadoopNamenode的监控信息,可以通过访问如下URL:
http:
//xx.xx.xx.xx:
50070/jmx?
get=hadoop:
service=NameNode来获取监控指标,获取的部分数据如下所示:
{“beans“:
[{“name“:
“java.lang:
type=Memory“,“modelerType“:
“sun.management.MemoryImpl“,“Verbose“:
false,“HeapMemoryUsage“:
{“committed“:
51134464,“init“:
16777216,“max“:
1013645312,“used“:
32477176},“NonHeapMemoryUsage“:
{“committed“:
38535168,“init“:
35815424,“max“:
123731968,“used“:
26619800},.“name“:
“Hadoop:
service=NameNode,name=FSNamesystemMetrics“,“modelerType“:
“FSNamesystemMetrics“,“tag.context“:
“dfs“,“tag.hostName“:
“server1“,“FilesTotal“:
106,“BlocksTotal“:
301,“CapacityTotalGB“:
133,“CapacityUsedGB“:
67,“CapacityRemainingGB“:
46,“TotalLoad“:
5,“CorruptBlocks“:
0,“ExcessBlocks“:
0,“PendingDeletionBlocks“:
0,“PendingReplicationBlocks“:
0,“UnderReplicatedBlocks“:
0,“ScheduledReplicationBlocks“:
0,“MissingBlocks“:
0,“BlockCapacity“:
41943043Ganglia监控集群系统性能指标150155160165170175180
3.1Ganglia介绍Ganglia监控系统在每台计算机上都运行一个收集和发送度量数据的名为gmond的守护进程。
接收所有度量数据的主机可以显示这些数据并且可以将这些数据的精简表单传递到层次结构中。
正因为有这种层次结构模式,才使得Ganglia可以实现良好的扩展。
gmond带来的系统负载非常少,这使得它成为在集群中各台计算机上运行的一段代码,而不会影响用户性能。
所有这些数据多次收集会影响节点性能。
网络中的“抖动”发生在大量小消息同时出现时,可以通过将节点时钟保持一致,来避免这个问题。
gmetad可以部署在集群内任一台节点或者通过网络连接到集群的独立主机,它通过单播路由的方式与gmond通信,收集区域内节点的状态信息,并以XML数据的形式,保存在数据库中。
由RRDTool工具处理数据,并生成相应的的图形显示,以Web方式直观的提供给客户端。
3.2Ganglia监控集群性能3.2.1Ganglia配置步骤1)Ganglia的服务端安装在namenode上6$sudoapt-getinstallganglia-monitorganglia-webfrontgmetad2)安装rrdtool$sudoapt-getinstallrrdtool修改/etc/ganglia/gmetad.conf配置文件。
在这个配置文件中主要是增加一些datasource,即被监控的机器的列表。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 jmx ganglia hadoop 性能 监控