元数据管理方法和系统的制作方法
【技术领域】
[0001]本发明涉及通信领域,特别涉及一种元数据管理方法和系统。
【背景技术】
[0002]文件系统作为操作系统的重要组成部分,通过对操作系统所管理的存储空间进行抽象,为用户提供对象化的、统一的访问接口,避免直接操作物理设备,达到管理资源的目的。文件系统最初只能管理本地磁盘空间,计算机之间则通过文件传输协议(FileTransfer Protocol,简称:FTP)共享文件,但FTP协议不提供与本机文件系统一致的访问接口和对象模型。
[0003]随着计算机被广泛用于生产和生活的各个方面,而单个计算机的存储和计算能力十分有限,通过多台计算机协同管理文件的需求日益增长,并逐渐出现了分布式文件系统。分布式文件系统的发展经历了网络文件系统(Network File System,简称:NFS)、安德鲁文件系统(Andrew File System,简称:AFS)、存储区域网络(Storage Area Network,简称:SAN)、网络附连存储(Network Attached Storage,简称:NAS)、直接访问文件系统(DirectAccess File System,简称:DAFS)等多个阶段。当前比较成熟和应用广泛的是GFS(GoogleFile System)和 HDFS (Hadoop Distributed File System)。
[0004]HDFS是GFS的一个开源实现,是一种基于Java语言的支持数据密集型应用的分布式文件系统,HDFS的特点是具有高度容错性,适合部署在廉价的机器上,能提供高吞吐量的数据访问,非常适合管理大规模数据。
[0005]HDFS系统设计采用主从式(Master-Slave)架构,如附图1所示。一个HDFS集群由一个客户端(Client)、一个元数据节点(Name Node)和多个数据节点(Data Node)组成。客户端可访问元数据节点和数据节点。元数据节点是一个中心主服务器,负责维护文件系统的命名空间和客户端对文件系统的访问。数据节点由多个服务器组成,负责管理存储结点上的存储空间、执行来自元数据节点的指令和客户端的读写请求。
[0006]HDFS管理元数据的设计方案存在如下缺点:
[0007]1.元数据需要被频繁的访问,但不同数据的冷热度不同,即有些数据被访问的频率高,有些数据被访问的频率低。采用单一元数据节点的结构,当存在热度非常高的数据时,磁盘读写性能的瓶颈会严重影响HDFS的工作效率。
[0008]2.HDFS的一个重要应用场景是处理大规模并行数据访问请求,HDFS的单一元数据节点的结构决定其吞吐量不高,不能满足大批量数据读写操作同时进行。
[0009]3.HDFS的一个重要功能是为了支持上层的MapReduce并行计算,单一元数据节点的存储和计算能力十分有限,不具备可扩展性,很难满足大量数据的处理请求。
[0010]4.元数据节点是HDFS的一个中心服务器,负责处理客户端对文件系统的访问请求。如果元数据节点因出现故障而宕机,将使整个HDFS系统瘫痪,造成重大损失。
[0011]随着HDFS运行时间越来越长,HDFS中的文件数量不断增长,元数据的规模也会变得十分庞大,且当前单个服务器的存储和计算能力都十分有限,因此单一的元数据节点在数据总量增长非常迅速时,有可能成为性能瓶颈,导致整个系统的性能降低。
[0012]HDFS中只有一个元数据节点的设计方案简化了系统的体系结构。然而HDFS的一个设计前提是硬件发生故障是常态,因此如何在故障发生后使系统自动快速恢复到正常运行状态是HDFS的一个核心设计目标。
[0013]元数据作为描述数据的数据,其高可用性是至关重要的,只有对元数据管理方法加以优化,保证其高效地读写,不出故障,或发生故障后能迅速恢复,才能达到HDFS的核心设计目标。
【发明内容】
[0014]本发明实施例提供一种元数据管理方法和系统。通过采用服务器集群的方式管理元数据,根据元数据热度的不同对元数据分类,然后按照网络数据复制算法进行备份,该方法分散了单个节点的数据访问和磁盘读写压力,提高整个系统的性能和吞吐量,同时提高整个系统的计算和存储能力。
[0015]根据本发明的一个方面,提供一种元数据管理方法,包括:
[0016]需要备份数据的元数据主节点在备份指定数据时,向元数据集群中的其它元数据主节点发送负载查询请求;
[0017]接收到负载查询请求的元数据主节点统计自身的负载状况,并将负载统计信息上报给需要备份数据的元数据主节点;
[0018]需要备份数据的元数据主节点利用上报的负载统计信息确定目标节点,其中目标节点包括负载最轻的m个元数据主节点,m为大于O的正整数,m的大小与指定数据的数据热度相关联;
[0019]需要备份数据的元数据主节点将指定数据发送给每一个作为目标节点的元数据主节点;
[0020]作为目标节点的元数据主节点接收到指定数据后,将指定数据在本地备份,并在备份成功后向需要备份数据的元数据主节点发送备份成功消息。
[0021]在一个实施例中,需要备份数据的元数据主节点在将指定数据发送给每一个作为目标节点的元数据主节点后,还包括:
[0022]判断是否在预定时间范围内接收到全部作为目标节点的元数据主节点发送的备份成功消息;
[0023]若未能在预定时间范围内接收到全部作为目标节点的元数据主节点发送的备份成功消息,则将目标节点中没有发送备份成功消息的元数据主节点重新确定为目标节点;
[0024]然后执行需要备份数据的元数据主节点将指定数据发送给每一个作为目标节点的元数据主节点的步骤。
[0025]在一个实施例中,元数据主节点在本地保存数据时,将保存的数据发送给与自身相关联的元数据从节点进行存储,以便元数据从节点与元数据主节点实现数据同步。
[0026]在一个实施例中,元数据从节点在判断与其相关联的元数据主节点出现故障时,将自身的网络参数修改为元数据主节点参数,以作为元数据集群中新的元数据主节点。
[0027]在一个实施例中,出现故障的元数据主节点故障恢复后,将自身的网络参数修改为元数据从节点参数,以作为元数据集群中新的元数据从节点,其中新的元数据从节点与新的元数据主节点相关联;
[0028]新的元数据从节点向新的元数据主节点发送自身的数据快照,以便新的元数据主节点根据数据快照,将新的元数据从节点缺失的数据发送给新的元数据从节点进行存储,从而新的元数据从节点与新的元数据主节点实现数据同步。
[0029]根据本发明的另一方面,提供一种元数据管理系统,包括多个元数据主节点,其中:
[0030]需要备份数据的元数据主节点,用于在备份指定数据时,向元数据集群中的其它元数据主节点发送负载查询请求;利用上报的负载统计信息确定目标节点,其中目标节点包括负载最轻的m个元数据主节点,m为大于O的正整数,m的大小与指定数据的数据热度相关联;将指定数据发送给每一个作为目