Hadoop分布式文件系统的副本存取方法、装置和Hadoop分布式文件系统的制作方法

文档序号:7800107阅读:239来源:国知局
Hadoop分布式文件系统的副本存取方法、装置和Hadoop分布式文件系统的制作方法
【专利摘要】本发明公开了一种Hadoop分布式文件系统的副本存取方法、装置和Hadoop分布式文件系统,以均衡系统负载从而提高读/写性能。所述方法包括:获取Hadoop分布式文件系统中数据节点的节点负载信息;在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点;在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。本发明提供的方法充分考虑到了各个数据节点的节点负载信息,因而能够均衡系统负载,提升读写操作的性能。
【专利说明】Hadoop分布式文件系统的副本存取方法、装置和Hadoop分 布式文件系统

【技术领域】
[0001] 本发明涉及分布式架构领域,具体涉及Hadoop分布式文件系统的副本存取方法、 装置和Hadoop分布式文件系统。

【背景技术】
[0002] 分布式文件系统(Hadoop Distributed File System,HDFS)是一个主从结构,一 个HDFS集群是由一个名字节点和至少一个数据节点组成。HDFS集群中的名字节点是一个 管理文件命名空间和调节客户端访问文件的主服务器,主要操作文件命名空间的文件或目 录操作,例如,打开、关闭和重命名等等,同时,名字节点还用于确定块与数据节点的映射。 HDFS集群中的数据节点存储具体的数据文件,负责来自文件系统客户的读写请求,同时还 要执行块的创建、删除和来自名字节点的块复制指令。
[0003] HDFS对外开放文件命名空间并允许用户数据以文件形式存储,内部机制是将一个 文件分割成一个或多个块进行存储,同时每一个数据块又保存有多个副本。以数据块的副 本是3个副本为例,HDFS对副本的放置策略为:名字节点将一个副本存放在本地节点即客 户端所在节点上,第二个副本存放在与客户端所在节点处于同一个机架的另一个节点上, 最后一个副本放在不同机架的节点上。仍以数据块的副本是3个副本为例,HDFS对副本的 读取策略是原则上优先访问存放副本的节点中与客户端的距离最近的节点,具体为:若要 访问的数据块的一个副本存在于客户端,则客户端优先从本地读取该数据块,否则,若该数 据块的一个副本与客户端在同一个机架上,则客户端优先读取这个同机架上的副本,若该 数据块既没有一个副本存在客户端,又没有一个副本与客户端在同一个机架上,则随机选 择一个数据块的副本进行读取。
[0004] 上述现有技术提供的HDFS对副本的放置和读取策略减少了机架间的数据传输, 提高了写操作的效率。另一方面,由于机架的错误远远比节点的错误少,因此,这种策略不 会影响到数据的可靠性和可用性。与此同时,因为数据块只存放在两个不同的机架上,所以 上述策略减少了读取数据时需要的网络传输总带宽。
[0005] 然而,上述现有技术提供的HDFS副本的放置和读取策略只考虑了写/读操作的网 络开销,而未考虑系统注入CPU和磁盘等其他负载的负载均衡,可能会导致系统负载严重 不均,从而影响写/读操作的性能。


【发明内容】

