一种文件存储方法及名称节点技术

技术编号:13634545 阅读:39 留言:0更新日期:2016-09-02 19:35
本发明专利技术实施例公开了一种文件存储方法及名称节点,该方法包括:名称节点接收客户端发送的携带有文件的文件名、至少两种文件格式以及该至少两种文件格式中各文件格式对应的存储份数的写入请求,该各文件格式对应的存储份数之和小于至少两种文件格式的文件格式总数与预设阈值的乘积;名称节点根据该文件名指定目标数据块的第一标识,目标数据块用于存储该文件的数据流;名称节点根据各文件格式对应的存储份数,确定各文件格式的目标数据块与目标数据节点之间的对应关系,并指示客户端协助目标数据节点按照第一标识存储与自身存在对应关系的文件格式的目标数据块。可见,通过实施该方法,在存储多种格式的某文件时,节省了HDFS的存储空间。

【技术实现步骤摘要】

本专利技术涉及通信
,尤其涉及一种文件存储方法及名称节点
技术介绍
HDFS(Hadoop Distribute File System,Hadoop分布式文件系统)是用于储存超大文件的分布式文件系统。例如,HDFS可用于储存几百兆字节、吉字节甚至太字节级别的文件。图1是现有的HDFS架构图,如图1所示,HDFS架构中主要包括客户端、名称节点和至少两个数据节点。其中,客户端用于在需要写入文件的数据流至数据节点时,向名称节点发送该数据流的写入请求;名称节点用于根据该写入请求为存储该数据流的数据块分配对应的数据节点;数据节点用于存储其对应的数据块,即文件以数据块的形式存储于数据节点中。为提高HDFS的可靠性,在HDFS每次存储某一格式的文件的过程中,名称节点会默认为存储该文件的数据流的数据块分配三个不同的数据节点,即该数据块会被存储三份。也就是说,HDFS在存储每种格式的文件时,均会默认存储三份该格式的文件。例如,若HDFS储存SequenceFile格式、TextFile格式和ORCFile格式这三种格式的文件A,HDFS会存储9份文件A(即三份SequenceFile格式的文件A、三份TextFile格式的文件A和三份ORCFile格式的文件A)。显然,当HDFS需要存储很多种格式的某一文件时,HDFS将存储很多份该文件,这给HDFS造成了很大的内存消耗。
技术实现思路
本专利技术实施例公开了一种文件存储方法及名称节点,有利于减小HDFS的内存消耗。第一方面,本专利技术实施例提供了一种文件存储方法,应用于包括名称节点和至少两个数据节点的系统,该方法包括:名称节点接收客户端发送的写入请
求,该写入请求在客户端在期望存储文件的数据流时生成,该写入请求携带有文件的文件名、至少两种文件格式以及该至少两种文件格式中各文件格式对应的存储份数,其中,该至少两种文件格式中的每种文件格式对应的存储份数之和小于至少两种文件格式的文件格式总数与预设阈值的乘积;名称节点根据文件的文件名指定用于存储数据流的目标数据块所对应的目标数据块的第一标识;名称节点根据该至少两种文件格式以及该至少两种文件格式中的每种文件格式对应的存储份数,确定该至少两种文件格式中的每种文件格式的目标数据块与该至少两个数据节点中的目标数据节点之间的对应关系;名称节点根据对应关系,指示客户端协助目标数据节点按照第一标识存储与自身存在对应关系的文件格式的目标数据块。可见,通过实施该方法,在存储多种格式的某文件时,减小了文件的存储份数,从而节省了HDFS的存储空间。在一种可能的设计中,名称节点根据该至少两种文件格式以及该至少两种文件格式中的每种文件格式对应的存储份数,确定该至少两种文件格式中的每种文件格式的目标数据块与至少两个数据节点中的目标数据节点之间的对应关系可以包括:名称节点根据该至少两种文件格式以及该至少两种文件格式中的每种文件格式对应的存储份数,确定该至少两种文件格式中的每种文件格式的目标数据块的个数;名称节点根据该至少两种文件格式中的每种文件格式的目标数据块的个数,从该至少两个数据节点中确定目标数据节点,以便确定至少两种文件格式中的每种文件格式的目标数据块与目标数据节点之间的对应关系。即名称节点根据某一文件格式的目标数据块的个数确定相同数量的数据节点来与该文件格式的目标数据块对应,例如,格式1的目标数据块的个数为2个,则确定两个数据节点与格式1的目标数据块对应。可见,这样可确定与该至少两种文件格式中的每种文件格式的目标数据块对应的目标数据节点,以便后续将各文件格式的目标数据块存储至相应的目标数据节点中。在一种可能的设计中,写入请求携带的至少两种文件格式以及该至少两种文件格式中各文件格式对应的存储份数,根据使用文件的业务的业务类型确定。这样可根据使用文件的业务的业务类型自动地为该至少两种文件格式中各文件格式设置对应的存储份数。在一种可能的设计中,写入请求携带的至少两种文件格式以及该至少两种文件格式中各文件格式对应的存储份数,由用户在客户端设定。用户可根据自
身需要灵活地在客户端设置该至少两种文件格式中各文件格式对应的存储份数,用户可设置每一种文件格式的文件存储较少的份数,从而减少HDFS的存储空间的消耗。在一种可能的设计中,名称节点根据该对应关系,指示客户端协助目标数据节点按照第一标识存储与自身存在对应关系的文件格式的目标数据块可以包括:名称节点向客户端发送第一指令,该第一指令携带第一标识、第一数据节点的标识以及第一数据节点对应的目标数据块的文件格式,该第一指令指示客户端按照第一指令携带的文件格式转换文件的数据流以及根据第一数据节点的标识向第一数据节点发送转换后的数据流和第一标识,其中,该第一数据节点为目标数据节点中的任一个数据节点。通过实施该设计,名称节点指示客户端发送与第一数据节点对应的文件格式的数据流至第一数据节点,从而第一数据节点将接收的该数据流以目标数据块进行储存,以储存与自身存在对应关系的文件格式的目标数据块,且其余的数据节点可从第一数据节点中获取与自身存在对应关系的文件格式的该数据流,并以目标数据块进行储存。可见,通过实施该设计,名称节点可指示客户端协助目标数据节点根据第一标识存储与自身存在对应关系的文件格式的目标数据块。在一种可能的设计中,名称节点还可向第一数据节点发送第二指令,该第二指令携带第一标识和第一数据节点对应的目标数据块的文件格式,该第二指令指示第一数据节点按照第二指令携带的第一标识和文件格式,将客户端发送的转换后的数据流以目标数据块进行存储;名称节点还可向第二数据节点发送第三指令,该第三指令携带第一标识、第二数据节点对应的目标数据块的文件格式和第三数据节点的标识,该第三指令指示第二数据节点根据第一标识、第三指令携带的文件格式和第三数据节点的标识从第三数据节点获取第三指令携带的文件格式的数据流,并按照第一标识和第三指令携带的文件格式将获取的数据流以目标数据块存储,其中,第二数据节点是指目标数据节点中不同于第一数据节点的数据节点,第三数据节点是指第一数据节点或者任一个其他第二数据节点。可见,通过实施该设计,数据节点可从除该数据节点之外的其他数据节点中获取相应格式的数据流,并以目标数据块进行储存。在一种可能的设计中,第三指令携带的文件格式的数据流由第三数据节点将第三数据节点存储的目标数据块中的数据流转换得到。在一种可能的设计中,名称节点根据该对应关系,指示客户端协助目标数据节点根据第一标识存储与自身存在对应关系的文件格式的目标数据块可以包括:名称节点向客户端发送第四指令,该第四指令携带第一标识、第一数据节点的标识,该第四指令用于指示客户端根据第一数据节点的标识,将文件的数据流和第一标识发送至第一数据节点。其中,第一数据节点为目标数据节点中的任一个数据节点。通过实施该设计,名称节点可指示客户端发送文件的数据流至第一数据节点,从而第一数据节点可将接收的数据流转换为与自身存在对应关系的文件格式的数据流,并将转换后的数据流以目标数据块进行存储,以存储与自身存在对应关系的目标数据块;且其余的数据节点可从第一数据节点中获取目标数据块中的数据流,从而可将获取的数据流转换为与自身存在对应关系的文件格式的数据流,并将转换本文档来自技高网
...

