HADOOP分布式文件系统的副本存取方法、装置和HADOOP分布式文件系统.pdf

上传人:Y94****206 文档编号:624863 上传时间:2018-02-26 格式:PDF 页数:14 大小:1.24MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410120902.9

申请日:

2014.03.27

公开号:

CN104156381A

公开日:

2014.11.19

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 17/30申请日:20140327|||公开

IPC分类号:

G06F17/30; G06F9/50; H04L29/08

主分类号:

G06F17/30

申请人:

深圳信息职业技术学院

发明人:

袁芳; 李靖; 张宗平; 李鸣亮; 叶剑锋

地址:

518172 广东省深圳市龙岗区龙翔大道2188号

优先权:

专利代理机构:

深圳中一专利商标事务所 44237

代理人:

张全文

PDF下载: PDF下载
内容摘要

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

权利要求书

1.  一种Hadoop分布式文件系统的副本存取方法,其特征在于,所述方法包括:
获取Hadoop分布式文件系统中数据节点的节点负载信息;
在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点;
在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。

2.
  根据权利要求1所述的方法,其特征在于,所述获取Hadoop分布式文件系统中数据节点的节点负载信息,包括:
通过与所述数据节点握手,从握手信息中提取Hadoop分布式文件系统中数据节点的节点负载信息。

3.
  根据权利要求1所述的方法,其特征在于,所述在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点,包括:
若所述客户端存在数据节点,则将所述同一数据块的副本Ci存放在客户端所在数据节点,否则,将所述副本Ci存放在Hadoop分布式文件系统中负载最低的数据节点Ni,所述副本Ci是所述同一数据块的副本中的任意一个副本;
将所述同一数据块的副本Cj存放在数据节点Nj,所述副本Cj是所述同一数据块的副本中不同于所述副本Ci的任意一个副本,所述数据节点Nj是与所述数据节点Ni属同一机架并且除所述数据节点Ni之外负载最低的数据节点;
将所述同一数据块的副本Ck存放在数据节点Nk,所述副本Ck是所述同一数据块的副本中不同于所述副本Ci和副本Cj的任意一个副本,所述数据节点Nk 是与所述数据节点Ni不属同一机架并且除所述数据节点Ni和数据节点Nj之外负载最低的数据节点;
将所述同一数据块的剩余副本存放在数据节点Nl,所述同一数据块的剩余副本是所述同一数据块的副本中不同于所述副本Ci、副本Cj和副本Ck的任意副本,所述数据节点Nl是除所述数据节点Ni、数据节点Nj和数据节点Nk之外,Hadoop分布式文件系统中负载最低的数据节点。

4.
  根据权利要求1所述的方法,其特征在于,所述在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取,包括:
将负载小于预置门限的数据节点按照其与客户端的距离大小进行升序排序得到初级数据节点列表;
将负载大于预置门限的数据节点按照其负载大小进行升序排序在所述初级数据节点列表后得到最终数据节点列表;
从所述最终数据节点列表的首个数据节点开始,优先从排序在前的数据节点读取所述副本。

5.
  一种Hadoop分布式文件系统的副本存取装置,其特征在于,所述装置包括:
获取模块,用于获取Hadoop分布式文件系统中数据节点的节点负载信息;
存放模块,用于在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点;
读取模块,用于在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。

6.
  根据权利要求5所述的装置,其特征在于,所述获取模块包括:
提取单元,用于通过与所述数据节点握手,从握手信息中提取Hadoop分布式文件系统中数据节点的节点负载信息。

7.
  根据权利要求5所述的装置,其特征在于,所述存放模块包括:
第一存放单元,用于若所述客户端存在数据节点,则将所述同一数据块的副本Ci存放在客户端所在数据节点,否则,将所述副本Ci存放在Hadoop分布式文件系统中负载最低的数据节点Ni,所述副本Ci是所述同一数据块的副本中的任意一个副本;
第二存放单元,用于将所述同一数据块的副本Cj存放在数据节点Nj,所述副本Cj是所述同一数据块的副本中不同于所述副本Ci的任意一个副本,所述数据节点Nj是与所述数据节点Ni属同一机架并且除所述数据节点Ni之外负载最低的数据节点;
第三存放单元,用于将所述同一数据块的副本Ck存放在数据节点Nk,所述副本Ck是所述同一数据块的副本中不同于所述副本Ci和副本Cj的任意一个副本,所述数据节点Nk是与所述数据节点Ni不属同一机架并且除所述数据节点Ni和数据节点Nj之外负载最低的数据节点;
第四存放单元,用于将所述同一数据块的剩余副本存放在数据节点Nl,所述同一数据块的剩余副本是所述同一数据块的副本中不同于所述副本Ci、副本Cj和副本Ck的任意副本,所述数据节点Nl是除所述数据节点Ni、数据节点Nj和数据节点Nk之外,Hadoop分布式文件系统中负载最低的数据节点。

8.
  根据权利要求5所述的装置,其特征在于,所述读取模块包括:。
第一排序单元,用于将负载小于预置门限的数据节点按照其与客户端的距离大小进行升序排序得到初级数据节点列表;
第二排序单元,用于将负载大于预置门限的数据节点按照其负载大小进行升序排序在所述初级数据节点列表后得到最终数据节点列表;
优先读取单元,用于从所述最终数据节点列表的首个数据节点开始,优先从排序在前的数据节点读取所述副本。

9.
  一种Hadoop分布式文件系统,其特征在于,所述系统包括名字节点和至少一个数据节点,所述名字节点包括获取模块、存放模块和读取模块;
所述数据节点,用于存放数据块的副本,将本节点的节点负载信息传递至所述名字节点;
所述获取模块,用于获取Hadoop分布式文件系统中数据节点的节点负载信息;
所述存放模块,用于在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点;
所述读取模块,用于在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。

10.
  根据权利要求9所述的系统,其特征在于,所述存放模块包括第一存放单元、第二存放单元、第三存放单元和第四存放单元,所述读取模块包括第一排序单元、第二排序单元和优先读取单元;
