CN103533058B - 面向HDFS/Hadoop存储集群的资源监控系统及方法 - Google Patents

面向HDFS/Hadoop存储集群的资源监控系统及方法 Download PDF

Info

Publication number
CN103533058B
CN103533058B CN201310486601.3A CN201310486601A CN103533058B CN 103533058 B CN103533058 B CN 103533058B CN 201310486601 A CN201310486601 A CN 201310486601A CN 103533058 B CN103533058 B CN 103533058B
Authority
CN
China
Prior art keywords
information
back end
node
data
name node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310486601.3A
Other languages
English (en)
Other versions
CN103533058A (zh
Inventor
卢义婉
叶保留
陆桑璐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZHENJIANG Institute OF HIGH-NEW TECHNOLOGY NANJING UNIVERSITY
Original Assignee
ZHENJIANG Institute OF HIGH-NEW TECHNOLOGY NANJING UNIVERSITY
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZHENJIANG Institute OF HIGH-NEW TECHNOLOGY NANJING UNIVERSITY filed Critical ZHENJIANG Institute OF HIGH-NEW TECHNOLOGY NANJING UNIVERSITY
Priority to CN201310486601.3A priority Critical patent/CN103533058B/zh
Publication of CN103533058A publication Critical patent/CN103533058A/zh
Application granted granted Critical
Publication of CN103533058B publication Critical patent/CN103533058B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种面向HDFS/Hadoop存储集群的资源监控系统及方法,该系统在存储集群中增加了状态参考信息收集模块、心跳协议优化模块、参考信息处理模块。状态信息收集模块部署在HDFS存储的数据节点上,支持对多维资源信息的实时收集与管理。心跳协议优化模块负责将节点参考信息传送到名称节点,通过优化心跳传输协议,支持多维信息的推送。参考信息处理模块在名称节点端实现,通过优化相关数据结构,处理数据节点传送过来的状态信息,名称节点端实时了解数据节点提供存储访问服务的性能状况。本发明弥补了HDFS不能对影响数据读写性能的状态信息监控的缺陷,动态收集数据节点实时信息,并将信息数据传输到名称节点。

Description

面向HDFS/Hadoop存储集群的资源监控系统及方法
技术领域
本发明涉及HDFS后台云存储的存储管理服务器名称节点、存储集群中的若干数据节点,具体是通过状态参考信息收集模块管理、心跳协议优化模块管理、参考信息处理模块管理,针对HDFS仅能对磁盘相关性能参数进行监控这一缺陷,设计并实现了资源监控模块,支持对多维资源信息的实时收集与管理,优化HDFS的心跳协议及相关数据结构,在支持多维信息更新的同时,增强了对节点动态加入的动态集成能力,为动态负载均衡优化设计提供了决策依据。
背景技术
近年来,随着网络及计算能力的不断提高,面向新型分布式环境的数据存储技术受到业界广泛关注,云存储更因资源聚集复用能力及扩展性强、易于部署而成为支持“大数据处理”的热点支撑技术而备受青睐。在面向海量数据存储的云存储应用领域,HDFS由于其良好特性和开源实现,渐渐成为云存储基本支撑平台的主流应用文件系统,无论在学术界还是工业界都有各种基于HDFS的研究和应用。
分布式云存储系统HDFS系统的应用场景是面对大规模用户的文件访问请求,工作负载主要来自于文件存储要求和访问请求,处理多集中于读和写为基础,但HDFS仅能对磁盘容量相关性能参数进行监控,没有针对读写性能优化提供支持的资源监控。针对此问题,本发明设计并实现了一种面向HDFS/Hadoop存储集群的资源实时监控方法,弥补了HDFS不能对影响数据读写性能的状态信息监控的缺陷,动态收集数据节点实时信息,并将信息数据传输到名称节点。
发明内容
本发明所要解决的技术问题是针对HDFS仅能对磁盘容量相关性能参数进行监控,没有针对读写性能优化提供支持的资源监控的局限性,提出了一种面向HDFS/Hadoop存储集群的资源实时监控系统及其监控方法,该系统收集数据读写性能相关的关键状态信息磁盘I/O使用率、CPU使用率和内存使用率,支持数据节点端多维资源信息的实时收集,名称节点端并以一定频率实时更新与管理,实现名称节点对于数据节点状态性能信息的实时监控和集中式管理。
本发明所述的一种面向HDFS/Hadoop存储集群的资源监控系统,包括HDFS存储管理服务器名称节点、HDFS存储集群中的若干数据节点,此外其还设有:
1)状态参考信息收集模块:部署在HDFS存储集群的数据节点上,收集数据读写性能相关的关键状态信息,支持数据节点端多维资源信息的实时收集与保存,并以一定频率实时更新与管理;
2)心跳协议优化模块:部署在HDFS存储集群的数据节点上,负责将节点参考信息传送到名称节点,以一定的频率实时获取数据节点的实时状态信息,通过优化心跳传输协议,以一定的频率RPC调用名称节点的传输方法,传送当前节点的实时状态信息,保证传送过去的数据最新,支持多维信息的推送;
3)参考信息处理模块:部署在HDFS存储管理服务器名称节点,名称节点得到实时状态数据后,通过优化相关数据结构和方法,处理数据节点传送过来的状态信息,更新和保存数据节点的最新性能状态参考信息,使名称节点端实时了解数据节点提供数据存储和访问的性能状态。
本发明还提供了一种面向HDFS/Hadoop存储集群的资源监控方法,其包括以下步骤:
1)从系统需要的角度,确定数据节点端收集的状态参考信息,将影响读和写性能的关键影响因素磁盘I/O使用率、CPU使用率和内存使用率这三者共同纳入资源监控的状态信息,加入类DatanodeStat用于存储上述三个新增入的状态信息;
2)数据节点启动后,后台收集状态信息的线程collectDatanodeStat在数据节点端实时获取集群中存储节点的实时状态信息,更新到DatanodeStat类实例中,保证它所记录的参考数据信息能反映当前节点的状态;
3)数据节点实时从DatanodeStat对象中获取数据节点的实时状态信息磁盘I/O使用率、CPU使用率和内存使用率,线程collectDatanodeStat在数据节点端实时获取集群中存储节点的实时状态信息;新加入的状态信息从源监控模块里得到,收集性能参考信息的线程不断的获取节点状态信息,并将数据保存到全局DatanodeStat类实例里,每收集一次信息就对其更新一次,保证数据最新;
4)心跳协议sendHeartbeat负责将数据节点的状态信息发送给名称节点,之后名称节点把心跳协议的工作移交给FSNamesystem的handleHeartbeat,更新名称节点中对这个数据节点的状态信息;
5)名称节点得到实时状态数据后,通过优化相关数据结构和方法,处理数据节点传送过来的状态信息,更新和保存数据节点的最新性能状态参考信息,名称节点端实时了解数据节点提供存储访问服务的性能状况。
步骤2)具体流程是:
21)数据节点启动后台收集状态信息的线程collectDatanodeStat,在数据节点端实时获取集群中存储节点的实时状态信息;
22)数据节点从系统文件/proc/stat中获取内核活动信息,从不同的时间点对数据采样,计算出CPU利用率;
23)数据节点从系统文件/proc/meminfo文件中获取信息描述系统内存使用状况,从不同的时间点对数据采样,计算出内存利用率;
24)数据节点从iostat中可以得到磁盘读和写次数、合并读和合并写次数等,磁盘I/O利用率则可以用单位时间读写扇区次数rsec/s、 wsec/s和设备I/O操作的平均服务时间svctm,得到单位时间内I/O操作所占的百分比,util百分比=(rsec/s+ wsec/s)*(svctm/1000);
25)从数据节点的Linux系统中获取到磁盘I/O使用率、CPU使用率和内存使用率获这些状态信息后,通过取后set方法更新DatanodeStat中的各成员,保证它所记录的参考数据信息能反映当前节点的状态;
26)线程collectDatanodeStat不断的重复上面132)~135)的工作,保证DatanodeStat类对象中保存的是当前数据节点最新状态信息。
步骤3)具体流程是:
31)数据节点在offerservice里取得名称节点代理proxy;
32)数据节点利用这个名称节点的proxy,调用心跳协议sendHeartbeat将磁盘、线程信息、CPU、内存和磁盘I/O信息一起发送出去;
33)心跳协议sendHeartbeat将数据推送到名称节点端后,名称节点把心跳协议的工作移交给FSNamesystem的handleHeartbeat;
34)名称节点通过心跳协议中的DatanodeRegistration识别出对应的数据节点,更新名称节点中对应数据节点的状态信息;
35)心跳协议将新数据节点推送过来的磁盘I/O使用率、CPU使用率和内存使用率,写入名称节点端相关数据结构, handleHeartbeat除了更新磁盘容量信息以外,还要更新以上三个状态信息,保存最新的状态数据。
步骤4)具体流程是:
41)名称节点端处理心跳协议handleHeartbeat收到磁盘I/O使用率、CPU使用率和内存使用率这些数据节电状态信息后,处理过程交由名称节点端描述数据节点性能状态信息的类DatanodeDescriptor;
42)DatanodeDescriptor是名称节点内用于描述数据节点的内部类,它扩展自DatanodeInfo, DatanodeInfo里有一些反应节点性能的参数信息,CPU、内存和磁盘IO性能这类状态信息与DatanodeInfo的状态信息属性相似,把这些状态信息作为DatanodeInfo的属性加入进去,并作一系列的改变;
DatanodeInfo中加入针对这三个状态信息的set方法,节点排序线程和节点分配策略要用到这些状态参数,需要获取这些数据的途径,DatanodeInfo加入三个成员的get方法;
存储文件信息的fsimage映射文件,在数据节点信息改变的情况下,需将数据节点这些更新了的信息按顺序写进文件里,更新元文件信息,以及按顺序读出文件中状态信息,即DatanodeInfo的write和readField方法。write方法主要负责把状态信息序列化存储起来,readFields读取序列化的信息以及write和readField方法。write方法主要负责把状态信息序列化存储起来,readFields读取序列化的信息;
43)名称节点在handleHeartbeat更新数据节点状态时用到了DatanodeInfo的updateHeartbeat来更新信息,更新和保存数据节点的最新性能状态参考信息,名称节点端实时了解数据节点提供存储访问服务的性能状况。
本发明针对HDFS仅能对磁盘容量相关性能参数进行监控,没有针对读写性能优化提供支持的问题,设计并实现了一种面向HDFS/Hadoop存储集群的资源实时监控方法,弥补了HDFS不能对影响数据读写性能的状态信息监控的缺陷,动态收集数据节点实时信息,并将信息数据传输到名称节点。
附图说明
图1 系统架构图;
图2 系统模块交互图;
图3 状态信息收集图;
图4心跳协议优化图;
图5 参考信息处理图;
图6 DatanodeDescriptor层次结构图。
具体实施方式
本发明提供了一种面向HDFS/Hadoop存储集群的资源实时监控方法,为了更好的说明其设计和实现方法,下面结合附图进行详细说明。
如图1是基于HDFS后台云存储集群中的系统架构图,本发明涉及到的系统架构中的两个部分:
1)HDFS存储管理服务器名称节点。名称节点是整个系统中起控制作用的总调度师。系统启动时,名称节点读取相应配置文件中,得到默认副本数,最大连接数,最大堆空间,最大带宽限制等这些集群部署信息和数据控制信息。名称节点保存数据节点和文件的元数据信息,如数据节点的状态信息DatanodeDescriptor,文件块block,相应编码矩阵信息InodeFile,每个文件块和存储它的数据节点映射信息blockmap等,这些数据在读写过程中被更新或访问,系统运行中起枢纽作用。
2)HDFS存储集群中的若干数据节点。HDFS集群由大量廉价、异构的机器组成,面向大文件存储,提供的多副本容错和实用性适合于拷贝操作。数据节点是文件存储过程的具体实施者,客户端从名称节点处得到数据节点列表后,直接与数据节点通信,将数据块直接写入对应的数据节点中,或读出相应的数据块信息,处理完后ACK给名称节点确认任务完成。此外,数据节点是资源监控的数据收集者和信息传输者。数据节点定期更新其本身状态信息,并将这些负载信息实时的发送给名称节点作为分配节点基础参考信息。
集群系统启动时,数据节点和名称节点均要初始化,执行一系列启动性工作,为接下来提供系统服务做准备。
数据节点的初始化工作除完成自身文件系统信息初始化,校验初始文件系统信息正确性外,还要向名称节点注册注,向名称节点登记节点自身的标识信息,汇报数据块信息。名称节点检查这些信息,并在全局数据结构中维护数据节点的标识信息,状态信息和数据块信息,进行自身的一些更新工作。
名称节点启动时,系统读取日志文件edits与映像文件fsimage,将这两者的内容合并得到最新的系统目录树,保证当前的系统状态最新,然后将最新的状态更新到映像文件fsimage中。平时的运行过程中,为保证效率,名称节点只从当前映像文件中fsimage读取信息,合并工作由第二名称节点完成。
启动工作完成后数据节点和名称节点相互配合完成资源监控,图2展示的数据节点和名称节点中三大模块交互图。
状态参考信息收集模块部署在HDFS存储集群的数据节点上,数据节点启动后台收集状态信息的线程collectDatanodeStat,在数据节点端以一定的频率实时获取集群中存储节点的实时状态信息,更新到DatanodeStat类实例中,保证它所记录的参考数据信息能反映当前节点的状态性能。
状态参考信息收集的具体步骤是:
11)HDFS存储处理多集中于读和写,从系统需要的角度,确定数据节点端收集的状态参考信息,将影响读和写性能的关键影响因素磁盘I/O使用率、CPU使用率和内存使用率这三者共同纳入资源监控的状态信息,加入的一个类DatanodeStat用于存储新增入的状态信息;
性能参考指标种类的选取,根据具体系统和应用需求而定,不同的使用场景下,影响服务效率的主要影响因素不一样,HDFS集群主要是提供数据存储和访问服务,因此选取对数据读写性能影响比较大的下列属性的组合:内存利用率,CPU利用率,磁盘I/O利用率,也就是说在指标评价体系中引入磁盘I/O、CPU和内存这三者作为负载的多评价指标,数据节点端的类DatanodeStat就用来保存这些属性信息。
12)加入的一个类DatanodeStat用于存储新增入的状态信息磁盘I/O使用率、CPU使用率和内存使用率,对于每个数据节点来说只有一个DatanodeStat对象。反应状态信息的DatanodeStat类实例起桥梁作用,用于数据节点收集到的状态信息的存储和名称节点实时参考信息的获取。
13)数据节点启动后台收集状态信息的线程collectDatanodeStat,在数据节点端以一定的频率实时获取集群中存储节点的实时状态信息,更新到DatanodeStat类实例中,保证它所记录的参考数据信息能反映当前节点的状态。
上述步骤13)流程是:
131)数据节点启动后台收集状态信息的线程collectDatanodeStat,在数据节点端以一定的频率实时获取集群中存储节点的实时状态信息;
132)数据节点从系统文件/proc/stat中获取内核活动信息,从不同的时间点对数据采样,计算出CPU利用率;
133)数据节点从系统文件/proc/meminfo文件中获取信息描述系统内存使用状况,从不同的时间点对数据采样,计算出内存利用率;
134)数据节点从iostat中可以得到磁盘读和写次数、合并读和合并写次数等,磁盘I/O利用率则可以用单位时间读写扇区次数rsec/s、 wsec/s和设备I/O操作的平均服务时间svctm (毫秒),得到单位时间内I/O操作所占的百分比。util百分比=(rsec/s+ wsec/s)*( svctm/1000)。与上面相同,多次取数据流中的值来计算利用率;
135)从数据节点的Linux系统中获取到磁盘I/O使用率、CPU使用率和内存使用率获等这些状态信息后,通过取后set方法更新DatanodeStat中的各成员,保证它所记录的参考数据信息能反映当前节点的状态。
心跳协议优化模块将节点参考信息传送到名称节点,以一定的频率实时从DatanodeStat对象中获取数据节点的实时状态信息磁盘I/O使用率、CPU使用率和内存使用率,通过优化心跳传输协议,以一定的频率RPC调用心跳协议sendHeartbeat将数据推送到名称节点端后,名称节点把心跳协议的工作移交给FSNamesystem的handleHeartbeat,更新名称节点中对这个数据节点的状态信息。
心跳协议优化的具体步骤是:
21)数据节点以一定的频率实时从DatanodeStat对象中获取数据节点的实时状态信息磁盘I/O使用率、CPU使用率和内存使用率,线程collectDatanodeStat在数据节点端以一定的频率实时获取集群中存储节点的实时状态信息;
新加入的状态信息从源监控模块里得到,收集性能参考信息的线程不断的获取节点状态信息,并将数据保存到全局DatanodeStat类实例里,每收集一次信息就对其更新一次,保证数据最新
22)优化后的心跳协议sendHeartbeat跟以前相比,传递的参数多了反应数据节点实时状态的磁盘I/O使用率、CPU使用率和内存使用率;
由于HDFS中名称节点一般不主动与数据节点通信,数据节点的状态信息需由数据节点主动发起连接,这些新加入的状态信息磁盘I/O使用率、CPU使用率和内存使用率需要通过优化心跳协议RPC调用传过去;
数据节点启动对心跳协议的RPC调用,心跳是针对名称节点的方法,具体实现在名称节点端,心跳协议对于名称节点端而言,是在启动时就开启监听的行为。
23)优化后的心跳协议sendHeartbeat将数据推送到名称节点端后,名称节点把心跳协议的工作移交给FSNamesystem的handleHeartbeat,更新名称节点中对这个数据节点的状态信息。以往的更新只是有关磁盘容量的信息,心跳协议优化后系统也优化了名称节点端相关数据结构,加入了多的三个状态信息,handleHeartbeat除了更新磁盘容量信息以外,还要更新新加入的状态信息,保存最新的状态数据。
上述步骤23)流程是:
231)数据节点在offerservice里取得名称节点代理proxy;
232)数据节点利用这个名称节点的proxy,调用心跳协议sendHeartbeat将磁盘、线程信息、CPU、内存和磁盘I/O信息一起发送出去;
233)优化后的心跳协议sendHeartbeat将数据推送到名称节点端后,名称节点把心跳协议的工作移交给FSNamesystem的handleHeartbeat;
234)名称节点通过心跳协议中的DatanodeRegistration识别出对应的数据节点,更新名称节点中对应数据节点的状态信息。
235)以往的更新只是有关磁盘容量的信息,心跳协议优化后系统也优化了名称节点端相关数据结构,加入了多的三个状态信息,handleHeartbeat除了更新磁盘容量信息以外,还要更新新加入的状态信息,保存最新的状态数据。
参考信息处理模块在名称节点端实现,得到实时状态数据后,通过优化相关数据结构DatanodeDescriptor,处理数据节点传送过来的状态信息,更新和保存数据节点的最新性能状态参考信息,名称节点端实时了解数据节点提供存储访问服务的性能状况。
参考信息处理的流程是:
31)名称节点端处理心跳协议handleHeartbeat收到磁盘I/O使用率、CPU使用率和内存使用率这些数据节电状态信息后,处理过程交由名称节点端描述数据节点性能状态信息的类DatanodeDescriptor。
32)DatanodeDescriptor是名称节点内用于描述数据节点的内部类,它扩展自DatanodeInfo, DatanodeInfo里有一些反应节点性能的参数信息,CPU、内存和磁盘IO性能这类状态信息与DatanodeInfo的状态信息属性相似,把这些状态信息作为DatanodeInfo的属性加入进去,并作一系列的改变;
DatanodeInfo中加入针对这三个状态信息的set方法,节点排序线程和节点分配策略要用到这些状态参数,需要获取这些数据的途径,DatanodeInfo加入三个成员的get方法;
存储文件信息的fsimage映射文件,在数据节点信息改变的情况下,需将数据节点这些更新了的信息按顺序写进文件里,更新元文件信息,以及按顺序读出文件中状态信息,即DatanodeInfo的write和readField方法。write方法主要负责把状态信息序列化存储起来,readFields读取序列化的信息以及write和readField方法。write方法主要负责把状态信息序列化存储起来,readFields读取序列化的信息;
33)名称节点在handleHeartbeat更新数据节点状态时用到了DatanodeInfo的updateHeartbeat来更新信息,更新和保存数据节点的最新性能状态参考信息,名称节点端实时了解数据节点提供存储访问服务的性能状况。
状态参考信息收集模块的重点在于指标的选取与获取。参考指标种类的选取,根据具体系统和应用需求而定,HDFS集群主要是提供数据存储和访问服务,因此选取对数据读写性能影响比较大的下列属性的组合:内存利用率,CPU利用率,磁盘I/O利用率,也就是说在指标评价体系中引入磁盘I/O、CPU和内存这三者作为负载的多评价指标。三个状态参数获取并存储的方法分别如下:
1)数据节点从系统文件/proc/stat中获取内核活动信息,从不同的时间点对数据采样,计算出CPU利用率;
2)数据节点从系统文件/proc/meminfo文件中获取信息描述系统内存使用状况,从不同的时间点对数据采样,计算出内存利用率;
3)数据节点从iostat中可以得到磁盘读和写次数、合并读和合并写次数等,磁盘I/O利用率则可以用单位时间读写扇区次数rsec/s、 wsec/s和设备I/O操作的平均服务时间svctm (毫秒),得到单位时间内I/O操作所占的百分比。util百分比=(rsec/s+ wsec/s)*( svctm/1000)。与上面相同,多次取数据流中的值来计算利用率;
4)从数据节点的Linux系统中获取到磁盘I/O使用率、CPU使用率和内存使用率获等这些状态信息后,通过取后set方法更新DatanodeStat中的各成员,保证它所记录的参考数据信息能反映当前节点的最新状态。
数据节点收集到节点最新状态信息并保存至DatanodeStat类对象中后,心跳协议优化模块负责将这些多维信息推送到名称节点端,如图4所示。其处理步骤如下:
1、数据节点启动后,线程调用offerservice模块,offerservice分别以一定的频率调用数据块汇报模块blockReport和心跳协议sendHeartbeat。优化后的心跳协议发送的数据包括从全局DatanodeStat类实例中获取的系统CPU、memory和磁盘I/O信息。
2、心跳协议是数据节点对名称节点的RPC调用,处理由名称节点负责,而Namenode则把处理过程移交给FSNamesystem的handleHeartbeat,
3、优化后的handleHeartbeat跟以前相比,参数多了新加入的状态信息,handleHeartbeat将数据处理交由DatanodeDescriptor,updateHeartbeat更新名称节点中对这个数据节点的状态信息。
4以往的更新只是有关磁盘容量的信息,优化后的系统也优化了DatanodeDescriptor的数据结构,加入了多的三个状态信息,因此updateHeartbeat此时除了更新磁盘容量信息以外,还要更新新加入的状态信息,保存最新的状态数据。
名称节点在收到数据节点的心跳后参考信息处理模块的处理流程做如图5所示:
1 数据节点初始化时先获得名称节点的一个代理。
2数据节点启动对心跳协议的RPC调用,心跳是针对名称节点的方法,具体实现在namenode端,心跳协议对于namenode端而言,是在启动时就开启监听的行为,其具体实现在server的namenode包下namenode这个描述名称节点启动行为的类里。
考信息处理模块的处理关键在于状态信息保存类DatanodeDescriptor的优化上上,其结构层次如图6所示。
DatanodeDescriptor是名称节点内用于描述数据节点的内部类,它扩展自DatanodeInfo, DatanodeInfo里有一些反应节点性能的参数信息,CPU、内存和磁盘IO性能这类状态信息与DatanodeInfo的状态信息属性相似,把这些状态信息作为DatanodeInfo的属性加入进去,并作一系列的改变;
DatanodeInfo中加入针对这三个状态信息的set方法,节点排序线程和节点分配策略要用到这些状态参数,需要获取这些数据的途径,DatanodeInfo加入三个成员的get方法;
存储文件信息的fsimage映射文件,在数据节点信息改变的情况下,需将数据节点这些更新了的信息按顺序写进文件里,更新元文件信息,以及按顺序读出文件中状态信息,即DatanodeInfo的write和readField方法。write方法主要负责把状态信息序列化存储起来,readFields读取序列化的信息以及write和readField方法。write方法主要负责把状态信息序列化存储起来,readFields读取序列化的信息;
名称节点在handleHeartbeat更新数据节点状态时用到了DatanodeInfo的updateHeartbeat来更新信息,更新和保存数据节点的最新性能状态参考信息,名称节点端实时了解数据节点提供存储访问服务的性能状况。

