基于HDFS 的复合式大数据存储研究

  • 投稿车师
  • 更新时间2015-09-16
  • 阅读量701次
  • 评分4
  • 36
  • 0

陈新华 CHEN Xin-hua;孙雅妮 SUN Ya-ni

(四川信息职业技术学院,广元 628017)

摘要: Hadoop中的HDFS是大数据存储处理的关键技术之一,HDFS有着存储超大数据集高效可靠等优点,HDFS存储小文件有着明显的缺陷。HBase是有着非常高效的数据查询能力,本文目标是结合HDFS和HBase各自的优点,设计一个复合式的大数据存储系统,将大于64MB文件存储在HDFS中;大于10M小于64MB文件存储在HDFS中,将文件目录存储在HBase中,提高检索速度;小于10M的文件直接存储在HBase中,较好的解决了大量小文件存储时NameNode内存瓶颈问题。实验证明这种设计能够提高存储效率。

教育期刊网 http://www.jyqkw.com
关键词 : HDFS;复合式;大数据存储

中图分类号:TP333 文献标识码:A 文章编号:1006-4311(2015)24-0051-03

作者简介:陈新华(1978-),男,陕西蒲城人,讲师,工学硕士,研究方向为云计算技术、信息安全技术。

0 引言

HDFS是设计目标是TB级以上的大数据存储,存储小于64MB的文件时会给Hadoop系统带来服务性能上的问题。首先,小文件过多会影响NameNode的内存和DataNode的内存使用。其次,访问大量小文件的速度远小于访问几个大文件[1]。根据HDFS数据存储的机制读取数据时不论大小数据先要到NameNode中查找数据文件的分块情况及每块文件的存储路径,然后转到相应的DataNode上获取数据块,读取大量小文件时要多次与NameNode交互,增加了NameNode的负担。因此要对HDFS存储小文件机制进行改进。

本文使用HBase高效检索的优点,结合HDFS文件高可靠性的优点,设计能够高效处理大量小文件存储,能够作为一般信息系统的复合型存储系统框架,本框架能够充分提高数据存储的安全性,提高信息系统运行的可靠性。

1 hadoop平台简介

Hadoop是由Apache基金会开发的分布式大数据存储和处理的系统[2],具有高可靠性,高可扩展性及高容错等。Hadoop采用虚拟化的技术封装了底层实现细节,为用户提供了一个高度抽象的应用环境。

Hadoop中核心模块是HDFS(Hadoop Distributed File System)和MapReduce(分布式编程模型),Hadoop中所包含的组件如图1所示[3]。

HDFS 作为Hadoop底层基础设施,为云计算提供了高可靠性、高性能的存储服务,MapReduce是一个分布是大数据处理编程框架。简单来说HDFS是hadoop中存储数据的机制,MapReduce是处理存储在HDFS中要处理的数据集的技术框架。

2 HDFS文件系统

2.1 HDFS架构

HDFS文件系统框架如图2所示,HDFS是一个主从结构的体系,Hadoop集群中的HDFS文件系统由一个NameNode(主)节点、若干个DataNode(从)节点和Secondary NameNode节点组成[4]。

其中NameNode负责管理文件系统的元数据,维护整个系统中分布式文件系统的目录,主节点通过心跳线检测每个从节点的活动状态及数据块副本个数是否满足配置最低个数要求,DataNode是实际存储数据的节点。

客户需要写入数据时通过与NameNode通信,由NameNode根据负责数据分块数目、每个数据块具有的副本个数及数据块存储在那些节点和机架中,并将数据存储到具体的存储节点中;用户需要读取数据时先通过NameNode获取数据目录信息,然后到相应的DataNode上获取数据。HDFS文件系统中的Second NameNode作为NameNode的备份系统,通过实时获取NameNode内存中的目录,在NameNode出现故障时可用Second NameNode节点备份数据启动集群。(图2)

2.2 HDFS文件系统特点

HDFS文件系统被设计为存储非常大的数据,并且具有很好的可靠性和高效性,HDFS文件系统具有以下的特点[5]。

①HDFS设计目标是面向廉价的服务器集群设计的;

②具有良好的容错能力;

③具有较好的服务扩展能力;

④包含了检测和处理故障的机制;

⑤向用户提供透明的存储服务;

⑥由驻留在物理服务器上的软件集群控制着系统运行的各个方面;

⑦HDFS通常以最小64M的数据块存储文件;