所述第一存放单元,用于若所述客户端存在数据节点,则将所述同一数据块的副本Ci存放在客户端所在数据节点,否则,将所述副本Ci存放在Hadoop分布式文件系统中负载最低的数据节点Ni,所述副本Ci是所述同一数据块的副本中的任意一个副本;
所述第二存放单元,用于将所述同一数据块的副本Cj存放在数据节点Nj, 所述副本Cj是所述同一数据块的副本中不同于所述副本Ci的任意一个副本,所述数据节点Nj是与所述数据节点Ni属同一机架并且除所述数据节点Ni之外负载最低的数据节点;
所述第三存放单元,用于将所述同一数据块的副本Ck存放在数据节点Nk,所述副本Ck是所述同一数据块的副本中不同于所述副本Ci和副本Cj的任意一个副本,所述数据节点Nk是与所述数据节点Ni不属同一机架并且除所述数据节点Ni和数据节点Nj之外负载最低的数据节点;
所述第四存放单元,用于将所述同一数据块的剩余副本存放在数据节点Nl,所述同一数据块的剩余副本是所述同一数据块的副本中不同于所述副本Ci、副本Cj和副本Ck的任意副本,所述数据节点Nl是除所述数据节点Ni、数据节点Nj和数据节点Nk之外,Hadoop分布式文件系统中负载最低的数据节点。
所述第一排序单元,用于将负载小于预置门限的数据节点按照其与客户端的距离大小进行升序排序得到初级数据节点列表;
所述第二排序单元,用于将负载大于预置门限的数据节点按照其负载大小进行升序排序在所述初级数据节点列表后得到最终数据节点列表;
所述优先读取单元,用于从所述最终数据节点列表的首个数据节点开始,优先从排序在前的数据节点读取所述副本。

说明书

