Hadoop分布式文件系统针对日志型小文件的存储和处理方法技术方案

技术编号:11650720 阅读:161 留言:0更新日期:2015-06-25 22:58
本发明专利技术涉及计算机HDFS分布式文件系统领域,公开了一种HDFS针对日志型小文件的存储和处理方法,将文件按物理位置就近合并,同时使用Copy-On-Write机制优化小文件的读写。具体为,将日志型小文件按照物理路径就近合并,客户端读写日志型小文件时先从名字节点NameNode读取合并文件和合并文件索引的元数据Metadata信息,然后根据合并文件索引从合并文件中读写各个日志型小文件数据。本发明专利技术针对日志型小文件,提出了一种新的处理方法,该方法将小文件metadata的内存负担从NameNode转移到了客户端,有效的解决了HDFS处理大量小文件的低效问题。客户端缓存小文件metadata也使得小文件的访问得到加速,多次连续访问物理位置临近的小文件时无需向NameNode请求metadata。

【技术实现步骤摘要】

本专利技术涉及计算机HDFS分布式文件系统领域,具体涉及一种HDFS针对日志型小 文件存储和处理方法。
技术介绍
HDFS是Hadoop Distributed File System的简称,是一个分布式文件存储系统。 随着互联网的应用渗透到人们生活的方方面面,越来越多的设备被加入到互联网 中。这些设备时时刻刻都在生产着数据,我们需要处理的数据的量和种类越来越多。Hadoop 下的HDFS作为GFS的开源实现,对大文件处理相当出色,但是处理小文件的效率十分低下。 具体体现在大量小文件占用NameNode内存资源及DataNode磁盘利用率低。 业界已经尝试了一些HDFS针对小文件的优化方法。但是这些方法都偏重于存储, 提供的接口对Hadoop计算框架MapReduce并不透明,使得针对小文件的分析处理变得复杂 了。既能高效的存储小文件又能保持与MapReduce框架兼容是一项极具意义且富有挑战的 工作。 所谓日志型小文件,是指由数据源(可以是物理的采集设备也可以是数据源抓 取、生成程序)产生的,与时序相关的一系列带有相似结构且一般具有相似含义的小型数 据块(小文件)。
技术实现思路
本专利技术的目的是克服现有技术的不足,提供一种HDFS针对日志型小文件的存储 和处理方法,将文件按物理位置就近合并,同时使用Copy-On-Write机制优化小文件的读 写。该方法能够有效解决HDFS处理日志型小文件的效率低下,同时提供的存储接口与 MapReduce框架兼容。 本专利技术所采用的技术方案为:HDFS包括一个Hadoop集群,集群中包含一个名字节 点NameNode和多个数据节点DataNode,多个客户端通过客户端库访问Hadoop集群存储的 文件,本专利技术将日志型小文件按照物理路径就近合并,客户端读写日志型小文件时先从名 字节点NameNode读取合并文件和合并文件索引的元数据Metadata信息,然后根据合并文 件索引从合并文件中读写各个日志型小文件数据;客户端读写非日志型小文件时流程保持 不变(保持原生HDFS的处理方式)。 名字节点NameNode管理所有HDFS文件的元数据Metadata,包括普通HDFS文件 (即,非所述日志型小文件)以及合并文件的元数据Metadata,日志型小文件对名字节点 NameNode是透明的,合并文件对客户端程序是透明的。客户端程序库提供与常规HDFS API 一致的接口供客户端程序读写日志型小文件。 日志型小文件的合并是按物理路径就近合并的,具体来说,同一目录下(不包含 子目录)的日志型小文件被合并为一个文件,称之为合并文件MergeFile。日志型小文件 的元数据Metadata被顺序存入一个文件,称之为合并文件索引Mergelndex。合并文件 MergeFile与合并文件索引MergeIndex位于原HDFS目录下,采用保留的文件名命名;日志 型小文件被合并之后其对应的HDFS文件对象及元数据Metadata结构将从HDFS中删除。 MergeFile支持追加、修改、删除操作,追加、修改、删除的原子操作单位都是日志型小文件; MergeFile修改过后,MergeIndex也做出对应改变,文件的追加、修改、删除均通过向合并 文件索引中追加文件项记录完成。 客户端读写特定路径的文件时,先尝试从名字节点NameNode读取文件的元数据 Metadata信息,如果读取成功则说明该文件是普通HDFS文件,按照HDFS原生处理流程处 理,如果读取失败则说明该文件或者是一个日志型小文件或者不存在,此时需要获取该文 件路径父目录下的Mergelndex,并搜索待读写的文件名。如果搜索成功则说明该路径指向 一个被合并的文件,读写操作转入MergeFile的处理流程,如果搜索失败则说明该路径不 存在。 客户端程序读取日志型小文件时客户端程序库返回一个与HDFS原生API兼容的 文件输入流对象,任何针对该对象的读操作都将重定向至目标文件在MergeFiIe中的对应 数据块。该文件流对象确保客户程序不会读取到目标文件数据之外的任何数据。 客户端程序写入日志型小文件时,若目标文件已存在于MergeFile,客户端库建 立一份HDFS文件格式的目标文件数据的副本,返回一个与该副本文件关联的文件输出流 对象,对目标文件的写操作重定向至副本文件。输出流对象被关闭时文件副本被合并回 MergeFile0 日志型小文件的合并发生于文件写入结束,也即是以写方式打开文件后关闭文 件时进行文件合并。合并操作分为三类情形:(1)当前写入的文件是新创建的文件,此时 文件被追加至MergeFile末尾,在MergeIndex文件中同时追加一条记录,记录当前文件 的文件名、在MergeFile中的偏移量、文件大小、文件所属用户、权限、删除标记及其他元 数据Metadata。(2)当前写入的文件是已经存在的文件,并确有数据修改发生,此时先从 MergeFile中删除原文件,再将写入的文件追加至MergeFile。(3)当前写入的文件是已经 存在的文件,但是没有数据修改,此时直接抛弃当前文件。 删除所述日志型小文件的操作通过向合并文件索引中追加一条墓碑记录完成,日 志型小文件的数据在下一次整理合并文件之前都不会被从磁盘清除;墓碑记录中,删除标 志位FileDeleted被置为1 ;在文件搜索过程中,FileDeleted为1的文件被作为无效数据 忽略。文件整理操作是根据MergeIndex中有效的项,即排除FileDeleted为1的项,重建 MergeFile的过程;经过文件整理操作后,MergeFile和MergeIndex不再包含无效的文件数 据。 MergeIndex和MergeFile的碎片化程度由两个指标衡量:目录文件碎片率FF和 目录磁盘碎片率DF,任一指标超过设定的阈值都将触发文件整理操作;整理结束后,FF = 0%且DF = 0%。其中,目录文件碎片率FF定义为MergeIndex中无效文件数与总文件数之 比;目录磁盘碎片率DF定义为MergeFile中无效数据字节与总文件数据字节之比。 本专利技术的优点是:本专利技术针对日志型小文件,提出了一种新的处理方法,该方法将 小文件metadata的内存负担从NameNode转移到了客户端,有效的解决了 HDFS处理大量小 文件的低效问题。客户端缓存小文件metadata也使得小文件的访问得到加速,多次连续 访问物理位置临近的小文件时无需向NameNode请求metadata。解决了大量小文件引发的 NameNode内存负载问题,以及客户端向NameNode频繁地请求元数据Metadata造成的性能 瓶颈。本专利技术的数据存储接口与原生HDFS在应用程序接口(API)层次兼容。【附图说明】 图1为MergeFile结构示意图。 图2为MergeIndex结构不意图。 图3为MergeIndex单个文件项所存储的文件元数据结构示意图。 图4为本专利技术改进后的HDFS读文件操作流程图。 图5为本专利技术改进后的HDFS写文件操作流程图。【具体实施方式】 下面结合附图和实施例对本专利技术作进一步说明。 本专利技术包括一个Hadoop集群,集群中包含一个NameN本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/55/CN104731921.html" title="Hadoop分布式文件系统针对日志型小文件的存储和处理方法原文来自X技术">Hadoop分布式文件系统针对日志型小文件的存储和处理方法</a>

【技术保护点】
Hadoop分布式文件系统针对日志型小文件的存储和处理方法,所述Hadoop分布式文件系统HDFS包括一个Hadoop集群,集群中包含一个名字节点和多个数据节点,多个客户端通过客户端库访问Hadoop集群存储的文件,其特征在于:所述Hadoop集群中的日志型小文件按照物理路径就近合并,客户端读写日志型小文件时先从名字节点读取合并文件和合并文件索引的元数据信息,然后根据合并文件索引从合并文件中读写各个日志型小文件数据。

【技术特征摘要】

【专利技术属性】
技术研发人员:徐锐刘斌台宪青
申请(专利权)人:江苏物联网研究发展中心北京科电高技术公司
类型:发明
国别省市:江苏;32

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

1