一种HDFS针对小文件的改进方法技术

技术编号:9596856 阅读:105 留言:0更新日期:2014-01-23 02:20
本发明专利技术涉及计算机HDFS分布式文件系统领域,公开了一种HDFS针对小文件的改进方法,将Namenode的部分权限下放Datanode节点上,让Datanode缓存部分小文件元数据信息,让Datanode处理绝大多数的小文件读写请求,最大限度的减轻Namenode的负担。本发明专利技术针对HDFS处理小文件的效率低下问题,提出了一种新的处理方法,该方法有效解决了Namenode单点负载过重的问题,将小文件的压力分配到数据节点Datanode上,从而达到了整个大数据处理集群对大文件和小文件处理效率性能相当的理想效果。

【技术实现步骤摘要】
【专利摘要】本专利技术涉及计算机HDFS分布式文件系统领域,公开了一种HDFS针对小文件的改进方法,将Namenode的部分权限下放Datanode节点上,让Datanode缓存部分小文件元数据信息,让Datanode处理绝大多数的小文件读写请求,最大限度的减轻Namenode的负担。本专利技术针对HDFS处理小文件的效率低下问题,提出了一种新的处理方法,该方法有效解决了Namenode单点负载过重的问题,将小文件的压力分配到数据节点Datanode上,从而达到了整个大数据处理集群对大文件和小文件处理效率性能相当的理想效果。【专利说明】一种HDFS针对小文件的改进方法
本专利技术涉及计算机HDFS分布式文件系统领域,具体涉及一种HDFS针对小文件的改进方法。技术背景Hadoop Distributed File System,简称 HDFS,是一个分布式文件系统。随着互联网的快速发展,数据量呈现指数级增长,为了适应这种情况,如今已经出现了很多大的服务器架构如数据中心以及云计算。在大数据处理方面,Google的GFS为处理大文件提供了有效的方法,而Hadoop下的文件系统HDFS作为GFS开源实现,实现了 GFS的绝大多数功能,其也是基于大文件处理的,大文件的处理效率出色,然而在处理小文件效率上却十分低下,因为在存储小文件时需要反复的请求存储地址,分配存储的block (块),大量的小文件使单Namenode (名字节点)的HDFS显得力不从心,并且产生了大量的元数据占用Namenode的内存。然而,在实际的应用当中,小文件比比皆是,从个人应用中产生的日常文件到web应用中都会产生许多小文件,特别是近些年来blog、wik1、spaces的兴起导致了互联网提供内容的方式发生改变,以用户创造内容为标志的web2.0的到来,标志着web己经成为最大的信息系统,其数据具有海量、多样、动态变化等等特征,web2.0网站会产生海量的小文件,如用户头像、相册微缩图等文件,日志文件,介绍等等。这对能及时快速的处理这些海量的小文件提出了更高的需求挑战,业界的研究人员都纷纷把目光转向这里。
技术实现思路
本专利技术要解决的技术问题是:本专利技术提供了一种HDFS针对小文件处理的改进方法,该方法要能够有效解决HDFS在处理小文件时效率低下的问题。具体说来主要解决以下几个问题: 1、单Namenode在处理读写请求时维护元数据问题; 2、元数据结构问题; 3、元数据缓存策略问题; 4、元数据更新策略问题。本专利技术所采用的技术方案为:一种HDFS针对小文件的改进方法,包括一个集群,集群包含一个Namenode (名字节点)和多个Datanode (数据节点),能被多个客户端访问,如图1所示,其中,将Namenode的部分权限下放Datanode节点上,让Datanode缓存部分小文件元数据信息,处理绝大多数的小文件读写请求。除Namenode管理文件系统所有的元数据外,Datanode也保存部分的元数据,主要是小文件的元数据信息,大文件元数据信息仍然保存在Namenode上。这些元数据包括名称空间,访问控制信息,文件到块的映射信息,以及块当前所在的位置,Datanode上所有的元数据保存在内存之中,而Namenode由于小文件元数据巨大,绝大部分小文件的元数据保存在磁盘上。其中Namenode还管理系统范围的活动,例如块租用管理,孤儿块的垃圾回收以及块在数据服务器间的移动如复制,删除等,并用心跳信息周期地跟每个Datanode通讯,给他们提供指令操作并收集他们的反馈状态。客户端的操作不再是单一的向Namenode请求查找或分配相应的元数据,而是将部分小文件的元数据操作分配到Datanode上进行,如小文件的查找,如果没有查找到相应的结果再到Namenode上进行查找,写文件时,client根据以往的读写记录,直接查询Datanode是否有未写满并且此时并没有其他的client在写的block文件块,如果有,则直接将数据写入这个数据块,并更新相应的元数据信息,如果没有,则向Namenode发送写数据请求,再由Namenode分配一个新的数据块来完成数据写入,client查询数据块是在本机上完成的;读文件时,直接查询Datanode,如果未能找到,再查找Namenode。文件被分割成固定尺寸的块,依然采用原HDFS默认的64M。在每个块创建的时候,Namenode分配给它一个不变的全球唯一的64位的块句柄号对它进行标识,其中第一位用来标识大小文件数据块,Datanode把块作为Iinux文件保存在本地硬盘上,并根据指定的块句柄号和字节在数据块内的范围来读写块数据。为了保证可靠性,每个块都会复制到多个块服务器上。默认情况下,系统仍然保存三个备份。块尺寸大小是整个HDFS设计的关键之一,因为惰性空间分配有助于避免了造成内部碎片带来的空间浪费,而且为了和使整个HDFS大小文件块的划分统一,默认情况下仍然是64MB,可以通过配置文件进行修改。在此,我们可以定义小于IM的文件都是小文件。采用大的数据块在本专利中新的HDFS中处理小文件有几大好处,首先就是减轻Namenode的负担,因为整个块的创建划分依然是由Namenode来负责,在新建完一个块后,后续的绝大多数的往块中存储文件是通过Datanode来进行管理。在这里假设以一种理想的情况来模拟小文件存储的请求被系统处理的方式。每一个管理的小文件大小都是1M,则一个64M的块可以保存64个文件,64个文件的写入理想情况下只有一个是由Namenode来控制的,而Datanode控制的和Namenode控制的文件之比为63:1,,从而有效的减轻了 Namenode的负担。其次,大块的设置在处理小文件时可以有效利用Cache来减少对磁盘的访问次数,提高速度存储速度。最后,大块的划分可以减少由Namenode和Datanode管理的小文件元数据空间。在设计中,所有的块的创建也是通过Namenode来负责的,但是在创建写入小文件块时选择块放置的位置的策略相比以前更加复杂; 写入小文件块时,需要在Namenode保存的Datanode已创建的未满块列表里选择创建数小于3块的列表里选择相应的机器,并满足HDFS选择块位置的两个规则(硬盘使用率以及和客户端之间的拓扑距离),三个块也是按照原HDFS分布,两个在同一机架,一个在另外一个机架。当客户端(Client)向Namenode请求创建数据块却没有小于3个块的Datanode时,Namenode根据他们之间的拓扑结构直接选择一个Datanode来对客户端的请求进行处理,Datanode将Client的请求排队往自己未写满的数据块里直接写入数据。当Datanode里所有的数据块写满之后,仍然有Client写请求,则排队在最前面的Client向Namenode请求创建新块。因为刚写完,此时是不可能存在不满足条件的Datanode的。元数据是整个系统的控制信息,具有非常关键的作用,为了减轻Namenode的负担,优化HDFS的读写速度,在Namenode创建一个块之后,将对此块操作的控制权转移到Datanode,并在一个数据块中存储多个小文件。因此根据本文档来自技高网
...

【技术保护点】
一种HDFS针对小文件的改进方法,包括一个集群,其中集群中包含一个Namenode和多个Datanode,能被多个客户端访问,其特征在于:将Namenode的部分权限下放Datanode节点上,让Datanode缓存部分小文件元数据信息,处理绝大多数的小文件读写请求。

【技术特征摘要】

【专利技术属性】
技术研发人员:孟祥飞邓鹏飞吴楠宗栋瑞邓强
申请(专利权)人:浪潮电子信息产业股份有限公司
类型:发明
国别省市:

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

1