一种确定异常节点的方法、节点及计算机可读存储介质与流程

文档序号:17548440发布日期:2019-04-30 18:02阅读:287来源:国知局
一种确定异常节点的方法、节点及计算机可读存储介质与流程

本发明涉及数据处理技术领域,尤其涉及一种确定异常节点的方法、节点及计算机可读存储介质。



背景技术:

随着hdfs(hadoopdistributedfilesystem,海杜普分布式文件系统)集群规模日益变大,hdfs集群中的节点出现故障的概率也随之增加。节点的故障通常并不是指检测到的硬件故障,而更多的原因可能是机器的老化或者是机器负载不均衡,一旦出现这种情况机器会表现出一些异常现象,例如磁盘读写慢和/或网络数据传输慢等异常现象。这类异常现象有些可以通过心跳检测初步判断,有些现象可能会引发心跳丢失,所以要在众多的hdfs集群中的节点中找到有异常现象的节点是非常困难的。

目前一般常用的方法是通过心跳时间来判断hdfs集群中是否出现异常节点,但并不能定位哪个节点出现异常。



技术实现要素:

本发明要解决的技术问题是,现有技术中无法对hdfs集群中的异常节点进行准确检测及定位。

本发明采用的技术方案是提供一种确定异常节点的方法,应用于数据节点datanode,所述方法包括:

当检测到数据处理时延大于设定阈值时,在向命名空间节点namenode发送的心跳信息中设置节点异常信息,以供所述namenode基于所述节点异常信息定位所述datanode。

可选的,所述节点异常信息包括:所述datanode的标识信息;

或者,所述数据处理时延和所述datanode的标识信息。

可选的,所述数据处理时延至少包括以下之一:从接收到报文开始至将所述报文传输至下一datanode的报文传输时延、从接收到磁盘访问指令开始至完成所述磁盘访问指令对应访问操作的磁盘访问时延;

所述检测到数据处理时延大于设定阈值,包括:

检测到所述数据处理时延中所包含的任一时延大于设定阈值。

可选的,所述磁盘访问指令包括:磁盘写入指令和/或磁盘读取指令。

本发明还提供一种确定异常节点的方法,应用于namenode,所述方法包括:

接收datanode发送的心跳信息;

在检测到所述心跳信息中携带节点异常信息的情况下,对发出所述心跳信息的所述datanode进行定位。

所述节点异常信息的产生方式:所述datanode在检测到自身的数据处理时延大于设定阈值时,将所述节点异常信息设置于向namenode发送的心跳信息中。

可选的,所述节点异常信息包括:所述datanode的标识信息;

或者,所述数据处理时延和所述datanode的标识信息。

本发明还提供一种数据节点datanode,所述datanode包括处理器和存储器;

所述处理器用于执行存储器中存储的确定异常节点的程序,以实现以下步骤:

当检测到数据处理时延大于设定阈值时,在向命名空间节点namenode发送的心跳信息中设置节点异常信息,以供所述namenode基于所述节点异常信息定位所述datanode。

可选的,所述节点异常信息包括:所述datanode的标识信息;

或者,所述数据处理时延和所述datanode的标识信息。

可选的,所述数据处理时延至少包括以下之一:从接收到报文开始,至将所述报文传输至下一datanode的报文传输时延、从接收到磁盘访问指令开始,至完成所述磁盘访问指令对应访问操作的磁盘访问时延;

所述检测到数据处理时延大于设定阈值,包括:

检测到所述数据处理时延中所包含的任一时延大于设定阈值。

可选的,所述磁盘访问指令包括:磁盘写入指令和/或磁盘读取指令。

本发明还提供一种命名空间节点namenode,所述namenode包括处理器和存储器;

所述处理器用于执行存储器中存储的确定异常节点的程序,以实现以下步骤:

接收datanode发送的心跳信息;

在检测到所述心跳信息中携带节点异常信息的情况下,对发出所述心跳信息的所述datanode进行定位。

所述节点异常信息的产生方式:所述datanode在检测到自身的数据处理时延大于设定阈值时,将所述节点异常信息设置于向namenode发送的心跳信息中。

可选的,其特征在于,所述节点异常信息包括:所述datanode的标识信息;

或者,所述数据处理时延和所述datanode的标识信息。

本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述的确定异常节点的方法的步骤。

采用上述技术方案,本发明至少具有下列优点:

本发明所述一种确定异常节点的方法、节点及存储介质,通过datanode(数据节点)检测自身的数据处理时延,实现了对hdfs集群异常节点的精确检测,有效提高了hdfs集群异常节点的检测精度;同时通过datanode在向namenode(命名空间节点)发送的心跳信息中设置节点异常信息,有效的提高了namenode基于节点异常信息对hdfs集群异常节点的定位精度。

附图说明

图1为本发明第三至第四实施例的确定异常节点的方法流程图;

图2为本发明第五实施例的hdfs集群组成结构示意图;