Claims (3)

1.一种面向HDFS/Hadoop存储集群的资源监控方法,其特征在于包括以下步骤:
1)从系统需要的角度,确定数据节点端收集的状态参考信息,将影响读和写性能的关键影响因素磁盘I/O使用率、CPU使用率和内存使用率这三者共同纳入资源监控的状态信息,加入类DatanodeStat用于存储上述三个新增入的状态信息;
2)数据节点启动后,后台收集状态信息的线程collectDatanodeStat在数据节点端实时获取集群中存储节点的实时状态信息,更新到DatanodeStat类实例中,保证它所记录的参考数据信息能反映当前节点的状态;具体流程是:
21)数据节点启动后台收集状态信息的线程collectDatanodeStat,在数据节点端实时获取集群中存储节点的实时状态信息;
22)数据节点从系统文件/proc/stat中获取内核活动信息,从不同的时间点对数据采样,计算出CPU利用率;
23)数据节点从系统文件/proc/meminfo文件中获取信息描述系统内存使用状况,从不同的时间点对数据采样,计算出内存利用率;
24)数据节点从iostat中得到磁盘读和写次数、合并读和合并写次数,磁盘I/O利用率则用单位时间读写扇区次数rsec/s、 wsec/s和设备I/O操作的平均服务时间svctm,得到单位时间内I/O操作所占的百分比,util百分比=(rsec/s+ wsec/s)*( svctm/1000);
25)从数据节点的Linux系统中获取到磁盘I/O使用率、CPU使用率和内存使用率获这些状态信息后,通过取后set方法更新DatanodeStat中的各成员,保证它所记录的参考数据信息能反映当前节点的状态;
26)线程collectDatanodeStat不断的重复上面22)~25)的工作,保证DatanodeStat类对象中保存的是当前数据节点最新状态信息;
3)数据节点实时从DatanodeStat对象中获取数据节点的实时状态信息磁盘I/O使用率、CPU使用率和内存使用率,线程collectDatanodeStat在数据节点端实时获取集群中存储节点的实时状态信息;新加入的状态信息从源监控模块里得到,收集性能参考信息的线程不断的获取节点状态信息,并将数据保存到全局DatanodeStat类实例里,每收集一次信息就对其更新一次,保证数据最新;
4)心跳协议sendHeartbeat负责将数据节点的状态信息发送给名称节点,之后名称节点把心跳协议的工作移交给FSNamesystem的handleHeartbeat,更新名称节点中对这个数据节点的状态信息;
5)名称节点得到实时状态数据后,通过优化相关数据结构和方法,处理数据节点传送过来的状态信息,更新和保存数据节点的最新性能状态参考信息,名称节点端实时了解数据节点提供存储访问服务的性能状况。
2.根据权利要求1所述的面向HDFS/Hadoop存储集群的资源监控方法,其特征在于步骤3)具体流程是:
31)数据节点在offerservice里取得名称节点代理proxy;
32)数据节点利用这个名称节点的proxy,调用心跳协议sendHeartbeat将磁盘、线程信息、CPU、内存和磁盘I/O信息一起发送出去;
33)心跳协议sendHeartbeat将数据推送到名称节点端后,名称节点把心跳协议的工作移交给FSNamesystem的handleHeartbeat;
34)名称节点通过心跳协议中的DatanodeRegistration识别出对应的数据节点,更新名称节点中对应数据节点的状态信息;
35)心跳协议将新数据节点推送过来的磁盘I/O使用率、CPU使用率和内存使用率,写入名称节点端相关数据结构, handleHeartbeat除了更新磁盘容量信息以外,还要更新以上三个状态信息,保存最新的状态数据。
3.根据权利要求2所述的面向HDFS/Hadoop存储集群的资源监控方法,其特征在于步骤4)具体流程是:
41)名称节点端处理心跳协议handleHeartbeat收到磁盘I/O使用率、CPU使用率和内存使用率这些数据节电状态信息后,处理过程交由名称节点端描述数据节点性能状态信息的类DatanodeDescriptor;
42)DatanodeDescriptor是名称节点内用于描述数据节点的内部类,它扩展自DatanodeInfo, DatanodeInfo里有一些反应节点性能的参数信息,CPU、内存和磁盘IO性能这类状态信息与DatanodeInfo的状态信息属性相似,把这些状态信息作为DatanodeInfo的属性加入进去,并作一系列的改变;
DatanodeInfo中加入针对这三个状态信息的set方法,节点排序线程和节点分配策略要用到这些状态参数,需要获取这些数据的途径,DatanodeInfo加入三个成员的get方法;
存储文件信息的fsimage映射文件,在数据节点信息改变的情况下,需将数据节点这些更新了的信息按顺序写进文件里,更新元文件信息,以及按顺序读出文件中状态信息,即DatanodeInfo的write和readField方法;write方法主要负责把状态信息序列化存储起来,readFields读取序列化的信息以及write和readField方法;write方法主要负责把状态信息序列化存储起来,readFields读取序列化的信息;
43)名称节点在handleHeartbeat更新数据节点状态时用到了DatanodeInfo的updateHeartbeat来更新信息,更新和保存数据节点的最新性能状态参考信息,名称节点端实时了解数据节点提供存储访问服务的性能状况。
CN201310486601.3A 2013-10-17 2013-10-17 面向HDFS/Hadoop存储集群的资源监控系统及方法 Active CN103533058B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310486601.3A CN103533058B (zh) 2013-10-17 2013-10-17 面向HDFS/Hadoop存储集群的资源监控系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310486601.3A CN103533058B (zh) 2013-10-17 2013-10-17 面向HDFS/Hadoop存储集群的资源监控系统及方法