[0006] 本发明提供Hadoop分布式文件系统的副本存取方法、装置和Hadoop分布式文件 系统,以均衡系统负载从而提高读/写性能。
[0007] 本发明实施例提供一种Hadoop分布式文件系统的副本存取方法,所述方法包括:
[0008] 获取Hadoop分布式文件系统中数据节点的节点负载信息;
[0009] 在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客户端所在 数据节点或者负载最低的数据节点;
[0010] 在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点 读取。
[0011] 本发明另一实施例提供一种Hadoop分布式文件系统的副本存取装置,所述装置 包括:
[0012] 获取模块,用于获取Hadoop分布式文件系统中数据节点的节点负载信息;
[0013] 存放模块,用于在存放副本时,根据所述节点负载信息,将同一数据块的副本存放 在客户端所在数据节点或者负载最低的数据节点;
[0014] 读取模块,用于在读取所述副本时,从负载最低的数据节点和/或与客户端距离 最小的数据节点读取。
[0015] 本发明另一实施例提供一种Hadoop分布式文件系统,所述系统包括名字节点和 至少一个数据节点,所述名字节点包括获取模块、存放模块和读取模块;
[0016] 所述数据节点,用于存放数据块的副本,将本节点的节点负载信息传递至所述名 字节点;
[0017] 所述获取模块,用于获取Hadoop分布式文件系统中数据节点的节点负载信息;
[0018] 所述存放模块,用于根据所述节点负载信息,将同一数据块的副本存放在客户端 所在数据节点或者负载最低的数据节点;
[0019] 所述读取模块,用于在读取所述副本时,从负载最低的数据节点和/或与客户端 距离最小的数据节点读取。
[0020] 从上述本发明实施例可知,由于可以根据获取的节点负载信息,将同一数据块的 副本存放在客户端所在数据节点或者负载最低的数据节点,在读取所述副本时,从负载最 低的数据节点和/或与客户端距离最小的数据节点读取,因此,与现有技术提供的HDFS副 本的放置和读取策略只考虑了写/读操作的网络开销,而未考虑系统注入CPU和磁盘等其 他负载的负载均衡相比,本发明提供的方法充分考虑到了各个数据节点的节点负载信息, 因而能够均衡系统负载,提升读写操作的性能。

【专利附图】

【附图说明】
[0021] 图1是本发明实施例提供的Hadoop分布式文件系统的副本存取方法的基本流程 示意图;
[0022] 图2是本发明实施例提供的按照数据节点与客户端的距离大小以及数据节点的 负载大小进行升序排序形成最终数据节点列表的示意图;
[0023] 图3是本发明实施例提供的Hadoop分布式文件系统的副本存取装置逻辑结构示 意图;
[0024] 图4是本发明另一实施例提供的Hadoop分布式文件系统的副本存取装置逻辑结 构示意图;
[0025] 图5是本发明另一实施例提供的Hadoop分布式文件系统的副本存取装置逻辑结 构示意图;
[0026] 图6是本发明另一实施例提供的Hadoop分布式文件系统的副本存取装置逻辑结 构示意图;
[0027] 图7是本发明实施例提供的Hadoop分布式文件系统的逻辑结构示意图;
[0028] 图8是本发明另一实施例提供的Hadoop分布式文件系统的逻辑结构示意图。