图3为本发明第五实施例的确定hdfs集群异常节点的方法流程图;

图4为本发明第六至第七实施例的datanode组成结构示意图;

图5为本发明第八至第九实施例的namenode组成结构示意图。

具体实施方式

为更进一步阐述本发明为达成预定目的所采取的技术手段及功效,以下结合附图及较佳实施例,对本发明进行详细说明如后。

在hdfs集群中设有一个或多个namenode、以及多个datanode。

hdfs集群在接收到客户端发出控制请求指令情况下,执行以下具体操作:

当客户端发出控制请求指令时,hdfs集群将携带该控制指令的报文发送至该控制请求指令对应的第一个datanode,以供第一个datanode基于接收到的该控制请求指令,执行该控制请求指令对应的操作,并在完成该操作之后,将携带该控制请求指令的报文发送至该控制请求指令对应的下一个datanode。下一个datanode基于接收到的该控制请求指令,执行该控制请求指令对应的操作,并在完成该操作之后,将携带该控制请求指令的报文发送至该控制请求指令对应的下一个datanode,直至该控制请求指令对应的最后一个datanode基于接收到的该控制请求指令,执行该控制请求指令对应的操作。

其中,每个datanode均以预置的心跳信息发送周期向设定的一个或多个namenode发送心跳信息,以供namedode基于心跳信息监控每个datanode是否异常。

当任一datanode出现异常时,导致异常的datanode向namenode发送的心跳时间异常。在datanode正常情况下,datanode向namenode发送的心跳信息的默认发送时间间隔是3秒;当发现心跳信息的发送时间超过十几秒或者几十秒时,则说明hdfs集群中的某个datanode可能出现异常现象。

本发明第一实施例,一种确定异常节点的方法,应用于hdfs集群中的datanode,该方法包括以下具体步骤:

步骤s101,当检测到数据处理时延大于设定阈值时,在向namenode发送的心跳信息中设置节点异常信息,以供namenode基于节点异常信息定位该datanode。

在本实施例中,对设定阈值不做具体限定,设定阈值可以是工程师根据工程经验设置的检测异常节点的最佳阈值,也可以是通过有限次实验得到的检测异常节点的最佳阈值,也可以是通过有限次计算机仿真得到的检测异常节点的最佳阈值。

其中,心跳信息的产生方式:datanode基于预置的心跳信息发送周期,向namenode发送心跳信息。

在本实施例中,对心跳信息发送周期不做具体限定。

可选的,数据处理时延包括但不限于:从接收到数据处理指令至完成该数据处理指令对应的数据处理操作的时延。

可选的,节点异常信息包括但不限于:该datanode的标识信息。

通过datanode对自身的数据处理时延进行检测,能够有效检测异常的datanode;通过将数据处理时延与设定阈值进行比较,在数据处理时延大于设定阈值的情况下,在向namenode发送的心跳信息中设置节点异常信息,避免了每个datanode都在向namenode发送的心跳信息中设置检测信息,进而导致namenode处理检测信息负担过大的缺陷,通过namenode处理节点异常信息,有效降低了namenode的信息处理负担。

例如:当检测到数据处理时延大于设定阈值10秒时,在向namenode发送的心跳信息中设置节点异常信息,以供namenode基于节点异常信息定位该datanode;其中,节点异常信息包括:该datanode的标识信息。

本发明第一实施例所述的一种确定异常节点的方法,通过datanode检测自身的数据处理时延,实现了对hdfs集群异常节点的精确检测,有效提高了hdfs集群异常节点的检测精度;同时通过datanode在向namenode发送的心跳信息中设置节点异常信息,有效的提高了namenode基于节点异常信息对hdfs集群异常节点的定位精度。

本发明第二实施例,一种确定异常节点的方法,应用于hdfs集群中的datanode,该方法包括以下具体步骤:

步骤s101,当检测到数据处理时延大于设定阈值时,在向namenode发送的心跳信息中设置节点异常信息,以供namenode基于节点异常信息定位该datanode。

在本实施例中,对设定阈值不做具体限定,设定阈值可以是工程师根据工程经验设置的检测异常节点的最佳阈值,也可以是通过有限次实验得到的检测异常节点的最佳阈值,也可以是通过有限次计算机仿真得到的检测异常节点的最佳阈值。

其中,心跳信息的产生方式:datanode基于预置的心跳信息发送周期,向namenode发送心跳信息。

在本实施例中,对心跳信息发送周期不做具体限定。

可选的,数据处理时延至少包括以下之一:从接收到报文开始至将该报文传输至下一datanode的报文传输时延、从接收到磁盘访问指令开始至完成该磁盘访问指令对应访问操作的磁盘访问时延;

其中,检测到数据处理时延大于设定阈值的方式,包括但不限于:

检测到数据处理时延中所包含的任一时延大于设定阈值。

