




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
论文 /uucall8基于 JMX 和 Ganglia 的 Hadoop 性能监控平台孙元成,李文生5(北京邮电大学计算机学院, 智能通信软件与多媒体北京重点实验室,北京 100876) 摘要:Hadoop 作为一个开源分布式系统架构,实现了分布式文件系统 HDFS 和 MapReduce 分 布式计算框架。由于越来越多的网络应用使用 Hadoop 集群进行计算和存储,如何对集群中 的节点进行性能监控保证集群高效正常的运行就显的尤为重要。本文基于 Hadoop 分布式平 台,采用 Hadoop 的 JMX 接口与 Ganglia 工具实现了对 Hadoop 集群进行性能监控。10关键词:分布式;Hadoop;监控;JMX;Ganglia中图分类号:TP315Hadoop Performance Monitoring Platform based on JMXand Ganglia15Sun Yuancheng, Li Wensheng(Beijing Key Laboratory of Intelligent Telecommunications Software and Multimedia Department of Computer,Beijing University of Posts and Telcommunications, Beijing 100876)Abstract: Hadoop,an opensource distributed system architecture implements a distributed file system HDFS and distributed computing framwork MapReduce.Due to a growing number of20Internet companies and cloud computing vendors using Hadoop cluster to compute and storage more and more widely,it becomes particularly inportant to monitor the nodes performance in the cluster in order to keep the cluster running efficiently and normally.In this paper we will use the JMX interface and the Ganglia tool for performance monitoring on a Hadoop cluster.Keywords: Distributed Computation; Hadoop; Monitor; JMX; Ganglia250引言随着计算机技术的高速发展和互联网的快速普及,如今的互联网企业每天都面对上百 GB 或者 TB 级别的数据处理,Hadoop 的 HDFS 分布式存储和 MapReduce 分布式计算框架 提供了高可靠性的分布式存储和高速的海量数据计算,越来越多的公司开始利用 Hadoop 实30现海量数据的信息挖掘、日志分析等,因此如何搭建 Hadoop 集群监控系统保证集群系统的 正常运行就显的尤为重要。设计 Hadoop 集群监控平台要解决的主要问题有如何从 Hadoop 集群中获得 NameNode、 DataNode 的运行指标;从 JobTracker、TaskTracker 中获取 MapReduce 任务的执行状态,包 括:启动时间、运行时间、调度策略、以及任务 Kill 次数等内容;从集群中获取系统运行指35标,如内存使用量、JVM 堆使用量、CPU Idle、网络流量、IO 速度等信息;以及如何将这些 数据以图表等形式展现出来,提供良好的 UI 界面便于维护人员快速发现集群的问题。JMX(Java Management Extensions,即 Java 管理扩展)是一个为应用程序、设备、系 统等植入管理功能的框架。JMX 可以跨越一系列异构操作系统平台、系统体系结构和网络 传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。由于 Hadoop 支持 JMX,按40照 JMX 协议提供了获取 NameNode、DataNode 以及 JobTracker 的运行指标的接口。因此可作者简介:孙元成,(1987-),男,硕士研究生,主要研究方向:云计算在物联网领域的应用。E-mail:通信联系人:李文生,(1966-),女,副教授,部门工会主席、中心党支部书记,主要研究方向:数据库 系统及应用、网络信息处理、多媒体技术。E-mail: - 9 -以使用上述接口获取数据,也可以使用 JMX 扩展 Hadoop 的监控接口,使其具有可扩展和可定制性。Ganglia 是 UC Berkeley 发起的一个开源集群监视项目,设计用于测量数以千计的节点。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.1 HDFS Architecture如图 1 所示,HDFS 采用 master/slave 架构 1。一个 HDFS 集群是由一个 NameNode 和一 定数目的 DataNode 组成。NameNode 是一个中心服务器,负责管理文件系统的名字空间 (namespace)以及客户端对文件的访问。集群中的 DataNode 一般是一个节点一个,负责管理60它所在节点上的存储。HDFS 暴露了文件系统的名字空间,用户能够以文件的形式在上面存 储数据。从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组 DataNode 上。NameNode 执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也 负责确定数据块到具体 DataNode 节点的映射。DataNode 负责处理文件系统客户端的读写请 求。在 NameNode 的统一调度下进行数据块的创建、删除和复制。651.1.2Hadoop MapReduce 执行过程图 2 Hadoop MapReduce 执行过程 2Fig.2 Hadoop MapReduce Execution overview.70如图 2 所示,一个 MapReduce 任务的执行过程分为如下几个阶段 3:1 client 端启动 mapreduce 程序;2 本次运行将生成一个Job,于是JobClient 向 JobTracker 申请一个JobID 以标识这个Job;3 JobClient 将 Job 所需要的资源提交到 HDFS 中一个以 JobID 命名的目录中。这些资源75包括 JAR 包、配置文件、InputSplit 等;4 JobClient 向 JobTracker 提交这个 Job;5 JobTracker 初始化这个 Job;6 JobTracker 从 HDFS 获取这个 Job 的 Split 等信息;7 JobTracker 向 TaskTracker 分配任务;808 TaskTracker 从 HDFS 获取这个 Job 的相关资源;9 TaskTracker 开启一个新的 JVM;10 TaskTracker 用新的 JVM 来执行 Map 或 Reduce;1.2Hadoop 平台搭建1.2.1实验平台85硬件环境:Dell R410 刀片服务器 内存 12G 磁盘 6T软件环境:采用 ESX 虚拟化,生成 6 台虚拟机,每台内存 3G,硬盘 30Gserver1server6 ,其中 server1 作为 NameNode 节点,server2server6 作为 DataNode.图 3 实验集群运行环境90Fig.3 Experiment Environment of Cluster2JMX 监控 Hadoop 节点信息951001052.1JMX 介绍JMX 是由 Sun 公司及其合作伙伴共同制定的管理规范,是标准 Java 技术的扩展,它 定义了三层的体系结构 4:(1) 设备层定义了如何实现 JMX 管理资源的规范。一个 JMX 管理资源可以是一个 Java 应用、一个服务或一个设备,它们可以用 Java 开发,或者至少能用 Java 进行包装,并且能 被置入 JMX 框架中,从而成为 JMX 的一个管理构件(Managed Bean, Mbean) 。(2) 代理层是一个运行在 Java 虚拟机上的管理实体,它活跃在管理资源和管理者之间, 用来直接管理资源,并使这些资源可以被远程的管理程序所控制。代理层由一个 MBean 服 务器和一系列处理被管理资源的服务所组成。(3) 分布服务层, Sun 目前并没有给出这一层的具体规范,给出的只是一个简要描述。 该层规定了实现 JMX 应用管理平台的接口,定义了能对代理层进行操作的管理接口和组 件。图 4 JMX 体系结构Fig.4 JMX Architecture110115和其它的资源系统一样,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 节点信息1201251302.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 配置文件,修改之处如下:# Extra Java runtime options. Empty by default.export HADOOP_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”# Command specific options appended to HADOOP_OPTS when specified export HADOOP_NAMENODE_OPTS=”-Dcom.sun.management.jmxremote$HADOOP_NAMENODE_OPTS -Dcom.sun.management.jmxremote.port=8004export HADOOP_SECONDARYNAMENODE_OPTS=”-Dcom.sun.management.jmxremote$HADOOP_SECONDARYNAMENODE_OPTS -Dcom.sun.management.jmxremote.port=8005export HADOOP_DATANODE_OPTS=”-Dcom.sun.management.jmxremote$HADOOP_DATANODE_OPTS -Dcom.sun.management.jmxremote.port=8006export HADOOP_BALANCER_OPTS=”-Dcom.sun.management.jmxremote$HADOOP_BALANCER_OPTS -Dcom.sun.management.jmxremote.port=8007export HADOOP_JOBTRACKER_OPTS=”-Dcom.sun.management.jmxremote$HADOOP_JOBTRACKER_OPTS -Dcom.sun.management.jmxremote.port=8008export HADOOP_TASKTRACKER_OPTS=”-Dcom.sun.management.jmxremote.port=8009说明:上述配置文件,设置了 jmx 客户端访问服务端需要进行安全认证,包括启动验证、 ssl、用户名跟权限以及密码,使用 80048009 端口依次监测 NameNode、SecondNameNode、 DataNode、Blancer、JobTracker、TaskTracker。支持远程访问端口的开放,默认本地,修改 好后,按上述配置好之后,Hadoop 就开启了其 JMX 的支持,可以通过 JMX 协议标准获取 监控指标。配置 Hadoopconf/perties135140# Configuration of the “dfs” context for file dfs.class=org.apache.hadoop.metrics.file.FileContext dfs.period=10# Youll want to change the path dfs.fileName=/tmp/dfsmetrics.log# Configuration of the “mapred” context for file mapred.class=org.apache.hadoop.metrics.file.FileContext mapred.period=10mapred.fileName=/tmp/mrmetrics.log# Configuration of the “jvm” context for file jvm.class=org.apache.hadoop.metrics.file.FileContext jvm.period=10jvm.fileName=/tmp/jvmmetrics.log# Configuration of the “rpc” context for file rpc.class=org.apache.hadoop.metrics.file.FileContext rpc.period=10rpc.fileName=/tmp/rpcmetrics.log最后执行$hadoop_home/bin/stop-all.sh 和 start-all.sh 重启 Hadoop 即可。2) JConsole 客户端监控方式配置 JDK 值系统 PATH 路径下,在 windows 命令行模式中输入 Jconsole -debug ip:800x打开 JConsole 监控见面图 5 JConsole 控制界面Fig.5 JConsole Control UI3)JMX API 监控数据获取由于 Hadoop 支持 JMX,因此遵循 JMX 协议 5,提供通用的访问接口,具体代码如下JMXServiceURL jmxServiceURL=newJMXServiceURL(service:jmx:rmi:/jndi/rmi:/yourip:8004/jmxrmi);JMXConnector conn=JMXConnectorFactory.connect(jmxServiceURL); MBeanServerConnection mbs=conn.getMBeanServerConnection();ObjectName namenode=new ObjectName(Hadoop:service=NameNode,name=NameNode);int safemodetime=(Integer)mbs.getAttribute(namenode, SafemodeTime);double transactions_avg_time=(Double)mbs.getAttribute(namenode, Transactions_avg_time);ObjectName namenodeinfo=newObjectName(Hadoop:service=NameNode,name=NameNodeInfo);long used=(Long)mbs.getAttribute(namenodeinfo, Used);1454) 通过 Rest 的形式获取 Json 格式的监控数据由于 Hadoop 中内置了 Jetty 作为 Web Server,当 NameNode 启动时,会调用 HttpServer 类,并在此类中启动 Jetty,此 Web Server 中存在一个 JMXJsonServlet,可以使用此 Servlet 以 Rest 的形式获取 Json 格式的 Hadoop Namenode 的监控信息,可以通过访问如下 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 监控集群系统性能指标1501551601651701751803.1Ganglia 介绍Ganglia 监控系统在每台计算机上都运行一个收集和发送度量数据的名为 gmond 的守 护进程。接收所有度量数据的主机可以显示这些数据并且可以将这些数据的精简表单传递到 层次结构中。正因为有这种层次结构模式,才使得 Ganglia 可以实现良好的扩展。gmond 带 来的系统负载非常少,这使得它成为在集群中各台计算机上运行的一段代码,而不会影响用 户性能。所有这些数据多次收集会影响节点性能。网络中的 “抖动”发生在大量小消息同时 出现时,可以通过将节点时钟保持一致,来避免这个问题。gmetad 可以部署在集群内任一台节点或者通过网络连接到集群的独立主机,它通过单 播路由的方式与 gmond 通信,收集区域内节点的状态信息,并以 XML 数据的形式,保存在 数据库中。由 RRDTool 工具处理数据,并生成相应的的图形显示,以 Web 方式直观的提供给客户 端。3.2Ganglia 监控集群性能3.2.1Ganglia 配置步骤1)Ganglia 的服务端安装在 namenode 上 6$ sudo apt-get install ganglia-monitor ganglia-webfront gmetad2)安装 rrdtool$ sudo apt-get install rrdtool修改/etc/ganglia/gmetad.conf 配置文件。在这个配置文件中主要是增加一些 datasource,即被监控的机器的列表。在文件末行加 入 data_source “hadoop-test” namenode:8649 datanode1:8649 datanode2:86493)重启 gmetad 来应用配置$ sudo /etc/init.d/gmetad restart$ sudo /etc/init.d/ganglia-monitor restart4)配置 Web UI将 ganglia 的文件链接到 apache 的默认目录下$ sudo ln -s /usr/share/ganglia-webfront /var/www/ganglia重启动 apache$ sudo /etc/init.d/apache2 restart注:需要在/etc/apache2/apache2.conf 中最后面添加 ServerName YourHostName5)配置 hadoop 的 perties 文件# Configuration of the “dfs” context for ganglia dfs.class=org.apache.hadoop.metrics.ganglia.GangliaContext dfs.period=10dfs.servers=1:8649# Configuration of the “mapred” context for ganglia mapred.class=org.apache.hadoop.metrics.ganglia.GangliaContext mapred.period=10mapred.servers=1:8649# Configuration of the “jvm” context for ganglia jvm.class=org.apache.hadoop.metrics.ganglia.GangliaContext jvm.period=10jvm.servers=1:8649注:1 这个是 ganglia 用的多播的地址,不需要改成 gmetad 的服务器地址6)重启 Hadoop 集群,访问 http:/namenode/ganglia,Ganglia
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 黄色卡通我们的身体儿童故事绘本绘本故事
- 设备合同范本
- 设备采购投标书
- 2025杨村一中第一次热身练思想政治学科
- 建筑施工特种作业-建筑起重机械司机(施工升降机)真题库-4
- 建筑施工特种作业-建筑电工真题库-3
- 森林保测评题目及答案
- 若木诗词题目及答案
- 融合教育题目大全及答案
- 日语时间翻译题目及答案
- 浙江省金华市卓越联盟2024-2025学年高一下学期5月月考政治试题(含解析)
- 拱墅区长庆街道招聘工作人员笔试真题2024
- 无人机导航与定位试题及答案
- 《颈部肌肉与背部肌肉》课件
- 《继电器原理及其应用》课件
- 2025年浙江中考语文二轮复习热点题型专练:对联(原卷版)
- 中医药师承考试卷及答案
- 2025年上海奉贤区初三二模中考数学试卷试题(含答案详解)
- 汽车维修工(汽车车身涂装修复工)理论知识考核要素细目表
- 2025年企业安全生产知识竞赛全套复习题库及答案(完整版)
- 新大学语文试题及答案
评论
0/150
提交评论