Hadoop分布式文件系统的副本存取方法、装置和Hadoop分布式文件系统
技术领域
本发明涉及分布式架构领域,具体涉及Hadoop分布式文件系统的副本存取方法、装置和Hadoop分布式文件系统。
背景技术
分布式文件系统(Hadoop Distributed File System,HDFS)是一个主从结构,一个HDFS集群是由一个名字节点和至少一个数据节点组成。HDFS集群中的名字节点是一个管理文件命名空间和调节客户端访问文件的主服务器,主要操作文件命名空间的文件或目录操作,例如,打开、关闭和重命名等等,同时,名字节点还用于确定块与数据节点的映射。HDFS集群中的数据节点存储具体的数据文件,负责来自文件系统客户的读写请求,同时还要执行块的创建、删除和来自名字节点的块复制指令。
HDFS对外开放文件命名空间并允许用户数据以文件形式存储,内部机制是将一个文件分割成一个或多个块进行存储,同时每一个数据块又保存有多个副本。以数据块的副本是3个副本为例,HDFS对副本的放置策略为:名字节点将一个副本存放在本地节点即客户端所在节点上,第二个副本存放在与客户端所在节点处于同一个机架的另一个节点上,最后一个副本放在不同机架的节点上。仍以数据块的副本是3个副本为例,HDFS对副本的读取策略是原则上优先访问存放副本的节点中与客户端的距离最近的节点,具体为:若要访问的数据块的一个副本存在于客户端,则客户端优先从本地读取该数据块,否则,若该数据块的一个副本与客户端在同一个机架上,则客户端优先读取这个同机架上的副本,若该数据块既没有一个副本存在客户端,又没有一个副本与客户 端在同一个机架上,则随机选择一个数据块的副本进行读取。
上述现有技术提供的HDFS对副本的放置和读取策略减少了机架间的数据传输,提高了写操作的效率。另一方面,由于机架的错误远远比节点的错误少,因此,这种策略不会影响到数据的可靠性和可用性。与此同时,因为数据块只存放在两个不同的机架上,所以上述策略减少了读取数据时需要的网络传输总带宽。
然而,上述现有技术提供的HDFS副本的放置和读取策略只考虑了写/读操作的网络开销,而未考虑系统注入CPU和磁盘等其他负载的负载均衡,可能会导致系统负载严重不均,从而影响写/读操作的性能。
发明内容
本发明提供Hadoop分布式文件系统的副本存取方法、装置和Hadoop分布式文件系统,以均衡系统负载从而提高读/写性能。
本发明实施例提供一种Hadoop分布式文件系统的副本存取方法,所述方法包括:
获取Hadoop分布式文件系统中数据节点的节点负载信息;
在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点;
在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。
本发明另一实施例提供一种Hadoop分布式文件系统的副本存取装置,所述装置包括:
获取模块,用于获取Hadoop分布式文件系统中数据节点的节点负载信息;
存放模块,用于在存放副本时,根据所述节点负载信息,将同一数据块的 副本存放在客户端所在数据节点或者负载最低的数据节点;
读取模块,用于在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。
本发明另一实施例提供一种Hadoop分布式文件系统,所述系统包括名字节点和至少一个数据节点,所述名字节点包括获取模块、存放模块和读取模块;
所述数据节点,用于存放数据块的副本,将本节点的节点负载信息传递至所述名字节点;
所述获取模块,用于获取Hadoop分布式文件系统中数据节点的节点负载信息;
所述存放模块,用于根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点;
所述读取模块,用于在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。
从上述本发明实施例可知,由于可以根据获取的节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点,在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取,因此,与现有技术提供的HDFS副本的放置和读取策略只考虑了写/读操作的网络开销,而未考虑系统注入CPU和磁盘等其他负载的负载均衡相比,本发明提供的方法充分考虑到了各个数据节点的节点负载信息,因而能够均衡系统负载,提升读写操作的性能。
附图说明
图1是本发明实施例提供的Hadoop分布式文件系统的副本存取方法的基 本流程示意图;
图2是本发明实施例提供的按照数据节点与客户端的距离大小以及数据节点的负载大小进行升序排序形成最终数据节点列表的示意图;
图3是本发明实施例提供的Hadoop分布式文件系统的副本存取装置逻辑结构示意图;
图4是本发明另一实施例提供的Hadoop分布式文件系统的副本存取装置逻辑结构示意图;
图5是本发明另一实施例提供的Hadoop分布式文件系统的副本存取装置逻辑结构示意图;
图6是本发明另一实施例提供的Hadoop分布式文件系统的副本存取装置逻辑结构示意图;
图7是本发明实施例提供的Hadoop分布式文件系统的逻辑结构示意图;
图8是本发明另一实施例提供的Hadoop分布式文件系统的逻辑结构示意图。
具体实施方式
本发明提供Hadoop分布式文件系统的副本存取方法,所述方法包括:获取Hadoop分布式文件系统中数据节点的节点负载信息;根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点;在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。本发明还提供相应的Hadoop分布式文件系统的副本存取装置和Hadoop分布式文件系统。以下分别进行详细说明。
本发明实施例的Hadoop分布式文件系统的副本存取方法可应用于Hadoop分布式文件系统的名字节点。本发明实施例提供的Hadoop分布式文件系统的 副本存取方法的基本流程可参考图1,主要包括步骤S101至步骤S103,详细说明如下:
S101,获取Hadoop分布式文件系统中数据节点的节点负载信息。
数据节点的节点负载信息包括CPU负载、网络负载、磁盘IO负载和磁盘空间负载中的一种或者其任意组合。作为本发明一个实施例,数据节点的节点负载可以按照以下方式计算,即节点负载=w1*CPU负载+w2*网络负载+w3*磁盘IO负载+w4*磁盘空间负载,其中,w1、w2、w3和w4为预置的0到1之间的权重系数。
数据节点和名字节点在建立通信连接时会有握手这一环节,在本发明一个实施例中,数据节点可以将其节点负载信息携带在其与名字节点握手时发送的握手信息中。因此,作为本发明一个实施例,名字节点获取Hadoop分布式文件系统中数据节点的节点负载信息可以是通过与所述数据节点握手,从握手信息中提取Hadoop分布式文件系统中数据节点的节点负载信息。名字节点将这些数据节点的节点负载信息予以保存,并在下次收到同一数据节点的节点负载信息时予以更新。
S102,在存放副本时,根据步骤S101获取的节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点。
在本发明实施例中,客户端也有可能存在数据节点。若客户端存在数据节点,则将同一数据块B的副本Ci存放在客户端所在数据节点,否则,将所述副本Ci存放在Hadoop分布式文件系统中负载最低的数据节点Ni,此处,副本Ci是所述同一数据块的副本中的任意一个副本。
数据块B的副本可能不止一个,在将同一数据块B的副本Ci存放在客户端 所在数据节点,或者,将所述副本Ci存放在Hadoop分布式文件系统中负载最低的数据节点Ni后,再将所述同一数据块B的副本Cj存放在数据节点Nj,此处,副本Cj是所述同一数据块B的副本中不同于所述副本Ci的任意一个副本,数据节点Nj是与数据节点Ni属同一机架并且除数据节点Ni之外负载最低的数据节点。
若数据块B的副本不止副本Ci和副本Cj,则将所述同一数据块B的副本Ck存放在数据节点Nk,此处,副本Ck是所述同一数据块的副本中不同于所述副本Ci和副本Cj的任意一个副本;数据节点Nk是与所述数据节点Ni不属同一机架并且除所述数据节点Ni和数据节点Nj之外负载最低的数据节点,即,假设数据节点Ni和数据节点Nj同属机架C,则数据节点Nk是不同于机架C的另一机架D上的数据节点,并且除数据节点Ni和数据节点Nj之外,数据节点Nk的负载最低。
若数据块B的副本不止副本Ci、副本Cj和副本Ck,则将所述同一数据块的剩余副本存放在数据节点Ni,此处,同一数据块的剩余副本是所述同一数据块B的副本中不同于所述副本Ci、副本Cj和副本Ck的任意副本,数据节点Nl是除所述数据节点Ni、数据节点Nj和数据节点Nk之外,Hadoop分布式文件系统中负载最低的数据节点。
从上述副本的存放策略可知,副本优先存放在客户端所在数据节点,其次是存放在负载最低的数据节点,再其次是存放在与客户端距离较小并且负载最低的数据节点,例如,与客户端同属一个机架的数据节点,其与客户端的距离可以定义为2,与客户端不同属一个机架的数据节点,其与客户端的距离可以定义为4,则显然,与客户端同属一个机架的数据节点和与客户端不同属一个机架的数据节点相比,前者与客户端的距离小于后者与客户端的距离。
S103,在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。
在读取同一数据块的副本时,按照负载优先原则读取,即优先从负载较小的数据节点读取同一数据块的副本,在这一大前提下,从与客户端距离较小的数据节点读取同一数据块的副本,具体地,从负载最低的数据节点和/或与客户端距离最小的数据节点读取同一数据块的副本包括如下步骤S1031至步骤S1033:
S1031,将负载小于预置门限的数据节点按照其与客户端的距离大小进行升序排序得到初级数据节点列表。
数据节点与客户端的距离大小定义和背景技术中提到的现有技术相同,例如,在客户端所在的数据节点,其与客户端的距离定义为0,与客户端所在数据节点同属一个机架的数据节点,其与客户端的距离可定义为2,与客户端所在数据节点不同属一个机架的数据节点,其与客户端的距离可定义为4,等等。在本发明实施例中,可以先将负载小于预置门限的数据节点筛选出来,再按照其与客户端的距离进行升序排序得到初级数据节点列表。例如,假设数据节点N1至数据节点Nn中,其负载均小于预置门限的数据节点包括数据节点N1至数据节点Nm,数据节点N1至数据节点Nm与客户端的距离依次定义为S1至Sm,进一步假设S1<S2<…<Sm-1<Sm,则数据节点N1至数据节点Nm按照其与客户端的距离大小进行升序排序得到的初级数据节点列表如附图2。
S1032,将负载大于预置门限的数据节点按照其负载大小进行升序排序在初级数据节点列表后得到最终数据节点列表。
仍以步骤S1031中的数据节点N1至数据节点Nn为例,假设负载均大于预置 门限的数据节点包括数据节点Nm+1至数据节点Nn,数据节点Nm+1至数据节点Nn的负载依次定义为Lm+1至Ln,进一步假设Lm+1<Lm+2<…<Ln-1<Ln,则将数据节点Nm+1至数据节点Nn按照其负载大小进行升序排序在初级数据节点列表后得到的最终数据节点列表如附图2。
S1033,从最终数据节点列表的首个数据节点开始,优先从排序在前的数据节点读取同一数据块的副本。
如附图2所示的最终数据节点列表,优先从数据节点N1开始读取同一数据块B的副本。若数据节点N1没有同一数据块B的副本,则再从数据节点N2读取同一数据块B的副本。若数据节点N2没有同一数据块B的副本,则从数据节点N3读取同一数据块B的副本,依次类推,直至最后一个数据节点Nn
从上述本发明实施例提供的Hadoop分布式文件系统的副本存取方法可知,由于可以根据获取的节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点,在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取,因此,与现有技术提供的HDFS副本的放置和读取策略只考虑了写/读操作的网络开销,而未考虑系统注入CPU和磁盘等其他负载的负载均衡相比,本发明提供的方法充分考虑到了各个数据节点的节点负载信息,因而能够均衡系统负载,提升读写操作的性能。
下面对用于执行上述Hadoop分布式文件系统的副本存取方法的本发明实施例的Hadoop分布式文件系统的副本存取装置进行说明,其基本逻辑结构参考图3。为了便于说明,仅仅示出了与本发明实施例相关的部分。附图3示例的Hadoop分布式文件系统的副本存取装置可以是Hadoop分布式文件系统中的名字节点或该名字节点中的某个功能模块。附图3示例的Hadoop分布式文件系统 的副本存取装置主要包括获取模块301、存放模块302和读取模块303,各模块详细说明如下:
获取模块301,用于获取Hadoop分布式文件系统中数据节点的节点负载信息;
存放模块302,用于在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点;
读取模块303,用于在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。
需要说明的是,以上附图3示例的Hadoop分布式文件系统的副本存取装置的实施方式中,各功能模块的划分仅是举例说明,实际应用中可以根据需要,例如相应硬件的配置要求或者软件的实现的便利考虑,而将上述功能分配由不同的功能模块完成,即将所述Hadoop分布式文件系统的副本存取装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。而且,实际应用中,本实施例中的相应的功能模块可以是由相应的硬件实现,也可以由相应的硬件执行相应的软件完成,例如,前述的存放模块,可以是具有执行前述根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点的硬件,例如存放器,也可以是能够执行相应计算机程序从而完成前述功能的一般处理器或者其他硬件设备;再如前述的读取模块,可以是在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取功能的硬件,例如读取器,也可以是能够执行相应计算机程序从而完成前述功能的一般处理器或者其他硬件设备(本说明书提供的各个实施例都可应用上述描述原则)。
附图3示例的获取模块301可以包括提取单元401,如附图4所示本发明另一实施例提供的Hadoop分布式文件系统的副本存取装置。提取单元401用于通过与所述数据节点握手,从握手信息中提取Hadoop分布式文件系统中数据节点的节点负载信息。
附图3示例的存放模块302可以包括第一存放单元501、第二存放单元502、第三存放单元503和第四存放单元,如附图5所示本发明另一实施例提供的Hadoop分布式文件系统的副本存取装置,其中:
第一存放单元501,用于若所述客户端存在数据节点,则将所述同一数据块的副本Ci存放在客户端所在数据节点,否则,将所述副本Ci存放在Hadoop分布式文件系统中负载最低的数据节点Ni,所述副本Ci是所述同一数据块的副本中的任意一个副本;
第二存放单元502,用于将所述同一数据块的副本Cj存放在数据节点Nj,所述副本Cj是所述同一数据块的副本中不同于所述副本Ci的任意一个副本,所述数据节点Nj是与所述数据节点Ni属同一机架并且除所述数据节点Ni之外负载最低的数据节点;
第三存放单元503,用于将所述同一数据块的副本Ck存放在数据节点Nk,所述副本Ck是所述同一数据块的副本中不同于所述副本Ci和副本Cj的任意一个副本,所述数据节点Nk是与所述数据节点Ni不属同一机架并且除所述数据节点Ni和数据节点Nj之外负载最低的数据节点;
第四存放单元504,用于将所述同一数据块的剩余副本存放在数据节点Nl,所述同一数据块的剩余副本是所述同一数据块的副本中不同于所述副本Ci、副本Cj和副本Ck的任意副本,所述数据节点Nl是除所述数据节点Ni、数据节点Nj 和数据节点Nk之外,Hadoop分布式文件系统中负载最低的数据节点。
附图3示例的读取模块303可以包括第一排序单元601、第二排序单元602、和优先读取单元603,如附图6所示本发明另一实施例提供的Hadoop分布式文件系统的副本存取装置,其中:
第一排序单元601,用于将负载小于预置门限的数据节点按照其与客户端的距离大小进行升序排序得到初级数据节点列表;
第二排序单元602,用于将负载大于预置门限的数据节点按照其负载大小进行升序排序在所述初级数据节点列表后得到最终数据节点列表;
优先读取单元603,用于从所述最终数据节点列表的首个数据节点开始,优先从排序在前的数据节点读取所述副本。
请参阅附图7,是本发明实施例提供的Hadoop分布式文件系统的逻辑结构示意图。附图7示例的Hadoop分布式文件系统主要包括名字节点701和至少一个数据节点702,其中,名字节点701包括获取模块703、存放模块704和读取模块705,各模块详细说明如下:
数据节点702,用于存放数据块的副本,将本节点的节点负载信息传递至名字节点701;
获取模块703,用于获取Hadoop分布式文件系统中数据节点702的节点负载信息;
存放模块704,用于在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点;
读取模块705,用于在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。
附图7示例的存放模块704包括第一存放单元801、第二存放单元802、第三存放单元803和第四存放单元804,读取模块705包括第一排序单元805、第二排序单元806和优先读取单元807,如附图7所示本发明另一实施例提供的Hadoop分布式文件系统的副本存取装置,其中:
第一存放单元801,用于若所述客户端存在数据节点,则将所述同一数据块的副本Ci存放在客户端所在数据节点,否则,将所述副本Ci存放在Hadoop分布式文件系统中负载最低的数据节点Ni,所述副本Ci是所述同一数据块的副本中的任意一个副本;
第二存放单元802,用于将所述同一数据块的副本Cj存放在数据节点Nj,所述副本Cj是所述同一数据块的副本中不同于所述副本Ci的任意一个副本,所述数据节点Nj是与所述数据节点Ni属同一机架并且除所述数据节点Ni之外负载最低的数据节点;
第三存放单元803,用于将所述同一数据块的副本Ck存放在数据节点Nk,所述副本Ck是所述同一数据块的副本中不同于所述副本Ci和副本Cj的任意一个副本,所述数据节点Nk是与所述数据节点Ni不属同一机架并且除所述数据节点Ni和数据节点Nj之外负载最低的数据节点;
第四存放单元804,用于将所述同一数据块的剩余副本存放在数据节点Nl,所述同一数据块的剩余副本是所述同一数据块的副本中不同于所述副本Ci、副本Cj和副本Ck的任意副本,所述数据节点Nl是除所述数据节点Ni、数据节点Nj和数据节点Nk之外,Hadoop分布式文件系统中负载最低的数据节点。
第一排序单元805,用于将负载小于预置门限的数据节点按照其与客户端的距离大小进行升序排序得到初级数据节点列表;
第二排序单元806,用于将负载大于预置门限的数据节点按照其负载大小进行升序排序在所述初级数据节点列表后得到最终数据节点列表;
优先读取单元807,用于从所述最终数据节点列表的首个数据节点开始,优先从排序在前的数据节点读取所述副本。
需要说明的是,上述装置各模块/单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。
以上对本发明实施例所提供的Hadoop分布式文件系统的副本存取方法、装置和Hadoop分布式文件系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