Publications (2)

Publication Number Publication Date
CN103533058A CN103533058A (zh) 2014-01-22
CN103533058B true CN103533058B (zh) 2017-02-08

Family

ID=49934723

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310486601.3A Active CN103533058B (zh) 2013-10-17 2013-10-17 面向HDFS/Hadoop存储集群的资源监控系统及方法

Country Status (1)

Country Link
CN (1) CN103533058B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104268090B (zh) * 2014-09-15 2018-03-20 浪潮(北京)电子信息产业有限公司 一种控制分布式系统容量的方法和装置
CN104331439B (zh) * 2014-10-24 2017-11-14 北京东方国信科技股份有限公司 基于hdfs的迭代式回溯算法的负载均衡与计算本地化方法
CN105656976B (zh) * 2014-12-01 2019-01-04 腾讯科技(深圳)有限公司 集群系统的信息推送方法及装置
TWI546682B (zh) * 2015-07-06 2016-08-21 群暉科技股份有限公司 藉助於混和管理路徑來管理一儲存系統之方法與裝置
CN106095483A (zh) * 2016-05-31 2016-11-09 乐视控股(北京)有限公司 服务的自动化部署方法及装置
CN108259631B (zh) * 2016-12-29 2021-06-25 腾讯科技(深圳)有限公司 一种基于名称服务的数据处理方法、系统以及相关设备
CN107085539B (zh) * 2017-04-27 2019-12-10 北京邮电大学 一种云数据库系统以及云数据库资源动态调整方法
CN107729514A (zh) * 2017-10-25 2018-02-23 郑州云海信息技术有限公司 一种基于hadoop的副本放置节点确定方法及装置
CN108363610A (zh) * 2018-02-09 2018-08-03 华为技术有限公司 一种虚拟机监控插件的控制方法及设备
CN110187843B (zh) * 2019-06-04 2020-06-26 苏州浪潮智能科技有限公司 一种储存介质名称顺序不变的方法,系统,终端及存储介质
CN110532187B (zh) * 2019-08-30 2022-07-22 苏州浪潮智能科技有限公司 一种hdfs吞吐性能测试方法、系统、终端及存储介质
CN112988500A (zh) * 2019-12-17 2021-06-18 上海商汤智能科技有限公司 文件存储系统的监控方法及设备、系统
CN111953569B (zh) * 2020-08-27 2022-04-29 浪潮电子信息产业股份有限公司 状态信息上报方法、装置、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102130950A (zh) * 2011-03-14 2011-07-20 中国科学技术大学苏州研究院 基于Hadoop集群的分布式监控系统及其监控方法
CN102497292A (zh) * 2011-11-30 2012-06-13 中国科学院微电子研究所 计算机集群监控的方法及系统
CN102868736A (zh) * 2012-08-30 2013-01-09 浪潮(北京)电子信息产业有限公司 一种云计算监控框架设计及实现方法及云计算处理设备
CN102932424A (zh) * 2012-09-29 2013-02-13 浪潮(北京)电子信息产业有限公司 一种分布式并行文件系统缓存数据同步的方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102130950A (zh) * 2011-03-14 2011-07-20 中国科学技术大学苏州研究院 基于Hadoop集群的分布式监控系统及其监控方法
CN102497292A (zh) * 2011-11-30 2012-06-13 中国科学院微电子研究所 计算机集群监控的方法及系统
CN102868736A (zh) * 2012-08-30 2013-01-09 浪潮(北京)电子信息产业有限公司 一种云计算监控框架设计及实现方法及云计算处理设备
CN102932424A (zh) * 2012-09-29 2013-02-13 浪潮(北京)电子信息产业有限公司 一种分布式并行文件系统缓存数据同步的方法及系统