例如:数据处理时延包括:从接收到报文开始至将该报文传输至下一datanode的报文传输时延,以及从接收到磁盘访问指令开始至完成该磁盘访问指令对应访问操作的磁盘访问时延;

其中,检测到数据处理时延大于设定阈值的方式,包括但不限于:

检测到报文传输时延和磁盘访问时延中任一时延大于设定阈值。

又如:数据处理时延包括:从接收到报文开始至将该报文传输至下一datanode的报文传输时延;

其中,检测到数据处理时延大于设定阈值的方式,包括但不限于:

检测到报文传输时延大于设定阈值。

又如:数据处理时延包括:从接收到磁盘访问指令开始至完成该磁盘访问指令对应访问操作的磁盘访问时延;

其中,检测到数据处理时延大于设定阈值的方式,包括但不限于:

检测到磁盘访问时延中任一时延大于设定阈值。

可选的,节点异常信息包括但不限于:该datanode的标识信息;或者,该数据处理时延和该datanode的标识信息。

可选的,磁盘访问指令包括但不限于:磁盘写入指令和/或磁盘读取指令。

可选的,报文传输时延的确定方式包括但不限于:当接收到报文时,进行第一打点操作,得到第一时间点;

当将该报文传输至下一datanode时,进行第二打点操作,得到第二时间点;

基于第一时间点和第二时间点,得到报文传输时延。

可选的,磁盘访问时延的确定方式至少包括以下方式之一:

方式一,当接收到磁盘访问指令时,进行第三打点操作,得到第三时间点;

当完成磁盘访问指令对应的访问操作时,进行第四打点操作,得到第四时间点;

基于第三时间点和第四时间点,得到磁盘访问时延。

方式二,当接收到磁盘访问指令时,进行第三打点操作,得到第三时间点;

当执行磁盘访问指令对应的每一访问操作时,分别进行对应的第五打点操作,得到每一访问操作对应的第五时间点;

基于第三时间点,和每一访问操作对应的第五时间点,得到磁盘访问时延;其中,磁盘访问时延包括:第三时间点,和每一访问操作对应的第五时间点。

例如:方式二,当接收到磁盘写入指令时,进行第三打点操作,得到第三时间点;

基于datanode中预置的磁盘访问路径:datanode->fsdatasetimpl(文件系统数据集处理)->volumelist(磁盘列表),根据预置的fsvolumeimpl(文件系统磁盘处理)类,依次执行磁盘写入指令对应的每一访问操作;

创建fsvolumemetric(文件系统磁盘数据度量)类;

其中,volumelist包括:配置文件中各个文件写入磁盘的目录;

fsvolumeimpl类包括:创建文件的方法;

通过fsvolumemetric类检控执行磁盘写入指令对应的每一访问操作,并通过fsvolumemetric类进行对应的第五打点操作,得到每一访问操作对应的第五时间点;

基于第三时间点,和每一访问操作对应的第五时间点,通过fsvolumemetric类得到磁盘访问时延;其中,磁盘访问时延包括:第三时间点,和每一访问操作对应的第五时间点。

通过datanode对自身的数据处理时延进行检测,能够有效检测异常的datanode;通过将数据处理时延与设定阈值进行比较,在数据处理时延大于设定阈值的情况下,在向namenode发送的心跳信息中设置节点异常信息,避免了每个datanode都在向namenode发送的心跳信息中设置检测信息,进而导致namenode处理检测信息负担过大的缺陷,通过namenode处理节点异常信息,有效降低了namenode的信息处理负担。

通过在节点异常信息中设置该datanode的标识信息,namenode能够根据该datanode的标识信息,对异常的datanode进行准确定位;通过在节点异常信息中设置该数据处理时延,能够使namenode准确定位异常的datanode之后,呈现该数据处理时延,以供用户对异常的datanode进行准确的故障定位。

本发明第二实施例所述的一种确定异常节点的方法,通过datanode检测自身的数据处理时延,实现了对hdfs集群异常节点的精确检测,有效提高了hdfs集群异常节点的检测精度;同时通过datanode在向namenode发送的心跳信息中设置节点异常信息,有效的提高了namenode基于节点异常信息对hdfs集群异常节点的定位精度。

本发明第三实施例,一种确定异常节点的方法,应用于hdfs集群中的namenode,如图1所示,该方法包括以下具体步骤:

步骤s301,接收datanode发送的心跳信息;

其中,心跳信息的产生方式:datanode基于预置的心跳信息发送周期,向namenode发送心跳信息。

在本实施例中,对心跳信息发送周期不做具体限定。

步骤s302,在检测到心跳信息中携带节点异常信息的情况下,对发出心跳信息的datanode进行定位。

其中,节点异常信息的产生方式:datanode在检测到自身的数据处理时延大于设定阈值时,将节点异常信息设置于向namenode发送的心跳信息中。

通过对心跳信息中是否携带节点异常信息进行检测,实现了对异常datanode进行精确定位。