【具体实施方式】
[0029] 本发明提供Hadoop分布式文件系统的副本存取方法,所述方法包括:获取Hadoop 分布式文件系统中数据节点的节点负载信息;根据所述节点负载信息,将同一数据块的副 本存放在客户端所在数据节点或者负载最低的数据节点;在读取所述副本时,从负载最低 的数据节点和/或与客户端距离最小的数据节点读取。本发明还提供相应的Hadoop分布 式文件系统的副本存取装置和Hadoop分布式文件系统。以下分别进行详细说明。
[0030] 本发明实施例的Hadoop分布式文件系统的副本存取方法可应用于Hadoop分布式 文件系统的名字节点。本发明实施例提供的Hadoop分布式文件系统的副本存取方法的基 本流程可参考图1,主要包括步骤S101至步骤S103,详细说明如下:
[0031] S101,获取Hadoop分布式文件系统中数据节点的节点负载信息。
[0032] 数据节点的节点负载信息包括CPU负载、网络负载、磁盘10负载和磁盘空间负载 中的一种或者其任意组合。作为本发明一个实施例,数据节点的节点负载可以按照以下方 式计算,即节点负载ifCPU负载+w 2*网络负载+w3*磁盘10负载+w4*磁盘空间负载,其 中,Wi、w 2、w3和w4为预置的0到1之间的权重系数。
[0033] 数据节点和名字节点在建立通信连接时会有握手这一环节,在本发明一个实施例 中,数据节点可以将其节点负载信息携带在其与名字节点握手时发送的握手信息中。因此, 作为本发明一个实施例,名字节点获取Hadoop分布式文件系统中数据节点的节点负载信 息可以是通过与所述数据节点握手,从握手信息中提取Hadoop分布式文件系统中数据节 点的节点负载信息。名字节点将这些数据节点的节点负载信息予以保存,并在下次收到同 一数据节点的节点负载信息时予以更新。
[0034] S102,在存放副本时,根据步骤S101获取的节点负载信息,将同一数据块的副本 存放在客户端所在数据节点或者负载最低的数据节点。
[0035] 在本发明实施例中,客户端也有可能存在数据节点。若客户端存在数据节点,则将 同一数据块B的副本Q存放在客户端所在数据节点,否则,将所述副本Q存放在Hadoop分 布式文件系统中负载最低的数据节点队,此处,副本Q是所述同一数据块的副本中的任意 一个副本。
[0036] 数据块B的副本可能不止一个,在将同一数据块B的副本Q存放在客户端所在数 据节点,或者,将所述副本q存放在Hadoop分布式文件系统中负载最低的数据节点队后, 再将所述同一数据块B的副本&存放在数据节点%,此处,副本&是所述同一数据块B的 副本中不同于所述副本Q的任意一个副本,数据节点%是与数据节点队属同一机架并且 除数据节点队之外负载最低的数据节点。
[0037] 若数据块B的副本不止副本Q和副本?_,则将所述同一数据块B的副本Ck存放在 数据节点N k,此处,副本Ck是所述同一数据块的副本中不同于所述副本Q和副本&的任意 一个副本;数据节点N k是与所述数据节点队不属同一机架并且除所述数据节点队和数据 节点%之外负载最低的数据节点,S卩,假设数据节点队和数据节点%同属机架C,则数据节 点N k是不同于机架C的另一机架D上的数据节点,并且除数据节点队和数据节点%之外, 数据节点Nk的负载最低。
[0038] 若数据块B的副本不止副本Q、副本&和副本Ck,则将所述同一数据块的剩余副 本存放在数据节点队,此处,同一数据块的剩余副本是所述同一数据块B的副本中不同于所 述副本 Ci、副本&和副本Ck的任意副本,数据节点队是除所述数据节点队、数据节点%和 数据节点N k之外,Hadoop分布式文件系统中负载最低的数据节点。
[0039] 从上述副本的存放策略可知,副本优先存放在客户端所在数据节点,其次是存放 在负载最低的数据节点,再其次是存放在与客户端距离较小并且负载最低的数据节点,例 如,与客户端同属一个机架的数据节点,其与客户端的距离可以定义为2,与客户端不同属 一个机架的数据节点,其与客户端的距离可以定义为4,则显然,与客户端同属一个机架的 数据节点和与客户端不同属一个机架的数据节点相比,前者与客户端的距离小于后者与客 户端的距离。
[0040] S103,在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数 据节点读取。
[0041] 在读取同一数据块的副本时,按照负载优先原则读取,即优先从负载较小的数据 节点读取同一数据块的副本,在这一大前提下,从与客户端距离较小的数据节点读取同一 数据块的副本,具体地,从负载最低的数据节点和/或与客户端距离最小的数据节点读取 同一数据块的副本包括如下步骤S1031至步骤S1033 :
[0042] S1031,将负载小于预置门限的数据节点按照其与客户端的距离大小进行升序排 序得到初级数据节点列表。
[0043] 数据节点与客户端的距离大小定义和【背景技术】中提到的现有技术相同,例如,在 客户端所在的数据节点,其与客户端的距离定义为〇,与客户端所在数据节点同属一个机架 的数据节点,其与客户端的距离可定义为2,与客户端所在数据节点不同属一个机架的数据 节点,其与客户端的距离可定义为4,等等。在本发明实施例中,可以先将负载小于预置门限 的数据节点筛选出来,再按照其与客户端的距离进行升序排序得到初级数据节点列表。例 如,假设数据节点&至数据节点N n中,其负载均小于预置门限的数据节点包括数据节点& 至数据节点Nm,数据节点&至数据节点N m与客户端的距离依次定义为Si至Sm,进一步假设 Si〈S2〈…,则数据节点&至数据节点Nm按照其与客户端的距离大小进行升序排序得 到的初级数据节点列表如附图2。
[0044] S1032,将负载大于预置门限的数据节点按照其负载大小进行升序排序在初级数 据节点列表后得到最终数据节点列表。
[0045] 仍以步骤S1031中的数据节点&至数据节点Nn为例,假设负载均大于预置门限的 数据节点包括数据节点N m+1至数据节点Nn,数据节点Nm+1至数据节点Nn的负载依次定义为 Lm+1至Ln,进一步假设Lm+1〈Lm+2〈···〈fL,则将数据节点N m+1至数据节点Nn按照其负载大小 进行升序排序在初级数据节点列表后得到的最终数据节点列表如附图2。
[0046] S1033,从最终数据节点列表的首个数据节点开始,优先从排序在前的数据节点读 取同一数据块的副本。
[0047] 如附图2所示的最终数据节点列表,优先从数据节点&开始读取同一数据块B的 副本。若数据节点K没有同一数据块B的副本,则再从数据节点N 2读取同一数据块B的副 本。若数据节点N2没有同一数据块B的副本,则从数据节点N3读取同一数据块B的副本, 依次类推,直至最后一个数据节点Nn。
[0048] 从上述本发明实施例提供的Hadoop分布式文件系统的副本存取方法可知,由于 可以根据获取的节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载 最低的数据节点,在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的 数据节点读取,因此,与现有技术提供的HDFS副本的放置和读取策略只考虑了写/读操作 的网络开销,而未考虑系统注入CPU和磁盘等其他负载的负载均衡相比,本发明提供的方 法充分考虑到了各个数据节点的节点负载信息,因而能够均衡系统负载,提升读写操作的 性能。
[0049] 下面对用于执行上述Hadoop分布式文件系统的副本存取方法的本发明实施例的 Hadoop分布式文件系统的副本存取装置进行说明,其基本逻辑结构参考图3。为了便于说 明,仅仅示出了与本发明实施例相关的部分。附图3示例的Hadoop分布式文件系统的副本 存取装置可以是Hadoop分布式文件系统中的名字节点或该名字节点中的某个功能模块。 附图3示例的Hadoop分布式文件系统的副本存取装置主要包括获取模块301、存放模块 302和读取模块303,各模块详细说明如下 :
[0050] 获取模块301,用于获取Hadoop分布式文件系统中数据节点的节点负载信息;
[0051] 存放模块302,用于在存放副本时,根据所述节点负载信息,将同一数据块的副本 存放在客户端所在数据节点或者负载最低的数据节点;
[0052] 读取模块303,用于在读取所述副本时,从负载最低的数据节点和/或与客户端距 离最小的数据节点读取。
[0053] 需要说明的是,以上附图3示例的Hadoop分布式文件系统的副本存取装置的实 施方式中,各功能模块的划分仅是举例说明,实际应用中可以根据需要,例如相应硬件的配 置要求或者软件的实现的便利考虑,而将上述功能分配由不同的功能模块完成,即将所述 Hadoop分布式文件系统的副本存取装置的内部结构划分成不同的功能模块,以完成以上描 述的全部或者部分功能。而且,实际应用中,本实施例中的相应的功能模块可以是由相应的 硬件实现,也可以由相应的硬件执行相应的软件完成,例如,前述的存放模块,可以是具有 执行前述根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负 载最低的数据节点的硬件,例如存放器,也可以是能够执行相应计算机程序从而完成前述 功能的一般处理器或者其他硬件设备;再如前述的读取模块,可以是在读取所述副本时,从 负载最低的数据节点和/或与客户端距离最小的数据节点读取功能的硬件,例如读取器, 也可以是能够执行相应计算机程序从而完成前述功能的一般处理器或者其他硬件设备(本 说明书提供的各个实施例都可应用上述描述原则)。
[0054] 附图3示例的获取模块301可以包括提取单元401,如附图4所示本发明另一实施 例提供的Hadoop分布式文件系统的副本存取装置。提取单元401用于通过与所述数据节 点握手,从握手信息中提取Hadoop分布式文件系统中数据节点的节点负载信息。
[0055] 附图3示例的存放模块302可以包括第一存放单元501、第二存放单元502、第三 存放单元503和第四存放单元,如附图5所示本发明另一实施例提供的Hadoop分布式文件 系统的副本存取装置,其中:
[0056] 第一存放单元501,用于若所述客户端存在数据节点,则将所述同一数据块的副本 Q存放在客户端所在数据节点,否则,将所述副本Q存放在Hadoop分布式文件系统中负载 最低的数据节点Ni,所述副本Ci是所述同一数据块的副本中的任意一个副本;
[0057] 第二存放单元502,用于将所述同一数据块的副本q存放在数据节点%,所述副本 Cj是所述同一数据块的副本中不同于所述副本Ci的任意一个副本,所述数据节点%是与所 述数据节点Ni属同一机架并且除所述数据节点Ni之外负载最低的数据节点;
[0058] 第三存放单元503,用于将所述同一数据块的副本Ck存放在数据节点Nk,所述副本 ck是所述同一数据块的副本中不同于所述副本Ci和副本的任意一个副本,所述数据节点 Nk是与所述数据节点Ni不属同一机架并且除所述数据节点Ni和数据节点%之外负载最低 的数据节点;
[0059] 第四存放单元504,用于将所述同一数据块的剩余副本存放在数据节点队,所述同 一数据块的剩余副本是所述同一数据块的副本中不同于所述副本Q、副本和副本C k的任 意副本,所述数据节点队是除所述数据节点队、数据节点Nj和数据节点Nk之外,Hadoop分 布式文件系统中负载最低的数据节点。
[0060] 附图3示例的读取模块303可以包括第一排序单元601、第二排序单元602、和优 先读取单元603,如附图6所示本发明另一实施例提供的Hadoop分布式文件系统的副本存 取装置,其中:
[0061] 第一排序单元601,用于将负载小于预置门限的数据节点按照其与客户端的距离 大小进行升序排序得到初级数据节点列表;
[0062] 第二排序单元602,用于将负载大于预置门限的数据节点按照其负载大小进行升 序排序在所述初级数据节点列表后得到最终数据节点列表;
[0063] 优先读取单元603,用于从所述最终数据节点列表的首个数据节点开始,优先从排 序在前的数据节点读取所述副本。
[0064] 请参阅附图7,是本发明实施例提供的Hadoop分布式文件系统的逻辑结构示意 图。附图7示例的Hadoop分布式文件系统主要包括名字节点701和至少一个数据节点702, 其中,名字节点701包括获取模块703、存放模块704和读取模块705,各模块详细说明如 下:
[0065] 数据节点702,用于存放数据块的副本,将本节点的节点负载信息传递至名字节点 701 ;
[0066] 获取模块703,用于获取Hadoop分布式文件系统中数据节点702的节点负载信 息;
[0067] 存放模块704,用于在存放副本时,根据所述节点负载信息,将同一数据块的副本 存放在客户端所在数据节点或者负载最低的数据节点;
[0068] 读取模块705,用于在读取所述副本时,从负载最低的数据节点和/或与客户端距 离最小的数据节点读取。
[0069] 附图7示例的存放模块704包括第一存放单元801、第二存放单元802、第三存放 单元803和第四存放单元804,读取模块705包括第一排序单元805、第二排序单元806和 优先读取单元807,如附图7所示本发明另一实施例提供的Hadoop分布式文件系统的副本 存取装置,其中:
[0070] 第一存放单元801,用于若所述客户端存在数据节点,则将所述同一数据块的副本 Q存放在客户端所在数据节点,否则,将所述副本Q存放在Hadoop分布式文件系统中负载 最低的数据节点Ni,所述副本Ci是所述同一数据块的副本中的任意一个副本;
[0071] 第二存放单元802,用于将所述同一数据块的副本q存放在数据节点%,所述副本 Cj是所述同一数据块的副本中不同于所述副本Ci的任意一个副本,所述数据节点%是与所 述数据节点Ni属同一机架并且除所述数据节点Ni之外负载最低的数据节点;
[0072] 第三存放单元803,用于将所述同一数据块的副本Ck存放在数据节点Nk,所述副本 C k是所述同一数据块的副本中不同于所述副本Q和副本的任意一个副本,所述数据节点 Nk是与所述数据节点队不属同一机架并且除所述数据节点队和数据节点%之外负载最低 的数据节点;
[0073] 第四存放单元804,用于将所述同一数据块的剩余副本存放在数据节点队,所述同 一数据块的剩余副本是所述同一数据块的副本中不同于所述副本Q、副本和副本C k的任 意副本,所述数据节点队是除所述数据节点队、数据节点Nj和数据节点Nk之外,Hadoop分 布式文件系统中负载最低的数据节点。
[0074] 第一排序单元805,用于将负载小于预置门限的数据节点按照其与客户端的距离 大小进行升序排序得到初级数据节点列表;
[0075] 第二排序单元806,用于将负载大于预置门限的数据节点按照其负载大小进行升 序排序在所述初级数据节点列表后得到最终数据节点列表;
[0076] 优先读取单元807,用于从所述最终数据节点列表的首个数据节点开始,优先从排 序在前的数据节点读取所述副本。
[0077] 需要说明的是,上述装置各模块/单元之间的信息交互、执行过程等内容,由于与 本发明方法实施例基于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容 可参见本发明方法实施例中的叙述,此处不再赘述。
[0078] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可 以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存 储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。
[0079] 以上对本发明实施例所提供的Hadoop分布式文件系统的副本存取方法、装置和 Hadoop分布式文件系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方 式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对 于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变 之处,综上所述,本说明书内容不应理解为对本发明的限制。
【权利要求】
1. 一种Hadoop分布式文件系统的副本存取方法,其特征在于,所述方法包括: 获取Hadoop分布式文件系统中数据节点的节点负载信息; 在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据 节点或者负载最低的数据节点; 在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读 取。
2. 根据权利要求1所述的方法,其特征在于,所述获取Hadoop分布式文件系统中数据 节点的节点负载信息,包括: 通过与所述数据节点握手,从握手信息中提取Hadoop分布式文件系统中数据节点的 节点负载信息。
3. 根据权利要求1所述的方法,其特征在于,所述在存放副本时,根据所述节点负载信 息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点,包括: 若所述客户端存在数据节点,则将所述同一数据块的副本(;存放在客户端所在数据节 点,否则,将所述副本Q存放在Hadoop分布式文件系统中负载最低的数据节点队,所述副 本Q是所述同一数据块的副本中的任意一个副本; 将所述同一数据块的副本&存放在数据节点%,所述副本&是所述同一数据块的副本 中不同于所述副本Q的任意一个副本,所述数据节点%是与所述数据节点队属同一机架 并且除所述数据节点队之外负载最低的数据节点; 将所述同一数据块的副本Ck存放在数据节点Nk,所述副本Ck是所述同一数据块的副本 中不同于所述副本Q和副本&的任意一个副本,所述数据节点Nk是与所述数据节点队不 属同一机架并且除所述数据节点队和数据节点%之外负载最低的数据节点; 将所述同一数据块的剩余副本存放在数据节点队,所述同一数据块的剩余副本是所述 同一数据块的副本中不同于所述副本、副本和副本Ck的任意副本,所述数据节点队是 除所述数据节点队、数据节点%和数据节点N k之外,Hadoop分布式文件系统中负载最低的 数据节点。
4. 根据权利要求1所述的方法,其特征在于,所述在读取所述副本时,从负载最低的数 据节点和/或与客户端距离最小的数据节点读取,包括: 将负载小于预置门限的数据节点按照其与客户端的距离大小进行升序排序得到初级 数据节点列表; 将负载大于预置门限的数据节点按照其负载大小进行升序排序在所述初级数据节点 列表后得到最终数据节点列表; 从所述最终数据节点列表的首个数据节点开始,优先从排序在前的数据节点读取所述 副本。
5. -种Hadoop分布式文件系统的副本存取装置,其特征在于,所述装置包括: 获取模块,用于获取Hadoop分布式文件系统中数据节点的节点负载信息; 存放模块,用于在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客 户端所在数据节点或者负载最低的数据节点; 读取模块,用于在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小 的数据节点读取。
6. 根据权利要求5所述的装置,其特征在于,所述获取模块包括: 提取单元,用于通过与所述数据节点握手,从握手信息中提取Hadoop分布式文件系统 中数据节点的节点负载信息。
7. 根据权利要求5所述的装置,其特征在于,所述存放模块包括: 第一存放单元,用于若所述客户端存在数据节点,则将所述同一数据块的副本Q存放 在客户端所在数据节点,否则,将所述副本Q存放在Hadoop分布式文件系统中负载最低的 数据节点队,所述副本Q是所述同一数据块的副本中的任意一个副本; 第二存放单元,用于将所述同一数据块的副本&存放在数据节点%,所述副本&是所 述同一数据块的副本中不同于所述副本Q的任意一个副本,所述数据节点%是与所述数据 节点队属同一机架并且除所述数据节点队之外负载最低的数据节点; 第三存放单元,用于将所述同一数据块的副本Ck存放在数据节点Nk,所述副本Ck是所 述同一数据块的副本中不同于所述副本Q和副本&的任意一个副本,所述数据节点Nk是 与所述数据节点队不属同一机架并且除所述数据节点队和数据节点%之外负载最低的数 据节点; 第四存放单元,用于将所述同一数据块的剩余副本存放在数据节点队,所述同一数据 块的剩余副本是所述同一数据块的副本中不同于所述副本Q、副本和副本Ck的任意副 本,所述数据节点队是除所述数据节点队、数据节点Nj和数据节点N k之外,Hadoop分布式 文件系统中负载最低的数据节点。
8. 根据权利要求5所述的装置,其特征在于,所述读取模块包括:。 第一排序单元,用于将负载小于预置门限的数据节点按照其与客户端的距离大小进行 升序排序得到初级数据节点列表; 第二排序单元,用于将负载大于预置门限的数据节点按照其负载大小进行升序排序在 所述初级数据节点列表后得到最终数据节点列表; 优先读取单元,用于从所述最终数据节点列表的首个数据节点开始,优先从排序在前 的数据节点读取所述副本。
9. 一种Hadoop分布式文件系统,其特征在于,所述系统包括名字节点和至少一个数据 节点,所述名字节点包括获取模块、存放模块和读取模块; 所述数据节点,用于存放数据块的副本,将本节点的节点负载信息传递至所述名字节 占 . 所述获取模块,用于获取Hadoop分布式文件系统中数据节点的节点负载信息; 所述存放模块,用于在存放副本时,根据所述节点负载信息,将同一数据块的副本存放 在客户端所在数据节点或者负载最低的数据节点; 所述读取模块,用于在读取所述副本时,从负载最低的数据节点和/或与客户端距离 最小的数据节点读取。
10. 根据权利要求9所述的系统,其特征在于,所述存放模块包括第一存放单元、第二 存放单元、第三存放单元和第四存放单元,所述读取模块包括第一排序单元、第二排序单元 和优先读取单元; 所述第一存放单元,用于若所述客户端存在数据节点,则将所述同一数据块的副本 存放在客户端所在数据节点,否则,将所述副本q存放在Hadoop分布式文件系统中负载最 低的数据节点Ni,所述副本Ci是所述同一数据块的副本中的任意一个副本; 所述第二存放单元,用于将所述同一数据块的副本存放在数据节点%,所述副本?. 是所述同一数据块的副本中不同于所述副本Q的任意一个副本,所述数据节点%是与所述 数据节点队属同一机架并且除所述数据节点队之外负载最低的数据节点; 所述第三存放单元,用于将所述同一数据块的副本Ck存放在数据节点Nk,所述副本Ck 是所述同一数据块的副本中不同于所述副本Q和副本&的任意一个副本,所述数据节点Nk 是与所述数据节点队不属同一机架并且除所述数据节点队和数据节点%之外负载最低的 数据节点; 所述第四存放单元,用于将所述同一数据块的剩余副本存放在数据节点队,所述同一 数据块的剩余副本是所述同一数据块的副本中不同于所述副本Q、副本和副本Ck的任意 副本,所述数据节点队是除所述数据节点队、数据节点Nj和数据节点N k之外,Hadoop分布 式文件系统中负载最低的数据节点。 所述第一排序单元,用于将负载小于预置门限的数据节点按照其与客户端的距离大小 进行升序排序得到初级数据节点列表; 所述第二排序单元,用于将负载大于预置门限的数据节点按照其负载大小进行升序排 序在所述初级数据节点列表后得到最终数据节点列表; 所述优先读取单元,用于从所述最终数据节点列表的首个数据节点开始,优先从排序 在前的数据节点读取所述副本。
【文档编号】H04L29/08GK104156381SQ201410120902
【公开日】2014年11月19日 申请日期:2014年3月27日 优先权日:2014年3月27日
【发明者】袁芳, 李靖, 张宗平, 李鸣亮, 叶剑锋 申请人:深圳信息职业技术学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1