⑧HDFS对“一次存入,多次读取”的工作进行了负载优化。

虽然HDFS文件系统有着非常多的优点,但是HDFS有着与生俱来的一些缺点,主要表现在HDFS文件系统主要面向大文件存储,存储小文件时受到文件总数的限制,HDFS系统中每个文件及文件块都需要在NameNode中以150字节的存储容量保存其目录信息[6],假设每个文件只有一个文件块,要保存一千万个小文件需要NameNode提供2.8G内存空间,如果文件数目增加至一亿个,则要占据28G内存空间,可见Hadoop集群中存储文件的大小受限于NameNode的内存大小;另一个问题是小文件给Hadoop的读取性能带来很大的影响。

3 存储框架设计

3.1 大数据存储策略

DFS本身就是为超大数据集提供高效存储和访问而设计的,根据HDFS的设计原理,HDFS首先会把文件按照默认块大小(64M)分块[7],在根据副本个数分别存储在不同的DataNode中。所以针对大文件存储我们直接使用HDFS的存储系统。

3.2 小文件的存储策略

HDFS在存储小文件方面没有优势,而且访问小文件的速度也会比较低。因此可以结合HBase实现小文件的存储,对于小于10M的文件直接将其存储到HBase中,对于大于10M小于64M的文件将其索引存储在HBase中,提高检索速度,提高文件存储的效率。

3.3 基于Hadoop的存储框架

不同的数据类型有着不同的存储策略,结合Hdoop框架设计出如图3的复合型数据存储框架。在存储框架中用户或者应用程序根据不同的数据类型访问不同的存储方式,主要分为结构化存储和非结构化存储,结构化存储保存在关系型数据库中,然后利用关系型数据库和HDFS的相互导入功能达到使用HDFS系统高可靠性特点,非结构化数据通过非结构化的访问接口对大型文件直接存储到HDFS系统中,小文件采用存入HBase中,对于文件大小介于小文件和HDFS分块大小之间的数据在HBase建立相关的索引,将文件存入HDFS中,提高其访问效率。

复合型存储框架的特点有:

①结构化和非结构化数据都能够进行存储;

②对小文件存储减少了HDFS的固有问题的影响;

③使用了HDFS系统的高可靠性,达到保证数据存储安全的目标;

④对存储在HDFS中的数据可直接使用MapReduce进行分析。

4 性能评估

4.1 实验环境

实验环境为三个节点的Hadoop集群,操作系统均为64位的Ubuntu 14.04,Hadoop版本为1.0.4,JDK版本为1.8.0.40。三个节点中其中一个节点为主节点运行NameNode、Secondary和JobTracker服务,从节点上运行DataNode和JobTracker服务。HBase安装在主节点上,提供快速查询服务。

4.2 实验结果

本实验在未做改进之前向HDFS中写入100000个3MB的文件,做了改进之后再向HDFS存入100000个3M文件,分别测试器其内存使用情况和读写文件的耗时情况如图4所示,图5所示。通过测试可以得出改进后HDFS对小文件的存储在消耗NameNode、存储时间上有了比较好的改善。

5 结论

依据Hadoop关键功能HDFS的机制和特点,在据存储过程中对大文件存储使用了HDFS系统存储,小文件使用HBase直接存储,介于小文件和HDFS数据分块大小之间的文件采用在HBase中建立索引信息,利用HBase的高效存取的性能,减少HDFS系统存储小文件时带来的不利影响,提高了存储效率。

教育期刊网 http://www.jyqkw.com
参考文献

[1]small files problem.http://www.cloud-era.com/blog/2009/02/the-small-problem/. 2009-2-2.

[2]贾欧阳,阮树桦,田兴,李丹.MapReduce中Combine优化机制的利用[J].计算机时代,2013,9.

[3]蔡斌,陈湘萍.Hadoop技术内幕 深入解析HADOOP COMMON和HDFS架构设计与实现原理[M].机械工业出版社,2013,4.

[4]刘鹏.云计算[M]二版.电子工业出版社,2011,5.

[5]Garry Turkington著.张治起译.Hadoop基础教程[M].人民邮电出版社,2014,1.

[6]Tom Wbite著.周敏奇,王晓玲,金澈清,钱卫宁译.Hadoop权威指南[M].清华大学出版社,2011,7.

[7]陆嘉恒.Hadoop实战[M].机械工业出版社,2012,11.