例如:在hdfs集群中设有一个namenode和三个datanode;

namenode接收每个datanode发送的心跳信息;

在检测到心跳信息中携带节点异常信息的情况下,对发出心跳信息的datanode进行定位;

其中,节点异常信息的产生方式:datanode在检测到自身的数据处理时延大于设定阈值时,将节点异常信息设置于向namenode发送的心跳信息中。

又如:在hdfs集群中设有一个namenode、第一datanode、第二datanode、第三datanode;

namenode接收第一datanode、第二datanode、第三datanode分别发送的心跳信息;

在检测到第三datanode发送的心跳信息中携带节点异常信息的情况下,对发出携带节点异常信息的心跳信息的第三datanode进行定位;

其中,节点异常信息的产生方式:第三datanode在检测到自身的数据处理时延大于设定阈值时,将节点异常信息设置于向namenode发送的心跳信息中。

本发明第三实施例所述的一种确定异常节点的方法,通过datanode检测自身的数据处理时延,实现了对hdfs集群异常节点的精确检测,有效提高了hdfs集群异常节点的检测精度;同时通过datanode在向namenode发送的心跳信息中设置节点异常信息,有效的提高了namenode基于节点异常信息对hdfs集群异常节点的定位精度。

本发明第四实施例,一种确定异常节点的方法,应用于hdfs集群中的namenode,如图1所示,该方法包括以下具体步骤:

步骤s301,接收datanode发送的心跳信息;

其中,心跳信息的产生方式:datanode基于预置的心跳信息发送周期,向namenode发送心跳信息。

在本实施例中,对心跳信息发送周期不做具体限定。

步骤s302,在检测到心跳信息中携带节点异常信息的情况下,对发出心跳信息的datanode进行定位。

其中,节点异常信息的产生方式:datanode在检测到自身的数据处理时延大于设定阈值时,将节点异常信息设置于向namenode发送的心跳信息中。

通过对心跳信息中是否携带节点异常信息进行检测,实现了对异常datanode进行精确定位。

可选的,节点异常信息包括但不限于:发出心跳信息的datanode的标识信息;或者,该数据处理时延和发出心跳信息的datanode的标识信息。

例如:在hdfs集群中设有一个namenode、第一datanode、第二datanode、第三datanode;

namenode接收每个datanode发送的心跳信息;

在检测到第二datanode发送的心跳信息中携带节点异常信息的情况下,对发出携带节点异常信息的心跳信息的第二datanode进行定位,其中,节点异常信息包括但不限于:发出携带节点异常信息的心跳信息的第二datanode的标识信息;

节点异常信息的产生方式:第二datanode在检测到自身的数据处理时延大于设定阈值时,将节点异常信息设置于向namenode发送的心跳信息中。

通过在节点异常信息中设置第二datanode的标识信息,namenode能够根据第二datanode的标识信息,对异常的第二datanode进行准确定位。

又如:在hdfs集群中设有一个namenode、第一datanode、第二datanode、第三datanode;

namenode接收每个datanode发送的心跳信息;

在检测到第二datanode发送的心跳信息中携带节点异常信息的情况下,对发出携带节点异常信息的心跳信息的第二datanode进行定位;

其中,节点异常信息的产生方式:第二datanode在检测到自身的数据处理时延大于设定阈值时,将节点异常信息设置于向第二namenode发送的心跳信息中;

节点异常信息包括但不限于:该数据处理时延和发出携带节点异常信息的心跳信息的第二datanode的标识信息;

对发出携带节点异常信息的心跳信息的第二datanode进行定位的方式包括但不限于:

基于发出携带节点异常信息的心跳信息的第二datanode的标识信息,对第二datanode进行定位。

通过在节点异常信息中设置该数据处理时延,能够使namenode准确定位异常的datanode之后,呈现该数据处理时延,以供用户对异常的datanode进行准确的故障定位。

通过在节点异常信息中设置该datanode的标识信息,namenode能够根据该datanode的标识信息,对异常的datanode进行准确定位;通过在节点异常信息中设置该数据处理时延,能够使namenode准确定位异常的datanode之后,呈现该数据处理时延,以供用户对异常的datanode进行准确的故障定位。

本发明第四实施例所述的一种确定异常节点的方法,通过datanode检测自身的数据处理时延,实现了对hdfs集群异常节点的精确检测,有效提高了hdfs集群异常节点的检测精度;同时通过datanode在向namenode发送的心跳信息中设置节点异常信息,有效的提高了namenode基于节点异常信息对hdfs集群异常节点的定位精度。

本发明第五实施例,本实施例是在上述实施例的基础上,以一种确定hdfs集群异常节点的方法为例,结合附图2~图3介绍一个本发明的应用实例。

如图2所示,本实施所述的hdfs集群包括:客户端10、第一datanode20、第二datanode30、第三datanode40和namenode50。