Also Published As

Publication number Publication date
CN103533058A (zh) 2014-01-22

Similar Documents

Publication Publication Date Title
CN103533058B (zh) 面向HDFS/Hadoop存储集群的资源监控系统及方法
US10691716B2 (en) Dynamic partitioning techniques for data streams
CN110191148B (zh) 一种面向边缘计算的统计函数分布式执行方法及系统
US9794135B2 (en) Managed service for acquisition, storage and consumption of large-scale data streams
AU2014346366B2 (en) Partition-based data stream processing framework
TWI336863B (en) Method, apparatus and computer program product for operating a virtual machine within a data processing system
US8924460B2 (en) Method and system of administrating a peer-to-peer file sharing network
CN102523279B (zh) 一种分布式文件系统及其热点文件存取方法
CN104537076B (zh) 一种文件读写方法及装置
CN102855239B (zh) 一种分布式地理文件系统
US20100274765A1 (en) Distributed backup and versioning
CN104391930A (zh) 分布式文件存储装置和方法
CN106095589B (zh) 一种分配分区的方法、装置及系统
CN105893542B (zh) 一种云存储系统中的冷数据文件重分布方法及系统
WO2011108695A1 (ja) 並列データ処理システム、並列データ処理方法及びプログラム
CN103581332B (zh) HDFS架构及HDFS架构中NameNode节点的压力分解方法
US20100023489A1 (en) Method of distributing contents and system
CN104657497A (zh) 一种基于分布式计算的海量用电信息并行计算系统及方法
US11080207B2 (en) Caching framework for big-data engines in the cloud
CN111258978B (zh) 一种数据存储的方法
CN103399894A (zh) 一种基于共享存储池的分布式事务处理方法
CN103078906A (zh) 文件透明迁移方法
CN105493474A (zh) 用于支持用于同步分布式数据网格中的数据的分区级别日志的系统及方法
CN110505495A (zh) 多媒体资源抽帧方法、装置、服务器及存储介质
CN102480489A (zh) 一种用于分布式环境下的日志记录方法和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant