心跳算法

2016-08-31 百科 阅读:

心跳算法(一)
最大心率算法大全

心率的算法

1. 最简单的算法:

最大心率=220 - 年龄

如果女性可以加4

比如30岁男性的最大心率就是190

计算跑步心率时,比如减肥心率假设为70%,就是: 减肥心率 = (220 - 年龄) x 70% = 133【心跳算法】

2. 保留心率算法:

最大心率=220 - 年龄

保留心率 = (最大心率 - 最低心率) 最低心率是早上静止时测量的,比如60 30岁男性的保留心率就是130【心跳算法】

计算跑步心率时,比如减肥心率假设为70%,就是: 减肥心率 = 保留心率 x 70% + 最低心率 = 151

【心跳算法】

3. Sigma PC15心率表说明里的:

最大心率:

男人: 210 - 年龄/2 - (0.11 x 公斤体重) - 4 女人: 210 - 年龄/2 - (0.11 x 公斤体重)

另外对于运动时的心跳控制,这个算法说:

55 - 70%,健康区,小老百姓瞎跑跑 70 - 80%,减肥区,开始能改造体形了 80 - 100%,能力区,运动员训练用的

心跳算法(二)
心率计算方法

实时心率计算方法

假设心电图机的采样频率为1000,即每秒采样1000个数据,我们采样4秒钟的心电数据即4000个数据,瞬时性非常好。

假设我们要求的心律是x,那么心率计算的数学公式如下(R波指的是大小为4000的缓冲区里面,心跳波动的波峰数):

x / (60*1000) = (R波个数 - 1) / (最后一个R波位置 - 第一个R波位置) 求出x

【心跳算法】

x = (60*1000) * (R波个数 - 1) / (最后一个R波位置 - 第一个R波位置) 这个数学公式中

(最后一个R波位置-第一个R波位置) 得到的是最后一个R波和第一个R波之间隔了多少个数据,采样率1000的话,这个值其实就是隔了多少个毫秒。

(R波个数 - 1) 得到的是在这么多个毫秒内,经历多少个心跳周期。

【心跳算法】

先进先出队列的实现比较简单,我用的是最多为4000个WORD型数据的一个队列,如果数据达到4000,在添加数据的时候,就要把最早的一个数据挤出去了。

但是R波检测算法却并不完美,有时候会漏检,比如缓冲区里有5个R波,却只检出4个,这个时侯算出来的心律就偏低,不准确了。我想到解决这个问题的方法,就是叫做“双线竞争法”,因为心电图机共15条导联线,通常的做法是用其中信号最强的一条胸导来计算心率。为了解决R波漏检导致的心律有误的问题,可以用两个缓冲区,分别取两条胸导的数据,各自计算心律,然后采用两个心律值中较大的一个。

信号最强的导联--胸导

心跳算法(三)
心率算法

【心跳算法】

正如人体其他器官一样,心血管系统也只有在一定的运动强度刺激下才能得到改善,但这个强度又不能太高,否则就变成了无氧代谢运动了。这个心率范围叫做“有效心率区”。掌握了有效心率区后,就能在从事不同运动时自己控制运动量和强度了。[1]

首先记住安静时的脉搏数,可以在颈部(锁骨上面)、腕部或直接在胸部摸到心跳,然后数15秒钟,再乘4,这样一来就知道自己安静时的心率了。

第二步是按年龄确定最高心率,一般来说年龄越小心率越高。计算公式是这样的:男子最高心率=205-年龄。女子最高心率=220-年龄。国际一般用220 - 年龄所得值为最大心率。

第三确定运动时的有效心率范围。对普通锻炼者来说,最高心率的60%~85%是合适有效的运动心率范围。

不管是有氧运动,还是无氧运动。都有一个合适的心率才能达到较佳的运动效果。常用的公式是(最大心率-运动前的心率)/2+运动前心率。这个公式可以反应出不同性别、年龄的个体心率。这个公式适用于有氧运动和无氧运动,有氧运动和无氧运动尽管运动形式不同,但是都能在运动时提高心率。