本实施例所述的一种确定hdfs集群异常节点的方法,包括以下具体步骤:

步骤s501,客户端10向第一datanode20发送携带磁盘写入指令的报文。

步骤s502,当第一datanode20接收到携带磁盘写入指令的报文时,对第一datanode20对应的磁盘执行写入操作;在完成该写入操作之后,将携带磁盘写入指令的报文发送至第二datanode30;记录从接收到该报文开始至将该报文传输至第二datanode30的第一报文传输时延;和/或,记录从接收到该磁盘写入指令至完成磁盘写入指令对应写入操作的第一磁盘访问时延。

步骤s503,第一datanode20检测自身的第一报文传输时延是否大于设定阈值,或者检测自身的第一磁盘访问时延是否大于设定阈值,或者检测自身的第一报文传输时延和第一磁盘访问时延中的任一时延是否大于设定阈值;若第一datanode20检测自身的第一报文传输时延大于设定阈值或者检测自身的第一磁盘访问时延大于设定阈值,或者检测自身的第一报文传输时延和第一磁盘访问时延中的任一时延大于设定阈值,执行步骤s504;否则不执行操作。

在本实施例中,对设定阈值不做具体限定,设定阈值可以是工程师根据工程经验设置的检测异常节点的最佳阈值,也可以是通过有限次实验得到的检测异常节点的最佳阈值,也可以是通过有限次计算机仿真得到的检测异常节点的最佳阈值。

步骤s504,第一datanode20在向namenode50发送的心跳信息中设置第一节点异常信息,以供namenode50基于第一节点异常信息定位异常的第一datanode20。

其中,第一节点异常信息包括:第一datanode20的标识信息,及第一报文传输时延和/或第一磁盘访问时延。

以供用户通过namenode50获取第一节点异常信息,基于第一datanode20的标识信息定位第一datanode20,并基于第一报文传输时延和/或第一磁盘访问时延对第一datanode20进行故障分析和分析。

心跳信息的产生方式:datanode基于预置的心跳信息发送周期,向namenode50发送心跳信息。

在本实施例中,对心跳信息发送周期不做具体限定。

步骤s505,当第二datanode30接收到携带磁盘写入指令的报文时,对第二datanode30对应的磁盘执行写入操作;在完成该写入操作之后,将携带磁盘写入指令的报文发送至第三datanode40;记录从接收到该报文开始至将该报文传输至第三datanode40的第二报文传输时延;和/或,记录从接收到磁盘写入指令至完成磁盘写入指令对应写入操作的第二磁盘访问时延。

步骤s506,第二datanode30检测自身的第二报文传输时延是否大于设定阈值,或者,检测自身的第二磁盘访问时延是否大于设定阈值,或者检测自身的第二报文传输时延和第二磁盘访问时延是否大于设定阈值;若第二datanode30检测自身的第二报文传输时延大于设定阈值,或者检测自身的第二磁盘访问时延大于设定阈值,或者检测自身的第二报文传输时延和第二磁盘访问时延中的任一时延大于设定阈值,执行步骤s507;否则不执行操作。

步骤s507,第二datanode30在向namenode50发送的心跳信息中设置第二节点异常信息,以供namenode50基于第二节点异常信息定位异常的第二datanode30。

其中,第二节点异常信息包括:第二datanode30的标识信息,及第二报文传输时延和/或第二磁盘访问时延。

以供用户通过namenode50获取第二节点异常信息,基于第二datanode30的标识信息定位第二datanode30,并基于第二报文传输时延和/或第二磁盘访问时延对第二datanode30进行故障定位和分析。

步骤s508,当第三datanode40接收到携带磁盘写入指令的报文时,对第三datanode40对应的磁盘执行写入操作;在完成该写入操作之后,将回应报文发送至第二datanode30;记录从接收到该报文开始,至将该回应报文传输至第二datanode30的第三报文传输时延;和/或,记录从接收到磁盘写入指令,至完成磁盘写入指令对应写入操作的第三磁盘访问时延。

步骤s509,第三datanode40检测自身的第三报文传输时延,或者检测自身的第三磁盘访问时延是否大于设定阈值,或者检测自身的第三报文传输时延和第三磁盘访问时延中的任一时延是否大于设定阈值;若第三datanode40检测自身的第三报文传输时延大于设定阈值,或者检测自身的第三磁盘访问时延大于设定阈值,或者检测自身的第三报文传输时延和第三磁盘访问时延中的任一时延大于设定阈值,执行步骤s510;否则不执行操作。

步骤s510,第三datanode40在向namenode50发送的心跳信息中设置第三节点异常信息,以供namenode50基于第三节点异常信息定位异常的第三datanode40。

其中,第三节点异常信息包括:第三datanode40的标识信息,及第三报文传输时延和/或第三磁盘访问时延。