【技术保护点】
一种文件存储方法,应用于包括名称节点和至少两个数据节点的系统,其特征在于,所述方法包括:名称节点接收客户端发送的写入请求,所述写入请求在所述客户端在期望存储文件的数据流时生成,所述写入请求携带有所述文件的文件名、至少两种文件格式以及所述至少两种文件格式中各文件格式对应的存储份数,其中,所述至少两种文件格式中的每种文件格式对应的存储份数之和小于所述至少两种文件格式的文件格式总数与预设阈值的乘积;所述名称节点根据所述文件的文件名指定用于存储所述数据流的目标数据块所对应的所述目标数据块的第一标识;所述名称节点根据所述至少两种文件格式以及所述至少两种文件格式中的每种文件格式对应的存储份数,确定所述至少两种文件格式中的每种文件格式的所述目标数据块与所述至少两个数据节点中的目标数据节点之间的对应关系;所述名称节点根据所述对应关系,指示所述客户端协助所述目标数据节点按照所述第一标识存储与自身存在对应关系的文件格式的所述目标数据块。

【技术特征摘要】
1.一种文件存储方法,应用于包括名称节点和至少两个数据节点的系统,其特征在于,所述方法包括:名称节点接收客户端发送的写入请求,所述写入请求在所述客户端在期望存储文件的数据流时生成,所述写入请求携带有所述文件的文件名、至少两种文件格式以及所述至少两种文件格式中各文件格式对应的存储份数,其中,所述至少两种文件格式中的每种文件格式对应的存储份数之和小于所述至少两种文件格式的文件格式总数与预设阈值的乘积;所述名称节点根据所述文件的文件名指定用于存储所述数据流的目标数据块所对应的所述目标数据块的第一标识;所述名称节点根据所述至少两种文件格式以及所述至少两种文件格式中的每种文件格式对应的存储份数,确定所述至少两种文件格式中的每种文件格式的所述目标数据块与所述至少两个数据节点中的目标数据节点之间的对应关系;所述名称节点根据所述对应关系,指示所述客户端协助所述目标数据节点按照所述第一标识存储与自身存在对应关系的文件格式的所述目标数据块。2.根据权利要求1所述的方法,其特征在于,所述名称节点根据所述至少两种文件格式以及所述至少两种文件格式中的每种文件格式对应的存储份数,确定所述至少两种文件格式中的每种文件格式的所述目标数据块与所述至少两个数据节点中的目标数据节点之间的对应关系,包括:所述名称节点根据所述至少两种文件格式以及所述至少两种文件格式中的每种文件格式对应的存储份数,确定所述至少两种文件格式中的每种文件格式的所述目标数据块的个数;所述名称节点根据所述至少两种文件格式中的每种文件格式的所述目标数据块的个数,从所述至少两个数据节点中确定所述目标数据节点,以便确定所述至少两种文件格式中的每种文件格式的所述目标数据块与所述目标数据节点之间的对应关系。3.根据权利要求1所述的方法,其特征在于,所述写入请求携带的所述至少两种文件格式以及所述至少两种文件格式中各文件格式对应的存储份数,根据使用所述文件的业务的业务类型确定。4.根据权利要求1所述的方法,其特征在于,所述写入请求携带的所述至少两种文件格式以及所述至少两种文件格式中各文件格式对应的存储份数,由用户在所述客户端设定。5.根据权利要求1所述的方法,其特征在于,所述名称节点根据所述对应关系,指示所述客户端协助所述目标数据节点按照所述第一标识存储与自身存在对应关系的文件格式的所述目标数据块,包括:所述名称节点向所述客户端发送第一指令,所述第一指令携带所述第一标识、第一数据节点的标识以及所述第一数据节点对应的所述目标数据块的文件格式,所述第一指令指示所述客户端按照所述第一指令携带的文件格式转换所述文件的数据流以及根据所述第一数据节点的标识向所述第一数据节点发送转换后的数据流和所述第一标识,其中,所述第一数据节点为所述目标数据节点中的任一个数据节点。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:所述名称节点向所述第一数据节点发送第二指令,所述第二指令携带所述第一标识和所述第一数据节点对应的所述目标数据块的文件格式,所述第二指令指示所述第一数据节点按照所述第二指令携带的第一标识和文件格式,将所述客户端发送的所述转换后的数据流以所述目标数据块进行存储;所述名称节点向所述第二数据节点发送第三指令,所述第三指令携带所述第一标识、所述第二数据节点对应的所述目标数据块的文件格式和第三数据节点的标识,所述第三指令指示所述第二数据节点根据所述第一标识、所述第三指令携带的文件格式和所述第三数据节点的标识从所述第三数据节点获取所述第三指令携带的文件格式的数据流,并按照所述第一标识和所述第三指令携带的文件格式将获取的数据流以所述目标数据块存储,其中,所述第二数据节点是指所述目标数据节点中不同于所述第一数据节点的数据节点,所述第三数据
\t节点是指所述第一数据节点或者任一个其他所述第二数据节点。7.根据权利要求6所述的方法,其特征在于,所述第三指令携带的文件格式的数据流由所述第三数据节点将所述第三数据节点存储的所述目标数据块中的数据流转换得到。8.一种名称节点,应用于包括所述名称节点和至少两个数据节点的系统,其特征在于,所述名称节点包括处理单元和通信单元,其中:所述处理单元,用于通过所述通信单元接收客户端发送的写入请求,所述写入请求在所述客户端在期望存储文件的数据流时生成,所述写入请求携带有所述文件的文件名、至少两种文件格式以及所述...

【专利技术属性】
技术研发人员:张建
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1