【技术实现步骤摘要】
本专利技术涉及通信
,尤其涉及一种文件存储方法及名称节点。
技术介绍
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的内存消耗。第一方面,本专利技术实施例提供了一种文件存储方法,应用于包括名称节点和至少两个数据节点的系统,该方法包 ...
【技术保护点】
一种文件存储方法,应用于包括名称节点和至少两个数据节点的系统,其特征在于,所述方法包括:名称节点接收客户端发送的写入请求,所述写入请求在所述客户端在期望存储文件的数据流时生成,所述写入请求携带有所述文件的文件名、至少两种文件格式以及所述至少两种文件格式中各文件格式对应的存储份数,其中,所述至少两种文件格式中的每种文件格式对应的存储份数之和小于所述至少两种文件格式的文件格式总数与预设阈值的乘积;所述名称节点根据所述文件的文件名指定用于存储所述数据流的目标数据块所对应的所述目标数据块的第一标识;所述名称节点根据所述至少两种文件格式以及所述至少两种文件格式中的每种文件格式对应的存储份数,确定所述至少两种文件格式中的每种文件格式的所述目标数据块与所述至少两个数据节点中的目标数据节点之间的对应关系;所述名称节点根据所述对应关系,指示所述客户端协助所述目标数据节点按照所述第一标识存储与自身存在对应关系的文件格式的所述目标数据块。
【技术特征摘要】
1.一种文件存储方法,应用于包括名称节点和至少两个数据节点的系统,其特征在于,所述方法包括:名称节点接收客户端发送的写入请求,所述写入请求在所述客户端在期望存储文件的数据流时生成,所述写入请求携带有所述文件的文件名、至少两种文件格式以及所述至少两种文件格式中各文件格式对应的存储份数,其中,所述至少两种文件格式中的每种文件格式对应的存储份数之和小于所述至少两种文件格式的文件格式总数与预设阈值的乘积;所述名称节点根据所述文件的文件名指定用于存储所述数据流的目标数据块所对应的所述目标数据块的第一标识;所述名称节点根据所述至少两种文件格式以及所述至少两种文件格式中的每种文件格式对应的存储份数,确定所述至少两种文件格式中的每种文件格式的所述目标数据块与所述至少两个数据节点中的目标数据节点之间的对应关系;所述名称节点根据所述对应关系,指示所述客户端协助所述目标数据节点按照所述第一标识存储与自身存在对应关系的文件格式的所述目标数据块。2.根据权利要求1所述的方法,其特征在于,所述名称节点根据所述至少两种文件格式以及所述至少两种文件格式中的每种文件格式对应的存储份数,确定所述至少两种文件格式中的每种文件格式的所述目标数据块与所述至少两个数据节点中的目标数据节点之间的对应关系,包括:所述名称节点根据所述至少两种文件格式以及所述至少两种文件格式中的每种文件格式对应的存储份数,确定所述至少两种文件格式中的每种文件格式的所述目标数据块的个数;所述名称节点根据所述至少两种文件格式中的每种文件格式的所述目标数据块的个数,从所述至少两个数据节点中确定所述目标数据节点,以便确定所述至少两种文件格式中的每种文件格式的所述目标数据块与所述目标数据节点之间的对应关系。3.根据权利要求1所述的方法,其特征在于,所述写入请求携带的所述至少两种文件格式以及所述至少两种文件格式中各文件格式对应的存储份数,根据使用所述文件的业务的业务类型确定。4.根据权利要求1所述的方法,其特征在于,所述写入请求携带的所述至少两种文件格式以及所述至少两种文件格式中各文件格式对应的存储份数,由用户在所述客户端设定。5.根据权利要求1所述的方法,其特征在于,所述名称节点根据所述对应关系,指示所述客户端协助所述目标数据节点按照所述第一标识存储与自身存在对应关系的文件格式的所述目标数据块,包括:所述名称节点向所述客户端发送第一指令,所述第一指令携带所述第一标识、第一数据节点的标识以及所述第一数据节点对应的所述目标数据块的文件格式,所述第一指令指示所述客户端按照所述第一指令携带的文件格式转换所述文件的数据流以及根据所述第一数据节点的标识向所述第一数据节点发送转换后的数据流和所述第一标识,其中,所述第一数据节点为所述目标数据节点中的任一个数据节点。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:所述名称节点向所述第一数据节点发送第二指令,所述第二指令携带所述第一标识和所述第一数据节点对应的所述目标数据块的文件格式,所述第二指令指示所述第一数据节点按照所述第二指令携带的第一标识和文件格式,将所述客户端发送的所述转换后的数据流以所述目标数据块进行存储;所述名称节点向所述第二数据节点发送第三指令,所述第三指令携带所述第一标识、所述第二数据节点对应的所述目标数据块的文件格式和第三数据节点的标识,所述第三指令指示所述第二数据节点根据所述第一标识、所述第三指令携带的文件格式和所述第三数据节点的标识从所述第三数据节点获取所述第三指令携带的文件格式的数据流,并按照所述第一标识和所述第三指令携带的文件格式将获取的数据流以所述目标数据块存储,其中,所述第二数据节点是指所述目标数据节点中不同于所述第一数据节点的数据节点,所述第三数据
\t节点是指所述第一数据节点或者任一个其他所述第二数据节点。7.根据权利要求6所述的方法,其特征在于,所述第三指令携带的文件格式的数据流由所述第三数据节点将所述第三数据节点存储的所述目标数据块中的数据流转换得到。8.一种名称节点,应用于包括所述名称节点和至少两个数据节点的系统,其特征在于,所述名称节点包括处理单元和通信单元,其中:所述处理单元,用于通过所述通信单元接收客户端发送的写入请求,所述写入请求在所述客户端在期望存储文件的数据流时生成,所述写入请求携带有所述文件的文件名、至少两种文件格式以及所述...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。