以供用户通过namenode50获取第三节点异常信息,基于第三datanode40的标识信息定位第三datanode40,并基于第三报文传输时延和/或第三磁盘访问时延对第三datanode40进行故障定位和分析。

步骤s511,当第二datanode30接收到回应报文时,将该回应报文发送至第一datanode20;记录从接收到该回应报文开始,至将该回应报文传输至第一datanode20的第四报文传输时延。

步骤s512,第二datanode30检测自身的第四报文传输时延是否大于设定阈值;若第二datanode30检测自身的第四报文传输时延大于设定阈值,执行步骤s513;否则不执行操作。

步骤s513,第二datanode30在向namenode50发送的心跳信息中设置第四节点异常信息,以供namenode50基于第四节点异常信息定位异常的第二datanode30。

其中,第四节点异常信息包括:第二datanode30的标识信息,及第四报文传输时延。

以供用户通过namenode50获取第四节点异常信息,基于第二datanode30的标识信息定位第三datanode40,并基于第四报文传输时延对第二datanode30进行故障定位和分析。

步骤s514,当第一datanode20接收到回应报文时,将该回应报文发送至客户端10;记录从接收到该回应报文开始,至将该回应报文传输至客户端10的第五报文传输时延。

步骤s515,第一datanode20检测自身的第五报文传输时延是否大于设定阈值;若第一datanode20检测自身的第五报文传输时延大于设定阈值,执行步骤s516;否则不执行操作。

步骤s516,第一datanode20在向namenode50发送的心跳信息中设置第五节点异常信息,以供namenode50基于第五节点异常信息定位异常的第一datanode20。

其中,第五节点异常信息包括:第一datanode20的标识信息,及第五报文传输时延。

以供用户通过namenode50获取第五节点异常信息,基于第一datanode20的标识信息定位第一datanode20,并基于第五报文传输时延对第一datanode20进行故障定位和分析。

本发明第五实施例所述的一种确定异常节点的方法,通过datanode检测自身的数据处理时延,实现了对hdfs集群异常节点的精确检测,有效提高了hdfs集群异常节点的检测精度;同时通过datanode在向namenode发送的心跳信息中设置节点异常信息,有效的提高了namenode基于节点异常信息对hdfs集群异常节点的定位精度。

本发明第六实施例,一种datanode,设置于hdfs集群中,如图4所示,该datanode包括以下组成部分:

处理器501和存储器502。在本实施例中,处理器501和存储器502可通过总线或者其它方式连接。

处理器501可以是通用处理器,例如中央处理器(centralprocessingunit,cpu),还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,asic),或者是被配置成实施本发明实施例的一个或多个集成电路。其中,存储器502用于存储所述处理器501的可执行指令;

存储器502,用于存储程序代码,并将该程序代码传输给处理器501。存储器502可以包括易失性存储器(volatilememory),例如随机存取存储器(randomaccessmemory,ram);存储器502也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-onlymemory,rom)、快闪存储器(flashmemory)、硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);存储器502还可以包括上述种类的存储器的组合。

其中,处理器501用于调用所述存储器502存储的程序代码,执行如下操作:

当检测到数据处理时延大于设定阈值时,在向namenode发送的心跳信息中设置节点异常信息,以供namenode基于节点异常信息定位该datanode。

在本实施例中,对设定阈值不做具体限定,设定阈值可以是工程师根据工程经验设置的检测异常节点的最佳阈值,也可以是通过有限次实验得到的检测异常节点的最佳阈值,也可以是通过有限次计算机仿真得到的检测异常节点的最佳阈值。

其中,心跳信息的产生方式:datanode基于预置的心跳信息发送周期,向namenode发送心跳信息。

在本实施例中,对心跳信息发送周期不做具体限定。

可选的,数据处理时延包括但不限于:从接收到数据处理指令,至完成该数据处理指令对应的数据处理操作的时延。

可选的,节点异常信息包括但不限于:该datanode的标识信息。

通过datanode对自身的数据处理时延进行检测,能够有效检测异常的datanode;通过将数据处理时延与设定阈值进行比较,在数据处理时延大于设定阈值的情况下,在向namenode发送的心跳信息中设置节点异常信息,避免了每个datanode都在向namenode发送的心跳信息中设置检测信息,进而导致namenode处理检测信息负担过大的缺陷,通过namenode处理节点异常信息,有效降低了namenode的信息处理负担。

例如:当检测到数据处理时延大于设定阈值10秒时,在向namenode发送的心跳信息中设置节点异常信息,以供namenode基于节点异常信息定位该datanode;其中,节点异常信息包括:该datanode的标识信息。

本发明第六实施例所述的一种datanode,通过检测自身的数据处理时延,实现了对hdfs集群异常节点的精确检测,有效提高了hdfs集群异常节点的检测精度;同时通过在向namenode发送的心跳信息中设置节点异常信息,有效的提高了namenode基于节点异常信息对hdfs集群异常节点的定位精度。

