1、基于 Hadoop 的数据存储系统的分析和设计【摘要】随着科技的不断进步,在物联网、云计算、移动互联网等发展的推动下,数据发生了“大爆炸” ,其规模呈几何级上升, “开采”大数据(Big Data)以挖掘其内部蕴藏的“富矿”成为研究焦点。Hadoop 是一个用于构建云平台的 Apache 开源项目,使用 Hadoop 框架有利于我们方便、快速的实现计算机集群。Hadoop 的框架最核心的设计就是:HDFS(分布式文件系统)和 MapReduce。HDFS 为海量的数据提供了存储,则 MapReduce 为海量的数据提供了计算。本文结合传统的数据挖掘系统提出了一个易扩展的高效的基于 Hadoop
2、 的数据存储系统。 【关键词】数据挖掘,Hadoop 1 引言 1.1 数据挖掘技术概述 数据挖掘出现于 20 世纪 80 年代后期,90 年代有了突飞猛进的发展,并在进入 21 世纪后继续繁荣。随着科技的不断进步,在物联网、云计算、移动互联网等发展的推动下,数据发生了“大爆炸” ,其规模呈几何级上升。如何将这些海量的、复杂的数据转化成人类可理解的、有用的知识,从而指导我们的决策正成为目前面临的重要的问题。 如今,随着云计算的出现和发展,数据挖掘技术迎来了新的机遇和挑战。现在的基于云计算的并行数据挖掘与服务的模式。数据挖掘的算法可以分布在多个节点上,并且这些算法之间是并行的。在进行数据挖掘的过
3、程中,我们需要的资源会实现按需分配,具有很大的伸缩性。在分布式计算模型下,使用的是云计算模式。算法的实现采用 MapReduce 的方式,从而实现并行的要求。 1.2 Hadoop 框架 Hadoop 是一个开源的分布式系统基础架构,由 Apache 基金会开发。Apache Hadoop 是一款支持数据密集型分布式应用并以 Apache 2.0 许可协议发布的开源软件框架。它支持在商品硬件构建的大型集群上运行的应用程序。 Hadoop 框架透明地为应用提供可靠性和数据移动。它实现了名为MapReduce 的编程范式:应用程序被分割成许多小部分,而每个部分都能在集群中的任意节点上执行或重新执行
4、。此外,Hadoop 还提供了分布式文件系统,用以存储所有计算节点的数据,这为整个集群带来了非常高的带宽。MapReduce 和分布式文件系统的设计,使得整个框架能够自动处理节点故障。它使应用程序与成千上万的独立计算的电脑和 PB 级的数据。现在普遍认为整个 Apache Hadoop 平台包括 Hadoop 内核、MapReduce、Hadoop 分布式文件系统(HDFS)以及一些相关项目,有Apache Hive 和 Apache HBase 等等。 2 Hadoop 数据存储平台 2.1 基本设计思想 我们的基本思想是:充分利用 Hadoop 的集群特征,将数据挖掘系统中需要巨大计算能力
5、的各个模块的计算和存储要求扩展到 Hadoop 集群中的各个节点上,利用集群的并行计算和存储能力来进行相关数据挖掘工作。系统采用 MVC 三层架构设计使结构更加清晰,系统易于扩展。在底层,使用 Hadoop 来存储、分析和处理巨大的数据量,而在高层通过接口直接透明的调用底层的计算和存储能力。 在整个系统中,我们可以使用 HDFS 来存储文件和数据。HDFS 具有很高的数据吞吐量,并且很好的实现了容错机制。HDFS 提供了多种访问接口,包括 API 以及各种操作命令。使用 HDFS,我们可以为原始的大数据集提供存储空间,对临时文件进行存储,为数据预处理、数据挖掘过程提供输入数据,同时输出数据我们
6、也保存在 HDFS 中。系统整体架构如图 1 所示。 2.2 系统结构模型 结合以上的基本设计思想以及典型的数据挖掘系统模型,采用分层的思想,自顶向下每层都透明的调用下层接口,最顶层为交互层,用于用户和系统之间的交互。最底层为分布式计算层,使用 HADOOP 来实现文件分布式存储和并行计算功能。使用分层,各层之间变得独立,易于系统的扩展。下面详细介绍我们得到的基于 HADOOP 的数据存储系统。如图 2 所示。 1、交互层 提供系统和用户之间的接口。通过提供具有良好表现形式的图形界面,使得用户可以登陆系统定制各种细粒度的业务,查看或者保存各种输出结果。 交互层具有的模块包括: 用户管理模块:实
7、现用户身份的识别以及相应权限的设置,同时也包括对用户登陆或者注销等常用的管理。 业务展示模块:实现用户提交的各种业务,并对业务结果进行查看,分析和保存等功能。用来将系统的返回结果交付给用户。 2、业务应用层 提供了各种业务逻辑并实现了对各种业务流程的控制和调度。用户提交的业务在这一层被处理,控制和调度。 业务应用层具有的模块包括: 用户界面:用户可以通过简单应用的操作界面工具,进行海量数据处理存储。 业务响应模块:相应上层的业务模块,对完成业务所需的子业务进行调用、管理,并通过调用底层模块完成业务。 3、数据处理层 为业务应用层提供数据挖掘阶段业务流需要的各个模块,并且具有较细的粒度。如数据预
8、处理,模式评估,数据挖掘等组件。这一层是整个系统的核心,在这一层,主要的任务在于实现各种任务过程中算法的并行化,并将任务提交到 Hadoop 分布计算层进行运算。并将结果返回给业务应用层。 数据处理层具有的模块包括: 系统管理模块:对系统实现分布式管理。主要包括:负载平衡管理、系统日志管理、对象事务管理、系统远程部署管理等。 数据加载模块:将挖掘所需的数据进行注册并放入系统的 HDFS 文件系统。 数据存储模块:提供对海量数据的并行加载、处理和存储功能。将数据从其他外设中导入平台的 HDFS;并行 ETL 模块用来对 HDFS 中的原始数据进行处理得到存储数据;并行存储模块提供对处理后的数据进
9、行存储. 并行查询模块:提供对海量数据的并行查询、用户自定义事务处理等功能。 备份恢复模块:提供对系统存储数据的备份管理、备份存储、备份恢复等功能,增强系统的安全 性和容错性。 模式评估模块:Hadoop 框架自身提供了 HDFS,MapReduce 运行模式、运算环境以及自动管理。 4、分布式计算层 使用 HADOOP 框架来实现集群存储、计算。Hadoop 提供了分布式文件系统和并行的运行模式,同时实现了对分布式系统的管理。我们需要在此之上实现任务提交的 Server。 3 总结 本文分析了对现阶段基于云计算平台实现的数据挖掘研究以及开源的集群框架 Hadoop 的研究现状作了分析。并在此
10、基础上设计了基于Hadoop 的数据存储系统的基本架构。采用以 Hadoop 分布式平台作为基础,以 HDFS 分布式文件系统和 MapReduce 并行计算模型作为处理数据的方法。同时给出了系统的模型并简要介绍了各个功能模块。通过将数据挖掘技术与云计算时代下的集群框架 Hadoop 结合起来,利用集群巨大的计算能力和存储能力,从而实现对超大规模数据挖掘的性能提升。 参考文献: 1维基百科 Apache Hadoop EB/01 http:/zh.wikipedia.org/wiki/Apache_Hadoop,2015 2Hadoop 技术 EB/01 http:/Hadoop.apache
11、.org/ ,2010 3朱珠. 基于 Hadoop 的海量数据处理模型研究和应用D.北京:北京邮电大学,2008. 4JeffreyDean, SanjayGhemawat. MapReduce: Symplified Data Processing on Large Clusters J.NewYork: ACM, 2008, 51(1):107113. 5韩家炜, 坎伯. 数据挖掘概念与技术M. 北京:机械工业出版社,2008. 6Dean J,Ghemawat S.MapReduce:Simplifier date processing on large clusters.Commun
12、ications of the ACM ,2008,51(1):107-113 7B.Callaghan,B.Pawlowski,P. Staubach RFC 1813-NFS Version 3 Protocol Specification June 1995. 8Jeffrey Dean. Experiences with MapReduce, an abstraction for large-scale computation Proc.15th International Conference on Parallel Architectures and Compilation Tec
13、hniques,2006:1. 9Yang Lai, Shi ZhongZhi. An Efficient Data Ming Framework on Hadoop using Java Persistence API. 2010 10th IEEE International Conference on Computer and Information Technology (CIT 2010). 10Bhandarkar, M. MapReduce programming with apache Hadoop. Parallel & Distributed Processing (IPDPS) , 2010 IEEE International Symposium on, Atlanta, GA. 基金项目:重庆工商职业学院科研项目(项目编号:YB2013-13) 作者简介:何婕,女,1984 年生,硕士研究生,讲师。主要研究方向:机器学习与智能计算、图形图像处理、数据挖掘。