比如在涉及游泳等运动的间隙训练中,一般多将心率控制在120-150次/分的最佳范围内。一般学生的早操跑步中的心率控制在130-150次/分。而成年人的健身可用170-年龄来控制运动强度。所以,不管你是在做有氧运动,还是无氧运动,你都可以用那个公式,知道自己做运动时的最佳心率。

心跳算法(四)
增量同步约束条件下的多节点间主节点选举算法

  摘 要: 为了满足在异地分布多中心的数据服务系统中,选取一个节点作为主节点,提供数据写服务,其他节点作为备节点提供读服务,主节点与备节点之间采用增量同步方式同步数据系统运行模式的需要。在此列举了在数据增量同步条件下进行主备选举时,需要遵循约束条件,提出一个基于数据版本作为主要约束条件的主备选举算法。描述了在选举过程中,节点的状态定义,各个状态转换关系,以及在各个状态下需要进行的相关处理。通过实际工程运用,验证了算法满足使用要求,同时总结了目前不足和后续改进要点。

  关键词: 增量同步; 选举算法; 状态转换; 数据服务系统
  中图分类号: TN911?34 文献标识码: A 文章编号: 1004?373X(2013)14?0051?04
  Algorithm for primary?node election in multi nodes under condition of data incremental synchronization constraint
  TAN Xing?qiu
  ( The 28th Research Institute of China Electronics Technology Group Corporation, Nanjng 210007, China)
  Abstract: In order to meet the demands of selecting a node as the master node in the multi?center data service systems distributed in allopatry to provide data writing services, other nodes as backup nodes to provide reading services, and adopting the synchronous data system operating pattern of incremental synchronization mode between the master node and the backup node, the constraint conditions which should be abided when the main and preparation elections are performed under the condition of data incremental synchronization are listed in this paper. The main and preparation election algorithm on the basis of data version as the main constraint is put forward. The state definition of the node, the conversion relation between various states and the related processing in different situations are described. The algorithm was verified in the actual engineering application. The insufficiency and the future improvement points are pointed out in this paper.
  Keywords: incremental synchronization; election algorithm; state transformation; data service system
  0 引 言
  在系统进行设计时,考虑到容灾备份[1]和负载均衡[2],需要在广域网上设置多个服务节点。多个服务节点之间,常需要选举出一个服务节点作为工作节点,完成系统的控制以及对数据进行更新,称此节点为“主”节点;其他节点作为“主”节点的备份,在“主”服务点失效的情况下接替“主”节点的工作,称这些节点为“备”节点。系统软件通过算法确定节点的工作状态的过程,称为“主备选择”过程。一般“主备选择”过程需要遵循以下原则:
  (1)在网络状态良好的情况下,同一时刻系统内只应该有一个主节点;
  (2)新节点的加入,不影响处于稳定状态主备关系;
  (3)在节点集合失去主节点时或没有主节点时,启动主备选择过程;
  (4)在网络故障,由于出现多个连通网络,而出现多个主节点时,可以自动冲突消解[3],保留一个节点作为主节点,其他节点降为备节点。
  在实际的系统设计中,常需要考虑到网络带宽的限制,服务节点之间的数据同步,采用基于数据版本的增量同步[4]的方法时,这给节点之间的主备选择增加了以下两个约束条件:
  (5)为了尽可能地减少数据丢失,在主节点失效后,需要选举数据版本最新的备节点接替主节点的工作。
  (6)为了保证数据的一致性,在系统的工作过程中不能容忍双主情况的存在,即使双主处于不同的连通网络时,系统也不可恢复。
  基于以上原因,本文提出在数据基于版本的增量同步下,在多节点间进行主备选择的算法。
  1 相关名词说明
  锁服务:相对于参与选举的节点而言,作为选举的外部的裁判,主要解决选举过程中可能出现的冲突而依靠节点自身状态无法判断的问题,如两个节点参加选举,而节点之间网络断线,从而自身无法选举出主节点地情况。只在选举时,特定的情况下起作用,平时节点的工作状态不依赖锁服务的存在。锁服务采用先申请、先获得的原则。申请成功后,申请的节点向锁服务发送心跳报[5],来维持对锁服务的拥有。   数据版本:数据每次更新形成一个数据版本,数据版本由节点与序列组合成的版本号和更新日志组成,在原主备节点间数据同步的情况下,备节点可以依据更新日志在本地完成相应版本的增量同步。
  全同步:在备节点与主节点不能继续进行增量同步的情况下,将所有数据同步到备节点的情况,一般在节点之间的版本差异超过更新日志存储的范围时发生。
  连接数:一个节点可以正常与其他节点之间进行双向通信的节点数目,称为连接数[6]。
  2 节点状态定义
  未同步:包括节点不可探测或未能与主节点进行联系的状态,新节点加入系统,先从未同步状态开始进行处理,未同步状态为常态。
  初始化:为节点与主节点取得联系后,进行初始化全同步的工作,以达到可以作为备运行的状态,为暂态[7]。
  备:正常工作,可以与主节点之间进行增量同步,可以作为备选节点接替主节点工作的状态,为常态。
  选主:备节点在发现失去主节点时,申请作为主节点的工作状态,为暂态。
  升主:选主节点在初步判断后,并经过收敛时间,认为自身能够作为候选主节点的状态,是选主节点转换为主节点的中间状态,为暂态。
  主:当前系统的主工作节点,为稳态[7]。
  降备:主工作节点在收到主节点切换命令后降为备节点的过渡状态,此状态是一个人工触发而出现的状态,在软件自动选举的过程中不会出现,为暂态。
  数据处理在各个状态下需要遵循的约束如表1所示。
  3 节点状态转换关系及状态处理
  节点加入系统从“未同步”状态开始,根据触发条件进行相应的状态转换从而融入系统进行工作。图1给出节点状态转换关系。
  
  图1 节点状态转换关系
  表1 各状态数据处理模块需要遵循的约束
  第3.1~3.7节,以伪代码的方式,给出节点处于各状态下,主备选择可能预见的各种触发条件和在此触发条件下需要进行的相关处理。
  3.1 未同步状态的处理
  if(收到其他节点的心跳探测报文)
  then{ 上报自身为“未同步”状态
  if(节点心跳探测报文表明节点为“主”状态) then向主节点发送同步申请报文;}
  if(收到主节点的同步应答报文)
  then{ 记录下主节点的地址
  if(应答报文为“增量同步”) then设置自身的状态为“备”;
  if(应答的报文为“全同步”) then设置自身的状态为“初始化”;
  立即向其他节点报告自身状态;}
  if(收到升主命令) then设置自身为“主”;应答控制节点;向其他节点报告;
  if(周期探测时控到) then 向地址列表内的所有节点发送状态探寻心跳报文;
  3.2 初始化状态的处理
  if(收到其他节点的心跳探测报文)
  then {if(节点心跳探测报文表明节点为非“主”状态) then上报自身为“初始化”状态
  if(节点心跳探测报文表明节点为“主”状态)。
  then{ if(节点地址==当前记录的主节点地址) then上报自身为“初始化”状态;
  if(节点地址!= 当前记录的主节点地址)
  then 删除主节点地址,更改自身状态为“未同步”,广播“未同步”;
  }
  }
  if(收到主节点的同步应答报文) then{
  if(应答报文为“增量同步”) then 设置自身的状态为“备”,广播自身为“备”;}
  if(应答报文非“增量同步”) then继续进行全同步的过程;
  }
  if(周期探测时控到)
  then { 向地址列表内的所有节点发送状态探寻心跳报文;
  计算自身当前的连接数;
  if(节点的连接数小于N/2) then { 删除主节点地址,更改自身状态为“未同步”;
  广播自身为“未同步”;}
  }
  3.3 备状态的处理
  if(收到其他节点的心跳探测报文) then
  {
  if(节点心跳探测报文表明节点为“主”状态) &&(节点地址!= 当前主节点地址)
  then {记录新主节点地址,广播自身为“备”状态;}
  }
  if(收到主节点的同步应答报文) then
  {
  if(应答报文为不可“增量同步”) then{更改自身状态为“未同步”,广播 “未同步”;}
  if(应答报文“增量同步”) then 进行同步的过程;
  }
  if(收到设置主节点命令) then { 更改自身状态为“主”;
  应答设置主的命令,广播自身为“主”;}
  if(周期探测时控到) then
  {
  向地址列表内的所有节点发送状态探寻心跳报文;
  if(主节点不在线) then { 删除主节点地址;
  更改自身状态为“选主”,广播状态 “选主”;;
  设置选主超时;
  }
  计算自身当前的连接数;
  if(节点的连接数小于) then {删除主节点的地址;
  更改自身状态为“未同步”,并广播 “未同步”;}
  }
  3.4 选主状态的处理   if(收到其他节点的心跳探测报文)then{
  if(节点心跳探测报文表明节点为非“主”状态) then上报自身为“选主”状态
  if(节点心跳探测报文表明节点为“主”状态) then
  记录主节点地址,更改自身状态为“备”,并广播自身状态;
  }
  if(选主超时时间到达) then {
  if(节点均为“选主”或者“未知”,且自身数据版本最高) then {
  设置自身的状态为“升主”,并设置升主超时,广播自身为“升主”;}
  else{ 设置选主超时;}
  if{周期探测时控到} then {
  向地址列表内的所有节点发送状态探寻心跳报文;
  计算自身当前的连接数;
  if(节点的连接数小于) then 更改自身状态为“未同步”,并广播;
  }
  3.5 升主状态的处理
  if(节点的连接数大于等于) then {
  向锁服务申请锁
  if(获得锁)then 更改自身状态为“主”,并广播;
  if(被锁服务拒绝)then 更改自身状态为“选主”,并广播;
  }
  if(升主状态超时)then更改自身状态为“选主”,并广播;
  if(节点连接数小于)then更改自身状态为“未同步”,并广播;
  3.6 主状态的处理
  if(收到其他节点的心跳探测报文) then 应答自身为“主”状态;
  if(收到降备的控制报文)then 设置自身的状态为“降备”,并设置降备超时;
  if(周期探测时控到)then {
  向地址列表内的所有节点发送状态探寻心跳报文;
  计算自身当前的连接数;
  if(连接数小于) then更改自身状态为“未同步”,并广播;
  }
  3.7 降备状态的处理
  if(收到其他节点的心跳探测报文) then 应答自身为“主”状态;
  if(降备状态超时)then {
  设置自身的状态为“主”;
  删除降备的目标主机节点;
  回答降备过程失败
  }
  if(目标主机节点的同步完成) then{
  则设置自身的状态为“备”;
  向目标主机节点发送升主命令,并广播自身为“备”;
  if(周期探测时控到)then {
  向地址列表内的所有节点发送状态探寻心跳报文;
  计算自身当前的连接数;
  if(节点的连接数小于)then 更改自身状态为“未同步”,并广播;
  }
  4 结 语
  本文给出一个基于数据版本作为主要选择条件的主备选择算法,描述了在主备选择过程中,节点的状态定义,各个状态转换关系,以及在各个状态下需要进行的相关处理。此算法已在实际使用中得到验证。但还存在以下问题,需要进一步优化:锁服务本身在切换时,会变成关键节点[8],异地主备[9]不能很好地解决,需要进一步研究;由于过程控制过于严格,本算法在网络振荡[10]的情况下,会产生假全同步需求,会浪费一定的资源,可以考虑设计检查点,进一步研究在节点重新入网时人工参与从而解决全同步问题。
  参考文献
  [1] 范建华,赵文.容灾备份异地架构在“不可抗力因素”下的应用研究[J].陕西理工学院学报:自然科学版,2011,27(1):54?59.
  [2] 杨锦,李肯立,吴帆.异构分布式系统的负载均衡调度算法[J]. 计算机工程,2012,38(2):166?168.
  [3] 陈立杉,段莉莉.基于相关度的同步协同设计冲突消解策略[J].武汉大学学报:工学版,2012,45(2):268?272.
  [4] 王玉标,饶锡如,何盼.异构环境下数据库增量同步更新机制[J].计算机工程与设计,2011,32(3):948?951.
  [5] 田锦.GPRS数据分包长度和心跳包间隔性能分析[J].电讯技术,2012,52(4):576?580.
  [6] 孟辉,张东戈,陶九阳.基于感知信息共享的C2网络特征分析[J].指挥控制与仿真,2009,31(1):26?29.
  [7] 刘卫民,樊越甫,刘方.基于磁通补偿的新型有源电力滤波器的暂态特性分析[J].高压电器,2012,48(6):65?69.
  [8] 陈燕.分布式虚拟实验系统关键节点设计[J].电脑编程技巧与维护,2011(12):88?89.
  [9] 王红熳.智能网容灾系统设计的关键技术研究[D].北京:北京邮电大学,2009.
  [10] 李新乐.军队计算机网络安全防护探析[J].电脑知识与技术, 2012(8):5312?5313.
  [11] 景慎艳.分布式数据库同步技术及其应用[J].现代电子技术,2008,31(12):48?45.

心跳算法(五)
自测心功能的3种方法

  在生活中,人们除了应定期到医院进行心功能的相关检查以外,还应经常自我检测心功能,以预防心脏病。那么,人们该如何自我检测心功能的强弱呢?下面就介绍3种针对不同人群的心功能检测方法:

  立卧位转化法
  操作者取平卧位,安静休息片刻,通过摸脉搏或佩戴脉搏表检测并记录自己1分钟的心跳次数,然后快速站立起来(此时可能会出现心跳加快、头昏的情况,属于正常现象),检测并记录最初15秒的心跳次数,再乘以4得出1分钟的心跳次数。最后,将两次所得的心跳次数进行比较。一般来说,这两次心跳次数之间的差数越大,说明心功能越好。两次心跳次数之间的差数为10~15的人心功能较好,平时可多做一些有氧运动,以增强心脏的功能。如果两次心跳次数之间的差数小于10,则说明心脏功能不良,需及时到医院进行检查和治疗。青壮年人可首选立卧位转化法自检心功能。
  六分钟步行试验
  操作者在地面上划出一段30米的直线,沿着此线往返步行6分钟(步履的缓急可根据自己的体能决定),然后计算出步行的总长度,并将此长度分为4个等级:少于300米为1级,300~374.9米为2级,375~449.5米为3级,超过450米为4级。步行总长度的级别越低,表明操作者的心功能越差。步行总长度为3级或4级的人,其心功能基本正常。如果步行总长度为1级或2级,说明心功能已经减退,应及早到医院进行全面的检查。老年人应首选六分钟步行试验自检心功能。心功能欠佳的老年人在初次进行此项测试时应咨询医护人员。老年人若在进行此项检测时出现胸痛、气促等不适的症状,应立即停止检测,以免发生意外。
  日常活动分级法
  操作者可通过观察自己的日常活动情况将心功能分为4级。1级心功能:在日常活动中很少出现气促和乏力的症状。2级心功能:在日常活动中经常出现气促和乏力的症状。3级心功能:在进行缓慢步行、更衣、洗漱等体力消耗较少的日常活动时也会感到力不从心,并会出现呼吸困难、疲惫困乏的症状。4级心功能:在安静休息时也会出现呼吸困难、疲惫困乏的症状,只能长期卧床休息。
  一般来说,人们的心功能若为1级,则说明心脏健康状况较好,心功能基本正常;若心功能为2级,则说明心功能已经受损;若心功能为3级,则说明可能发生了心衰;若心功能为4级,则说明可能出现了严重的心衰。心功能为2、3、4级的人应及时到医院进行检查和相关的治疗。
  这种判定心功能的方法简单易行,适合原本就患有心脏病的人使用。
  (摘自《求医问药》)

心跳算法(六)
基于预期效用的Hadoop作业调度算法

  【摘 要】本文分析了先入先出调度算法(FIFO)、公平调度算法(Fair-Scheduler)以及计算能力调度算法(Capacity Scheduler)的优缺点,并针对 Hadoop 的调度算法问题,提出了一种基于预期效用的Hadoop作业调度算法,详细叙述了该算法的原理和实现过程。最后对该算法编程验证,实验结果表明,其在调度时间方面的性能有了明显的改进。

  【关键词】云计算 Hadoop 任务调度
  近年来云计算技术取得了长足发展,大量的云计算系统投入使用,实际中绝大多数的云计算系统采用Hadoop平台来作为基础平台。作业调度技术在Hadoop系统中作为核心技术之一,其技术直接关系到Hadoop系统的运行性能,改进现有调度算法的不足之处,对提高Hadoop系统具有重要的意义。
  一、三种作业调度算法
  Hadoop现有的作业调度算法包括默认的FIFO调度算法,Facebook公司开发的公平调度算法以及Yahoo公司开发的计算能力调度算法。在FIFO的实现中,使用了一个单独的队列,TaskTracker总是将新任务追加到就绪队列的末端。该FIFO算法是容易实现,且调度开销要小于整个群集。但该算法无视不同用户以及不同任务间的需求差异,系统会阻止低优先级的任务执行,由于优先级抢占的情况不被FIFO算法所支持,这就使得平台系统的整体性能和资源利用率不高,影响了执行这些任务。
  公平调度算法(Fair Scheduler)的目标是能够并行执行的多种作业在MapReduced的计算框架中能够灵活应对[1]。其想法是尽可能的以确保所有的作业都是能够获得相同量的资源。由于其支持分类的任务调度,资源分配可以充分的在不同任务间进行分配,使得服务质量得到提高,系统资源充分利用[2]。它克服了简单的FIFO算法资源利用低和不支持任务抢占的缺点,但它不考虑每个节点当前的实际负载状态,导致负载不均衡的情况发生,从而影响到整个系统的响应时间。在实际应用中,系统的性能还极大的受到算法配置文件优劣的影响。
  计算能力调度算法与公平调度算法虽在功能上很类似,但还是有很多特别之处。计算能力调度支持多个作业队列,用户提交的作业直接添加到队列中。为了提升其资源利用效率,每个队列会共享已分配但处于闲置状态的资源。在配置文件中配置相应的参数,为队列分配相应的资源数量,可以使得为各个队列完成Map/Reduce的各种操作。计算能力调度算法虽然克服了FIFO算法简单以及资源利用率低的特点,而且它支持多任务并行执行,但是计算能力调度算法中队列设置无法自动进行,需要了解系统信息才能对作业进行队列选组和队列设置,在很多大型商业系统中,这可能成为提高系统性能的瓶颈。
  二、基于预期效用的作业调度算法
  针对前面调度算法的一些不足,我们提出了基于预期效用的作业调度算法。此算法要求在作业进入系统执行以前且作业已经被提交到作业等待服务队列中去时,进行作业的预先判断。在作业队列中通过作业分类机制,对作业的当前特征和所需要占用的系统的资源情况等进行分析,以此判断作业是否能够被系统接受并处理。根据当前作业被接受或者拒绝的概率作为判断依据,在候选的作业中要选择被成功接受的概率大于不被成功接受的概率的作业去执行。通过作业的预期效用计算值来判断被接收或者拒绝,被选择成为将要执行的作业就是那个计算得出的预期效用值最大的作业。
  在基于预期效用的作业调度算法设计过程中,所有提交到系统的相关作业将使用任务槽来完成存储或者计算任务,这些Map和Reduce任务槽是由云计算系统平台来指定的。每个作业都可以在执行过程中去预估计它的资源耗费的情况,例如内存的占用,CPU时间占用的长短以及预算量的大小等;对节点上的评估也是这样,也包括内存大小、带宽大小、磁盘数量、CPU速度及数量等节点特征,通过这些特征可以得知节点资源的占用情况;合理的调度与分配资源,可以平衡的让作业分享系统服务,避免大作业长时间占用资源,而小作业长时间得不到系统的服务[3]。
  在进行作业选择调度的时候,根据预期效用的假设理论,我们一般按照式(1)来选择作业:
  在上式(1)中是作业在系统指定的效用函数值,此值需要一定时间的积累和调整。是作业在分类器处理过后,作业被成功接受的概率,此值要受资源消耗状况的影响,主要包括了CPU、内存以及IO的占用情况等,F是综合描述作业特征。其算法的流程如图1所示。
  预期效用函数计算出来的值将直接决定作业是否被系统所调度执行,在此效用计算过程中先计算与作业相关的概率值,它的含义是在集群环境下作业被成功调度的概率,是综合描述作业特的征。由此,有如下公式:
  上式(2)是基于预期效用的Hadoop作业调度算法的理论基础,总体思路是在进行下一次作业的调度决策前,先要分析上次的作业调度运行的相关数值。为使调度尽量达到最优的状态,就要不断的追踪上次所做的决定,修正下次的决策,通过先验概率计算出可能产生的相关结果。其中也是可以计算的,因为是代表资源耗费情况的预计值,是在作业提交之前的设定值,也就可以当作常数。概率在作业调度算法决策过程中,先要进行分析比较这两个概率值,然后选择被成功接受概率值最大的值作为候选作业进行判断处理,而不符合要求的作业会被系统拒绝进行调度;通过这种设计的作业分类器将作业进行适当的分类―可能不被成功调度的作业和可能被成功调度的作业两类,在可能成功的作业队列中计算相应的作业预期效用值,从中选择预期效用值最大的作业进行调度执行。通过如下的公式计算作业的预期效用值,
  在公式(3)中,为作业的预期效用值,为其作业效用函数。在选定作业进入调度序列执行后,如何去判断作业是否被成功调用呢,这就需要制定作业评判的标准。我们将作业任务节点执行的情况定为调度是否合适的评判指标。在节点反馈的信息中,通过一些集群信息参数来为节点上的资源消耗设定一个阀值。当作业执行过程中,如果反馈回来的节点信息这一阀值,就可以认为作业调度不合理,节点负载过重。集群参数列表如表格1所示。   在计算得出被成功调用的分类作业效用值后,就选择执行预期效用值最大的作业进行调度。如果来自作业的节点心跳信息的资源使用状况没有超过阀值,可认为调度决策是成功的,否则就是失败的;如果决策是失败的话,需要对预期效用值进行重新分析,对相关参数进行修改。
  三、算法验证
  该算法的具体实现是在已有的Hadoop提供的API接口基础之上进行的程序开发。实验环境为Ubuntu9.04、JDK1.6、Hadoop0.20;节点数量设置为4个,1个为NameNode,其他为计算节点。在实验中搭建好hadoop的计算环境集群,将用户作业分别提交到系统中进行处理。配置数据块的副本数量为5个,HDFS数据块的大小为64M,以及TaskTracker上心跳信息的反馈时间间隔为4秒等。实验中提交了三种作业,分别是在50G的数据文件中统计某个单词出现的频率;对100M数据中的键/值对进行一次平方运算;在本地服务器上对200M数据进行FTP上传下载100次。每次作业运行完成之后得到处理时间的数据,实验的结果如图2所示。
  从图2中可以得出,基于预期效用的作业调度算法在处理作业的时间响应性方面大多数时候要优于FIFO算法以及公平调度算法,和计算能力调度算法的处理时间相当。刚开始时基于预期效用的调度算法所花费的时间较多,随着运算次数的增加,调度所花时间逐渐减少。
  四、结论
  在处理相同作业队列时,FIFO算法所消耗的时间最多,由于其未充分考虑了资源的使用情况,故调度算法实现起来比较简单。公平算法和计算能力调度算法在算法的设计上比FIFO复杂些,但是如果其参数设置不合理,也可能造成消耗时间比较多。随着时间的推移,基于预期效用的调度算法处理作业的时间会越来越少,直至达到稳定的状态。FIFO算法,公平算法以及计算能力算法在预先参数配置不恰当的情况之下其作业处理的响应时间将会受到影响,并且在以后的作业调度过程中不会被纠正,基于预期效用的调度算法则允许初始配置不合理,允许犯错,在后续的作业调度过程中,不断的去修改配置参数,使得系统的处理能力达到一个越来越优的状态。
  参考文献:
  [1] Fair Scheduler for Hadoop[EB/OL].Hadoop.apache.org/common/docs/current/Fair_scheduler.html, 2010-04-15
  [2] 姜淼,Hadoop云平台下调度算法的研究[D],吉林大学通信工程学院,2012-06
  [3] Shvachko k,KUANG Hai-rong,Radia S,etal.The Hadoop Distributed File System[J].MSST,2010.1
  作者简介:
  方刚(1976―),男,四川,硕士研究生,主要研究领域为应用软件和云计算技术。

心跳算法

http://m.zhuodaoren.com/shenghuo373529/

推荐访问:心跳过快 天使的心跳

百科推荐文章

推荐内容

上一篇:计算机应用现状和未来趋势 下一篇:房屋征收部门不履行协议书内容,应当起诉谁