本发明第七实施例,一种datanode,设置于hdfs集群中,如图4所示,该datanode包括以下组成部分:

处理器501和存储器502。在实施例中,处理器501和存储器502可通过总线或者其它方式连接。

处理器501可以是通用处理器,例如中央处理器(centralprocessingunit,cpu),还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,asic),或者是被配置成实施本发明实施例的一个或多个集成电路。其中,存储器502用于存储所述处理器501的可执行指令;

存储器502,用于存储程序代码,并将该程序代码传输给处理器501。存储器502可以包括易失性存储器(volatilememory),例如随机存取存储器(randomaccessmemory,ram);存储器502也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-onlymemory,rom)、快闪存储器(flashmemory)、硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);存储器502还可以包括上述种类的存储器的组合。

其中,处理器501用于调用所述存储器502存储的程序代码,执行如下操作:

当检测到数据处理时延大于设定阈值时,在向namenode发送的心跳信息中设置节点异常信息,以供namenode基于节点异常信息定位该datanode。

在本实施例中,对设定阈值不做具体限定,设定阈值可以是工程师根据工程经验设置的检测异常节点的最佳阈值,也可以是通过有限次实验得到的检测异常节点的最佳阈值,也可以是通过有限次计算机仿真得到的检测异常节点的最佳阈值。

其中,心跳信息的产生方式:datanode基于预置的心跳信息发送周期,向namenode发送心跳信息。

在本实施例中,对心跳信息发送周期不做具体限定。

可选的,数据处理时延至少包括以下之一:从接收到报文开始,至将该报文传输至下一datanode的报文传输时延、从接收到磁盘访问指令开始至完成该磁盘访问指令对应访问操作的磁盘访问时延;

其中,检测到数据处理时延大于设定阈值的方式,包括但不限于:

检测到数据处理时延中所包含的任一时延大于设定阈值。可选的,节点异常信息包括但不限于:该datanode的标识信息;或者,该数据处理时延和该datanode的标识信息。

可选的,磁盘访问指令包括但不限于:磁盘写入指令和/或磁盘读取指令。

可选的,报文传输时延的确定方式包括但不限于:当接收到报文时,进行第一打点操作,得到第一时间点;

当将该报文传输至下一datanode时,进行第二打点操作,得到第二时间点;

基于第一时间点和第二时间点,得到报文传输时延。

可选的,磁盘访问时延的确定方式至少包括以下方式之一:

方式一,当接收到磁盘访问指令时,进行第三打点操作,得到第三时间点;

当完成磁盘访问指令对应的访问操作时,进行第四打点操作,得到第四时间点;

基于第三时间点和第四时间点,得到磁盘访问时延。

方式二,当接收到磁盘访问指令时,进行第三打点操作,得到第三时间点;

当执行磁盘访问指令对应的每一访问操作时,分别进行对应的第五打点操作,得到每一访问操作对应的第五时间点;

基于第三时间点,和每一访问操作对应的第五时间点,得到磁盘访问时延;其中,磁盘访问时延包括:第三时间点,和每一访问操作对应的第五时间点。

例如:在方式二中,当接收到磁盘写入指令时,进行第三打点操作,得到第三时间点;

基于datanode中预置的磁盘访问路径:datanode->fsdatasetimpl->volumelist,根据预置的fsvolumeimpl类,依次执行磁盘写入指令对应的每一访问操作;

创建fsvolumemetric类;

其中,volumelist包括:配置文件中各个文件写入磁盘的目录;

fsvolumeimpl类包括:创建文件的方法;

通过fsvolumemetric类检控执行磁盘写入指令对应的每一访问操作,并通过fsvolumemetric类进行对应的第五打点操作,得到每一访问操作对应的第五时间点;

基于第三时间点,和每一访问操作对应的第五时间点,通过fsvolumemetric类得到磁盘访问时延;其中,磁盘访问时延包括:第三时间点,和每一访问操作对应的第五时间点。

通过datanode对自身的数据处理时延进行检测,能够有效检测异常的datanode;通过将数据处理时延与设定阈值进行比较,在数据处理时延大于设定阈值的情况下,在向namenode发送的心跳信息中设置节点异常信息,避免了每个datanode都在向namenode发送的心跳信息中设置检测信息,进而导致namenode处理检测信息负担过大的缺陷,通过namenode处理节点异常信息,有效降低了namenode的信息处理负担。

通过在节点异常信息中设置该datanode的标识信息,namenode能够根据该datanode的标识信息,对异常的datanode进行准确定位;通过在节点异常信息中设置该数据处理时延,能够使namenode准确定位异常的datanode之后,呈现该数据处理时延,以供用户对异常的datanode进行准确的故障定位。

本发明第七实施例所述的一种datanode,通过检测自身的数据处理时延,实现了对hdfs集群异常节点的精确检测,有效提高了hdfs集群异常节点的检测精度;同时通过在向namenode发送的心跳信息中设置节点异常信息,有效的提高了namenode基于节点异常信息对hdfs集群异常节点的定位精度。