HADOOP分布式文件系统的副本存取方法、装置和HADOOP分布式文件系统.pdf_第1页
第1页 / 共14页
HADOOP分布式文件系统的副本存取方法、装置和HADOOP分布式文件系统.pdf_第2页
第2页 / 共14页
HADOOP分布式文件系统的副本存取方法、装置和HADOOP分布式文件系统.pdf_第3页
第3页 / 共14页
点击查看更多>>
资源描述

《HADOOP分布式文件系统的副本存取方法、装置和HADOOP分布式文件系统.pdf》由会员分享,可在线阅读,更多相关《HADOOP分布式文件系统的副本存取方法、装置和HADOOP分布式文件系统.pdf(14页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN104156381A43申请公布日20141119CN104156381A21申请号201410120902922申请日20140327G06F17/30200601G06F9/50200601H04L29/0820060171申请人深圳信息职业技术学院地址518172广东省深圳市龙岗区龙翔大道2188号72发明人袁芳李靖张宗平李鸣亮叶剑锋74专利代理机构深圳中一专利商标事务所44237代理人张全文54发明名称HADOOP分布式文件系统的副本存取方法、装置和HADOOP分布式文件系统57摘要本发明公开了一种HADOOP分布式文件系统的副本存取方法、装置和HADOOP分布式文件。

2、系统,以均衡系统负载从而提高读/写性能。所述方法包括获取HADOOP分布式文件系统中数据节点的节点负载信息;在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点;在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。本发明提供的方法充分考虑到了各个数据节点的节点负载信息,因而能够均衡系统负载,提升读写操作的性能。51INTCL权利要求书3页说明书7页附图3页19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书7页附图3页10申请公布号CN104156381ACN104156381A1/3页21一种HADOOP。

3、分布式文件系统的副本存取方法,其特征在于,所述方法包括获取HADOOP分布式文件系统中数据节点的节点负载信息;在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点;在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。2根据权利要求1所述的方法,其特征在于,所述获取HADOOP分布式文件系统中数据节点的节点负载信息,包括通过与所述数据节点握手,从握手信息中提取HADOOP分布式文件系统中数据节点的节点负载信息。3根据权利要求1所述的方法,其特征在于,所述在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客户端所在数。

4、据节点或者负载最低的数据节点,包括若所述客户端存在数据节点,则将所述同一数据块的副本CI存放在客户端所在数据节点,否则,将所述副本CI存放在HADOOP分布式文件系统中负载最低的数据节点NI,所述副本CI是所述同一数据块的副本中的任意一个副本;将所述同一数据块的副本CJ存放在数据节点NJ,所述副本CJ是所述同一数据块的副本中不同于所述副本CI的任意一个副本,所述数据节点NJ是与所述数据节点NI属同一机架并且除所述数据节点NI之外负载最低的数据节点;将所述同一数据块的副本CK存放在数据节点NK,所述副本CK是所述同一数据块的副本中不同于所述副本CI和副本CJ的任意一个副本,所述数据节点NK是与所。

5、述数据节点NI不属同一机架并且除所述数据节点NI和数据节点NJ之外负载最低的数据节点;将所述同一数据块的剩余副本存放在数据节点NL,所述同一数据块的剩余副本是所述同一数据块的副本中不同于所述副本CI、副本CJ和副本CK的任意副本,所述数据节点NL是除所述数据节点NI、数据节点NJ和数据节点NK之外,HADOOP分布式文件系统中负载最低的数据节点。4根据权利要求1所述的方法,其特征在于,所述在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取,包括将负载小于预置门限的数据节点按照其与客户端的距离大小进行升序排序得到初级数据节点列表;将负载大于预置门限的数据节点按照其负载大小。

6、进行升序排序在所述初级数据节点列表后得到最终数据节点列表;从所述最终数据节点列表的首个数据节点开始,优先从排序在前的数据节点读取所述副本。5一种HADOOP分布式文件系统的副本存取装置,其特征在于,所述装置包括获取模块,用于获取HADOOP分布式文件系统中数据节点的节点负载信息;存放模块,用于在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点;读取模块,用于在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。权利要求书CN104156381A2/3页36根据权利要求5所述的装置,其特征在于,所述获取模块包括提取单元,用于。

7、通过与所述数据节点握手,从握手信息中提取HADOOP分布式文件系统中数据节点的节点负载信息。7根据权利要求5所述的装置,其特征在于,所述存放模块包括第一存放单元,用于若所述客户端存在数据节点,则将所述同一数据块的副本CI存放在客户端所在数据节点,否则,将所述副本CI存放在HADOOP分布式文件系统中负载最低的数据节点NI,所述副本CI是所述同一数据块的副本中的任意一个副本;第二存放单元,用于将所述同一数据块的副本CJ存放在数据节点NJ,所述副本CJ是所述同一数据块的副本中不同于所述副本CI的任意一个副本,所述数据节点NJ是与所述数据节点NI属同一机架并且除所述数据节点NI之外负载最低的数据节点。

8、;第三存放单元,用于将所述同一数据块的副本CK存放在数据节点NK,所述副本CK是所述同一数据块的副本中不同于所述副本CI和副本CJ的任意一个副本,所述数据节点NK是与所述数据节点NI不属同一机架并且除所述数据节点NI和数据节点NJ之外负载最低的数据节点;第四存放单元,用于将所述同一数据块的剩余副本存放在数据节点NL,所述同一数据块的剩余副本是所述同一数据块的副本中不同于所述副本CI、副本CJ和副本CK的任意副本,所述数据节点NL是除所述数据节点NI、数据节点NJ和数据节点NK之外,HADOOP分布式文件系统中负载最低的数据节点。8根据权利要求5所述的装置,其特征在于,所述读取模块包括。第一排序。

9、单元,用于将负载小于预置门限的数据节点按照其与客户端的距离大小进行升序排序得到初级数据节点列表;第二排序单元,用于将负载大于预置门限的数据节点按照其负载大小进行升序排序在所述初级数据节点列表后得到最终数据节点列表;优先读取单元,用于从所述最终数据节点列表的首个数据节点开始,优先从排序在前的数据节点读取所述副本。9一种HADOOP分布式文件系统,其特征在于,所述系统包括名字节点和至少一个数据节点,所述名字节点包括获取模块、存放模块和读取模块;所述数据节点,用于存放数据块的副本,将本节点的节点负载信息传递至所述名字节点;所述获取模块,用于获取HADOOP分布式文件系统中数据节点的节点负载信息;所述。

10、存放模块,用于在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点;所述读取模块,用于在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。10根据权利要求9所述的系统,其特征在于,所述存放模块包括第一存放单元、第二存放单元、第三存放单元和第四存放单元,所述读取模块包括第一排序单元、第二排序单元和优先读取单元;所述第一存放单元,用于若所述客户端存在数据节点,则将所述同一数据块的副本CI存放在客户端所在数据节点,否则,将所述副本CI存放在HADOOP分布式文件系统中负载最权利要求书CN104156381A3/3页4低的数据节点。

11、NI,所述副本CI是所述同一数据块的副本中的任意一个副本;所述第二存放单元,用于将所述同一数据块的副本CJ存放在数据节点NJ,所述副本CJ是所述同一数据块的副本中不同于所述副本CI的任意一个副本,所述数据节点NJ是与所述数据节点NI属同一机架并且除所述数据节点NI之外负载最低的数据节点;所述第三存放单元,用于将所述同一数据块的副本CK存放在数据节点NK,所述副本CK是所述同一数据块的副本中不同于所述副本CI和副本CJ的任意一个副本,所述数据节点NK是与所述数据节点NI不属同一机架并且除所述数据节点NI和数据节点NJ之外负载最低的数据节点;所述第四存放单元,用于将所述同一数据块的剩余副本存放在数。

12、据节点NL,所述同一数据块的剩余副本是所述同一数据块的副本中不同于所述副本CI、副本CJ和副本CK的任意副本,所述数据节点NL是除所述数据节点NI、数据节点NJ和数据节点NK之外,HADOOP分布式文件系统中负载最低的数据节点。所述第一排序单元,用于将负载小于预置门限的数据节点按照其与客户端的距离大小进行升序排序得到初级数据节点列表;所述第二排序单元,用于将负载大于预置门限的数据节点按照其负载大小进行升序排序在所述初级数据节点列表后得到最终数据节点列表;所述优先读取单元,用于从所述最终数据节点列表的首个数据节点开始,优先从排序在前的数据节点读取所述副本。权利要求书CN104156381A1/7。

13、页5HADOOP分布式文件系统的副本存取方法、装置和HADOOP分布式文件系统技术领域0001本发明涉及分布式架构领域,具体涉及HADOOP分布式文件系统的副本存取方法、装置和HADOOP分布式文件系统。背景技术0002分布式文件系统(HADOOPDISTRIBUTEDFILESYSTEM,HDFS)是一个主从结构,一个HDFS集群是由一个名字节点和至少一个数据节点组成。HDFS集群中的名字节点是一个管理文件命名空间和调节客户端访问文件的主服务器,主要操作文件命名空间的文件或目录操作,例如,打开、关闭和重命名等等,同时,名字节点还用于确定块与数据节点的映射。HDFS集群中的数据节点存储具体的数。

14、据文件,负责来自文件系统客户的读写请求,同时还要执行块的创建、删除和来自名字节点的块复制指令。0003HDFS对外开放文件命名空间并允许用户数据以文件形式存储,内部机制是将一个文件分割成一个或多个块进行存储,同时每一个数据块又保存有多个副本。以数据块的副本是3个副本为例,HDFS对副本的放置策略为名字节点将一个副本存放在本地节点即客户端所在节点上,第二个副本存放在与客户端所在节点处于同一个机架的另一个节点上,最后一个副本放在不同机架的节点上。仍以数据块的副本是3个副本为例,HDFS对副本的读取策略是原则上优先访问存放副本的节点中与客户端的距离最近的节点,具体为若要访问的数据块的一个副本存在于客。

15、户端,则客户端优先从本地读取该数据块,否则,若该数据块的一个副本与客户端在同一个机架上,则客户端优先读取这个同机架上的副本,若该数据块既没有一个副本存在客户端,又没有一个副本与客户端在同一个机架上,则随机选择一个数据块的副本进行读取。0004上述现有技术提供的HDFS对副本的放置和读取策略减少了机架间的数据传输,提高了写操作的效率。另一方面,由于机架的错误远远比节点的错误少,因此,这种策略不会影响到数据的可靠性和可用性。与此同时,因为数据块只存放在两个不同的机架上,所以上述策略减少了读取数据时需要的网络传输总带宽。0005然而,上述现有技术提供的HDFS副本的放置和读取策略只考虑了写/读操作的。

16、网络开销,而未考虑系统注入CPU和磁盘等其他负载的负载均衡,可能会导致系统负载严重不均,从而影响写/读操作的性能。发明内容0006本发明提供HADOOP分布式文件系统的副本存取方法、装置和HADOOP分布式文件系统,以均衡系统负载从而提高读/写性能。0007本发明实施例提供一种HADOOP分布式文件系统的副本存取方法,所述方法包括0008获取HADOOP分布式文件系统中数据节点的节点负载信息;0009在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客户端所在说明书CN104156381A2/7页6数据节点或者负载最低的数据节点;0010在读取所述副本时,从负载最低的数据节点和/或与。

17、客户端距离最小的数据节点读取。0011本发明另一实施例提供一种HADOOP分布式文件系统的副本存取装置,所述装置包括0012获取模块,用于获取HADOOP分布式文件系统中数据节点的节点负载信息;0013存放模块,用于在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点;0014读取模块,用于在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。0015本发明另一实施例提供一种HADOOP分布式文件系统,所述系统包括名字节点和至少一个数据节点,所述名字节点包括获取模块、存放模块和读取模块;0016所述数据节点,用于存放数据块的。

18、副本,将本节点的节点负载信息传递至所述名字节点;0017所述获取模块,用于获取HADOOP分布式文件系统中数据节点的节点负载信息;0018所述存放模块,用于根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点;0019所述读取模块,用于在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。0020从上述本发明实施例可知,由于可以根据获取的节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点,在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取,因此,与现有技术提供的HDFS副本的放置和读取策。

19、略只考虑了写/读操作的网络开销,而未考虑系统注入CPU和磁盘等其他负载的负载均衡相比,本发明提供的方法充分考虑到了各个数据节点的节点负载信息,因而能够均衡系统负载,提升读写操作的性能。附图说明0021图1是本发明实施例提供的HADOOP分布式文件系统的副本存取方法的基本流程示意图;0022图2是本发明实施例提供的按照数据节点与客户端的距离大小以及数据节点的负载大小进行升序排序形成最终数据节点列表的示意图;0023图3是本发明实施例提供的HADOOP分布式文件系统的副本存取装置逻辑结构示意图;0024图4是本发明另一实施例提供的HADOOP分布式文件系统的副本存取装置逻辑结构示意图;0025图5。

20、是本发明另一实施例提供的HADOOP分布式文件系统的副本存取装置逻辑结构示意图;0026图6是本发明另一实施例提供的HADOOP分布式文件系统的副本存取装置逻辑结构示意图;说明书CN104156381A3/7页70027图7是本发明实施例提供的HADOOP分布式文件系统的逻辑结构示意图;0028图8是本发明另一实施例提供的HADOOP分布式文件系统的逻辑结构示意图。具体实施方式0029本发明提供HADOOP分布式文件系统的副本存取方法,所述方法包括获取HADOOP分布式文件系统中数据节点的节点负载信息;根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点;在读。

21、取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。本发明还提供相应的HADOOP分布式文件系统的副本存取装置和HADOOP分布式文件系统。以下分别进行详细说明。0030本发明实施例的HADOOP分布式文件系统的副本存取方法可应用于HADOOP分布式文件系统的名字节点。本发明实施例提供的HADOOP分布式文件系统的副本存取方法的基本流程可参考图1,主要包括步骤S101至步骤S103,详细说明如下0031S101,获取HADOOP分布式文件系统中数据节点的节点负载信息。0032数据节点的节点负载信息包括CPU负载、网络负载、磁盘IO负载和磁盘空间负载中的一种或者其任意组合。作。

22、为本发明一个实施例,数据节点的节点负载可以按照以下方式计算,即节点负载W1CPU负载W2网络负载W3磁盘IO负载W4磁盘空间负载,其中,W1、W2、W3和W4为预置的0到1之间的权重系数。0033数据节点和名字节点在建立通信连接时会有握手这一环节,在本发明一个实施例中,数据节点可以将其节点负载信息携带在其与名字节点握手时发送的握手信息中。因此,作为本发明一个实施例,名字节点获取HADOOP分布式文件系统中数据节点的节点负载信息可以是通过与所述数据节点握手,从握手信息中提取HADOOP分布式文件系统中数据节点的节点负载信息。名字节点将这些数据节点的节点负载信息予以保存,并在下次收到同一数据节点的。

23、节点负载信息时予以更新。0034S102,在存放副本时,根据步骤S101获取的节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点。0035在本发明实施例中,客户端也有可能存在数据节点。若客户端存在数据节点,则将同一数据块B的副本CI存放在客户端所在数据节点,否则,将所述副本CI存放在HADOOP分布式文件系统中负载最低的数据节点NI,此处,副本CI是所述同一数据块的副本中的任意一个副本。0036数据块B的副本可能不止一个,在将同一数据块B的副本CI存放在客户端所在数据节点,或者,将所述副本CI存放在HADOOP分布式文件系统中负载最低的数据节点NI后,再将所述同一数。

24、据块B的副本CJ存放在数据节点NJ,此处,副本CJ是所述同一数据块B的副本中不同于所述副本CI的任意一个副本,数据节点NJ是与数据节点NI属同一机架并且除数据节点NI之外负载最低的数据节点。0037若数据块B的副本不止副本CI和副本CJ,则将所述同一数据块B的副本CK存放在数据节点NK,此处,副本CK是所述同一数据块的副本中不同于所述副本CI和副本CJ的任意一个副本;数据节点NK是与所述数据节点NI不属同一机架并且除所述数据节点NI和数据节点NJ之外负载最低的数据节点,即,假设数据节点NI和数据节点NJ同属机架C,则数据节点NK是不同于机架C的另一机架D上的数据节点,并且除数据节点NI和数据节。

25、点NJ之外,说明书CN104156381A4/7页8数据节点NK的负载最低。0038若数据块B的副本不止副本CI、副本CJ和副本CK,则将所述同一数据块的剩余副本存放在数据节点NI,此处,同一数据块的剩余副本是所述同一数据块B的副本中不同于所述副本CI、副本CJ和副本CK的任意副本,数据节点NL是除所述数据节点NI、数据节点NJ和数据节点NK之外,HADOOP分布式文件系统中负载最低的数据节点。0039从上述副本的存放策略可知,副本优先存放在客户端所在数据节点,其次是存放在负载最低的数据节点,再其次是存放在与客户端距离较小并且负载最低的数据节点,例如,与客户端同属一个机架的数据节点,其与客户端。

26、的距离可以定义为2,与客户端不同属一个机架的数据节点,其与客户端的距离可以定义为4,则显然,与客户端同属一个机架的数据节点和与客户端不同属一个机架的数据节点相比,前者与客户端的距离小于后者与客户端的距离。0040S103,在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。0041在读取同一数据块的副本时,按照负载优先原则读取,即优先从负载较小的数据节点读取同一数据块的副本,在这一大前提下,从与客户端距离较小的数据节点读取同一数据块的副本,具体地,从负载最低的数据节点和/或与客户端距离最小的数据节点读取同一数据块的副本包括如下步骤S1031至步骤S10330042S10。

27、31,将负载小于预置门限的数据节点按照其与客户端的距离大小进行升序排序得到初级数据节点列表。0043数据节点与客户端的距离大小定义和背景技术中提到的现有技术相同,例如,在客户端所在的数据节点,其与客户端的距离定义为0,与客户端所在数据节点同属一个机架的数据节点,其与客户端的距离可定义为2,与客户端所在数据节点不同属一个机架的数据节点,其与客户端的距离可定义为4,等等。在本发明实施例中,可以先将负载小于预置门限的数据节点筛选出来,再按照其与客户端的距离进行升序排序得到初级数据节点列表。例如,假设数据节点N1至数据节点NN中,其负载均小于预置门限的数据节点包括数据节点N1至数据节点NM,数据节点N。

28、1至数据节点NM与客户端的距离依次定义为S1至SM,进一步假设S1S2SM1SM,则数据节点N1至数据节点NM按照其与客户端的距离大小进行升序排序得到的初级数据节点列表如附图2。0044S1032,将负载大于预置门限的数据节点按照其负载大小进行升序排序在初级数据节点列表后得到最终数据节点列表。0045仍以步骤S1031中的数据节点N1至数据节点NN为例,假设负载均大于预置门限的数据节点包括数据节点NM1至数据节点NN,数据节点NM1至数据节点NN的负载依次定义为LM1至LN,进一步假设LM1LM2LN1LN,则将数据节点NM1至数据节点NN按照其负载大小进行升序排序在初级数据节点列表后得到的最。

29、终数据节点列表如附图2。0046S1033,从最终数据节点列表的首个数据节点开始,优先从排序在前的数据节点读取同一数据块的副本。0047如附图2所示的最终数据节点列表,优先从数据节点N1开始读取同一数据块B的副本。若数据节点N1没有同一数据块B的副本,则再从数据节点N2读取同一数据块B的副本。若数据节点N2没有同一数据块B的副本,则从数据节点N3读取同一数据块B的副本,说明书CN104156381A5/7页9依次类推,直至最后一个数据节点NN。0048从上述本发明实施例提供的HADOOP分布式文件系统的副本存取方法可知,由于可以根据获取的节点负载信息,将同一数据块的副本存放在客户端所在数据节点。

30、或者负载最低的数据节点,在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取,因此,与现有技术提供的HDFS副本的放置和读取策略只考虑了写/读操作的网络开销,而未考虑系统注入CPU和磁盘等其他负载的负载均衡相比,本发明提供的方法充分考虑到了各个数据节点的节点负载信息,因而能够均衡系统负载,提升读写操作的性能。0049下面对用于执行上述HADOOP分布式文件系统的副本存取方法的本发明实施例的HADOOP分布式文件系统的副本存取装置进行说明,其基本逻辑结构参考图3。为了便于说明,仅仅示出了与本发明实施例相关的部分。附图3示例的HADOOP分布式文件系统的副本存取装置可以是HA。

31、DOOP分布式文件系统中的名字节点或该名字节点中的某个功能模块。附图3示例的HADOOP分布式文件系统的副本存取装置主要包括获取模块301、存放模块302和读取模块303,各模块详细说明如下0050获取模块301,用于获取HADOOP分布式文件系统中数据节点的节点负载信息;0051存放模块302,用于在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点;0052读取模块303,用于在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。0053需要说明的是,以上附图3示例的HADOOP分布式文件系统的副本存取装置的实施方式中,。

32、各功能模块的划分仅是举例说明,实际应用中可以根据需要,例如相应硬件的配置要求或者软件的实现的便利考虑,而将上述功能分配由不同的功能模块完成,即将所述HADOOP分布式文件系统的副本存取装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。而且,实际应用中,本实施例中的相应的功能模块可以是由相应的硬件实现,也可以由相应的硬件执行相应的软件完成,例如,前述的存放模块,可以是具有执行前述根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点的硬件,例如存放器,也可以是能够执行相应计算机程序从而完成前述功能的一般处理器或者其他硬件设备;再如前述的读取模块。

33、,可以是在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取功能的硬件,例如读取器,也可以是能够执行相应计算机程序从而完成前述功能的一般处理器或者其他硬件设备(本说明书提供的各个实施例都可应用上述描述原则)。0054附图3示例的获取模块301可以包括提取单元401,如附图4所示本发明另一实施例提供的HADOOP分布式文件系统的副本存取装置。提取单元401用于通过与所述数据节点握手,从握手信息中提取HADOOP分布式文件系统中数据节点的节点负载信息。0055附图3示例的存放模块302可以包括第一存放单元501、第二存放单元502、第三存放单元503和第四存放单元,如附图5所。

34、示本发明另一实施例提供的HADOOP分布式文件系统的副本存取装置,其中0056第一存放单元501,用于若所述客户端存在数据节点,则将所述同一数据块的副本CI存放在客户端所在数据节点,否则,将所述副本CI存放在HADOOP分布式文件系统中负载说明书CN104156381A6/7页10最低的数据节点NI,所述副本CI是所述同一数据块的副本中的任意一个副本;0057第二存放单元502,用于将所述同一数据块的副本CJ存放在数据节点NJ,所述副本CJ是所述同一数据块的副本中不同于所述副本CI的任意一个副本,所述数据节点NJ是与所述数据节点NI属同一机架并且除所述数据节点NI之外负载最低的数据节点;005。

35、8第三存放单元503,用于将所述同一数据块的副本CK存放在数据节点NK,所述副本CK是所述同一数据块的副本中不同于所述副本CI和副本CJ的任意一个副本,所述数据节点NK是与所述数据节点NI不属同一机架并且除所述数据节点NI和数据节点NJ之外负载最低的数据节点;0059第四存放单元504,用于将所述同一数据块的剩余副本存放在数据节点NL,所述同一数据块的剩余副本是所述同一数据块的副本中不同于所述副本CI、副本CJ和副本CK的任意副本,所述数据节点NL是除所述数据节点NI、数据节点NJ和数据节点NK之外,HADOOP分布式文件系统中负载最低的数据节点。0060附图3示例的读取模块303可以包括第一。

36、排序单元601、第二排序单元602、和优先读取单元603,如附图6所示本发明另一实施例提供的HADOOP分布式文件系统的副本存取装置,其中0061第一排序单元601,用于将负载小于预置门限的数据节点按照其与客户端的距离大小进行升序排序得到初级数据节点列表;0062第二排序单元602,用于将负载大于预置门限的数据节点按照其负载大小进行升序排序在所述初级数据节点列表后得到最终数据节点列表;0063优先读取单元603,用于从所述最终数据节点列表的首个数据节点开始,优先从排序在前的数据节点读取所述副本。0064请参阅附图7,是本发明实施例提供的HADOOP分布式文件系统的逻辑结构示意图。附图7示例的H。

37、ADOOP分布式文件系统主要包括名字节点701和至少一个数据节点702,其中,名字节点701包括获取模块703、存放模块704和读取模块705,各模块详细说明如下0065数据节点702,用于存放数据块的副本,将本节点的节点负载信息传递至名字节点701;0066获取模块703,用于获取HADOOP分布式文件系统中数据节点702的节点负载信息;0067存放模块704,用于在存放副本时,根据所述节点负载信息,将同一数据块的副本存放在客户端所在数据节点或者负载最低的数据节点;0068读取模块705,用于在读取所述副本时,从负载最低的数据节点和/或与客户端距离最小的数据节点读取。0069附图7示例的存放。

38、模块704包括第一存放单元801、第二存放单元802、第三存放单元803和第四存放单元804,读取模块705包括第一排序单元805、第二排序单元806和优先读取单元807,如附图7所示本发明另一实施例提供的HADOOP分布式文件系统的副本存取装置,其中0070第一存放单元801,用于若所述客户端存在数据节点,则将所述同一数据块的副本CI存放在客户端所在数据节点,否则,将所述副本CI存放在HADOOP分布式文件系统中负载说明书CN104156381A107/7页11最低的数据节点NI,所述副本CI是所述同一数据块的副本中的任意一个副本;0071第二存放单元802,用于将所述同一数据块的副本CJ存。

39、放在数据节点NJ,所述副本CJ是所述同一数据块的副本中不同于所述副本CI的任意一个副本,所述数据节点NJ是与所述数据节点NI属同一机架并且除所述数据节点NI之外负载最低的数据节点;0072第三存放单元803,用于将所述同一数据块的副本CK存放在数据节点NK,所述副本CK是所述同一数据块的副本中不同于所述副本CI和副本CJ的任意一个副本,所述数据节点NK是与所述数据节点NI不属同一机架并且除所述数据节点NI和数据节点NJ之外负载最低的数据节点;0073第四存放单元804,用于将所述同一数据块的剩余副本存放在数据节点NL,所述同一数据块的剩余副本是所述同一数据块的副本中不同于所述副本CI、副本CJ。

40、和副本CK的任意副本,所述数据节点NL是除所述数据节点NI、数据节点NJ和数据节点NK之外,HADOOP分布式文件系统中负载最低的数据节点。0074第一排序单元805,用于将负载小于预置门限的数据节点按照其与客户端的距离大小进行升序排序得到初级数据节点列表;0075第二排序单元806,用于将负载大于预置门限的数据节点按照其负载大小进行升序排序在所述初级数据节点列表后得到最终数据节点列表;0076优先读取单元807,用于从所述最终数据节点列表的首个数据节点开始,优先从排序在前的数据节点读取所述副本。0077需要说明的是,上述装置各模块/单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基。

41、于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。0078本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括只读存储器(ROM,READONLYMEMORY)、随机存取存储器(RAM,RANDOMACCESSMEMORY)、磁盘或光盘等。0079以上对本发明实施例所提供的HADOOP分布式文件系统的副本存取方法、装置和HADOOP分布式文件系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。说明书CN104156381A111/3页12图1图2说明书附图CN104156381A122/3页13图3图4图5图6说明书附图CN104156381A133/3页14图7图8说明书附图CN104156381A14。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1