本发明第八实施例,一种namenode,设置于hdfs集群中,如图5所示,该namenode包括以下组成部分:

处理器801和存储器802。在本发明的一些实施例中,处理器801和存储器802可通过总线或者其它方式连接。

处理器801可以是通用处理器,例如中央处理器(centralprocessingunit,cpu),还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,asic),或者是被配置成实施本发明实施例的一个或多个集成电路。其中,存储器802用于存储所述处理器801的可执行指令;

存储器802,用于存储程序代码,并将该程序代码传输给处理器801。存储器802可以包括易失性存储器(volatilememory),例如随机存取存储器(randomaccessmemory,ram);存储器802也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-onlymemory,rom)、快闪存储器(flashmemory)、硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);存储器802还可以包括上述种类的存储器的组合。

其中,处理器801用于调用所述存储器802存储的程序代码,执行如下操作:

1)接收datanode发送的心跳信息;

其中,心跳信息的产生方式:datanode基于预置的心跳信息发送周期,向namenode发送心跳信息。

在本实施例中,对心跳信息发送周期不做具体限定。

2)在检测到心跳信息中携带节点异常信息的情况下,对发出心跳信息的datanode进行定位。

其中,节点异常信息的产生方式:datanode在检测到自身的数据处理时延大于设定阈值时,将节点异常信息设置于向namenode发送的心跳信息中。

通过对心跳信息中是否携带节点异常信息进行检测,实现了对异常datanode进行精确定位。

本发明第八实施例所述的一种namenode,通过datanode检测自身的数据处理时延,实现了对hdfs集群异常节点的精确检测,有效提高了hdfs集群异常节点的检测精度;同时通过检测datanode在向namenode发送的心跳信息中设置节点异常信息,有效的提高了namenode基于节点异常信息对hdfs集群异常节点的定位精度。

本发明第九实施例,一种namenode,设置于hdfs集群中,如图5所示,该namenode包括以下组成部分:

处理器801和存储器802。在本发明的一些实施例中,处理器801和存储器802可通过总线或者其它方式连接。

处理器801可以是通用处理器,例如中央处理器(centralprocessingunit,cpu),还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,asic),或者是被配置成实施本发明实施例的一个或多个集成电路。其中,存储器802用于存储所述处理器801的可执行指令;

存储器802,用于存储程序代码,并将该程序代码传输给处理器801。存储器802可以包括易失性存储器(volatilememory),例如随机存取存储器(randomaccessmemory,ram);存储器802也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-onlymemory,rom)、快闪存储器(flashmemory)、硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);存储器802还可以包括上述种类的存储器的组合。

其中,处理器801用于调用所述存储器802存储的程序代码,执行如下操作:

1)接收datanode发送的心跳信息;

其中,心跳信息的产生方式:datanode基于预置的心跳信息发送周期,向namenode发送心跳信息。

在本实施例中,对心跳信息发送周期不做具体限定。

2)在检测到心跳信息中携带节点异常信息的情况下,对发出心跳信息的datanode进行定位。

其中,节点异常信息的产生方式:datanode在检测到自身的数据处理时延大于设定阈值时,将节点异常信息设置于向namenode发送的心跳信息中。

通过对心跳信息中是否携带节点异常信息进行检测,实现了对异常datanode进行精确定位。

可选的,节点异常信息包括但不限于:发出心跳信息的datanode的标识信息;或者,该数据处理时延和发出心跳信息的datanode的标识信息。

通过在节点异常信息中设置该datanode的标识信息,namenode能够根据该datanode的标识信息,对异常的datanode进行准确定位;通过在节点异常信息中设置该数据处理时延,能够使namenode准确定位异常的datanode之后,呈现该数据处理时延,以供用户对异常的datanode进行准确的故障定位。

本发明第九实施例所述的一种namenode,通过datanode检测自身的数据处理时延,实现了对hdfs集群异常节点的精确检测,有效提高了hdfs集群异常节点的检测精度;同时通过检测datanode在向namenode发送的心跳信息中设置节点异常信息,有效的提高了namenode基于节点异常信息对hdfs集群异常节点的定位精度。

本发明第十实施例,一种计算机可读存储介质。

计算机存储介质可以是ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、移动硬盘、cd-rom或者本领域已知的任何其他形式的存储介质。

计算机可读存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现本发明第一实施例至本发明第五实施例中任一实施例中部分或全部步骤。

本发明第十实施例中所述的一种计算机可读存储介质,存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,能够通过datanode检测自身的数据处理时延,实现了对hdfs集群异常节点的精确检测,有效提高了hdfs集群异常节点的检测精度;同时通过datanode在向namenode发送的心跳信息中设置节点异常信息,有效的提高了namenode基于节点异常信息对hdfs集群异常节点的定位精度。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1