Hadoop云平台

2024-06-26

Hadoop云平台(精选八篇)

Hadoop云平台 篇1

云计算是基于互联网的相关服务的增加、使用和交付模式。云计算是分布式处理、并行处理和网格计算的发展, 是通过网络将庞大的计算处理程序自动分拆成无数个较小的子程序, 再交由多部服务器所组成的庞大系统经计算分析之后将处理结果回传给用户。

云存储是指通过集群应用、网格技术或分布式文件系统等功能, 将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作, 共同对外提供数据存储和业务访问功能的一个系统, 保证数据的安全性, 并节约存储空间

2 Hadoop功能

Hadoop是云存储的一个典型的开源工具软件, 也是一个分布式计算框架。为应用程序提供了一组稳定可靠的接口, 旨在构建一个具有高可靠性和良好扩展性的分布式数据处理和存储系统。Hadoop集群是典型的Master/Slaves结构, 主要是由Hadoop分布式文件系统HDFS和计算模型Map Reduce两个主要的子项目组成。

2.1 分布式文件系统 (HDFS)

HDFS是以流式数据访问模式存储超大文件而设计并在通用硬件的集群上运行的文件系统。HDFS是一个具有高度容错性的系统, 提供高吞吐量的数据访问, 非常适合大规模数据集上的应用。

一个HDFS集群是由一个名称节点 (Name Node) 和多个数据节点 (Datanodes) 组成。Name Node负责管理文件系统的命名空间 (Namespace) 以及客户端对文件的访问。集群中的Data Node是文件系统的数据节点, 它存储并提供定位块的服务 (被用户或名称节点调用时) , 并且定时向名称节点发送它们存储的块的列表。Datanode负责处理文件系统客户端的读写请求, 在Namen Node的统一调度下进行数据块的创建、删除和复制。

2.2 计算模型Map Reduce

Map Reduce是一种高效的分布式计算模型, 同时是一种用于处理和生成大规模数据集的实现方式。Map Reduce的核心任务就是任务的分解与结果的汇总。它由函数Map和函数Reduce组成的, 函数Map就是将一个任务分解成为多个任务, 函数Reduce就是将分解后多任务处理的结果汇总起来, 得出最后的分析结果。

3 基于Hadoop的云存储的工作原理

在Hadoop的分布式框中, 用户的数据将被分割成多个数据块存储在每一个Slave的Data Node上, 由Name Node负责管理这些数据块。用户的计算任务被分成多个Map任务和Reduce任务, Job Tracker负责启动、跟踪和调度Map任务和Reduce任务, 这些任务是由每一Slave的Task Tracker所执行的。Job Tracker同时侦测Task Tracker的运行状况, 若有需要的时候, 也会重新执行某个任务, 计算结果会保存在用户指定的目录下。

3.1 部署Hadoop的云存储实验

3.1.1 Hadoop硬件环境

Hadoop集群是Master/Slave结构, 使用两台机器作为Master, 分别负责Name Node和Job Tracker的工作, 另三台机器作为Slave, 负责Data Node和Task Tracker的工作。每台实验机器上均运行Cent OS5.8版Linux系统, java版本1.6.0_34, Hadoop版本1.0.3。实验中五台机器分别设置主机名和修改每台机器的/etc/host文件, 其实验拓朴图所示。

3.1.2 软件安装

下载jdk-6u34-linux-i586-rpm.bin在每台机器上安装JDK环境。分别放在每台机器的usr/local目录下, 执行以下./jdk-6u34-linuxi586-rpm.bin和rpm–ivh jdk-6u34-linux-i586.rpm安装命令。

1) 在每台机器中设置环境变量, 在文件末尾加入以下内容:export JAVA_HOME=/usr/java/jdk1.6.0_34;export PATH=$JAVA_HOME/bin:$PATH;export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

2) 在每台机器执行java测试运行环境的命令:java–version后看返回的信息是否正常。然后在master1上执行以下命令来创建空密码的RSA密钥:ssh-keygen–t rsa–P“”, 配置SSH免密码登录。执行导入公钥:cat id_rsa.pub>>authorized_keys将产生的公钥复制到master2机器scp-r.ssh master2, 在master2机器使用SSH连接master1机器, ssh master1分别在其他机器执行相同的步骤, 以达到相互之间能够免密码登录。

3) 到官网http://hadoop.apache.org/下载hadoop镜像, 在每台机器上执行以下安装命令:rpm-ivh hadoop-1.0.3-1.i386.rpm, 在hadoopenv.sh中添加export JAVA_HOME=/root/jdk1.6.0_14;vi/etc/hadoop/hadoop-env.sh;export JAVA_HOME=/usr/java/jdk1.6.0_34;hadoop运行测试。

4) 每台机器上设置core-site.xml

3.2 实验测试

4 结论

以Hadoop为平台, 构建了云存储的实验, 实现了对HDFS文件存储, 通过Map Reduce对其进行检索与排序。该方法解决了大规模非结构化数据的在线存储、查询、备份等问题, 为企事业单位应用提供了高效能、高可靠性的服务。但对于如何保障云存储中数据的安全和隐私这一问题, 仍是今后研究的重点, 也是亟待解决的难题。

摘要:本文阐述了云计算和云存储的相关理论, 对Hadoop分布式文件系统HDFS和计算模型MapReduce进行深入分析, 通过Hadoop平台实现数据云存储, 提供了稳定的共享存储和分析系统, 从而解决访问速度和安全性问题, 实现海量数据的存储管理。

关键词:云计算,云存储,Hadoop,HDFS,MapReduce

参考文献

[1]谢桂兰, 罗省贤.基于Hadoop MapReduce模型的应用研究[J].微型机与应用, 2010.21.

[2]周敏奇, 王晓玲, 金澈清等译.Hadoop权威指南[M].北京:清华大学出版社, 2011.7.

[3]曹英忠, 谢晓兰, 赵鹏.基于Hadoop的云存储实践[J].现代计算机 (专业版) , 2011.24.

云计算大数据与Hadoop 篇2

孙定 sun_ding@ccw.com.cn

美国奥巴马总统委员会的科学技术顾问Stephen Brobst说:“过去3年里产生的数据量比以往4万年的数据量还要多,大数据时代的来临已经毋庸置疑。我们即将面临一场变革,常规技术已经难以应对PB级的大规模数据量。”Neol and Associates公司的著名分析师Mike Karp也指出,目前越来越多的企业采用Hadoop来存储和分析大

数据。

美国《经济学人》2010年曾经报道,沃尔玛的数据量是美国国会图书馆的167倍;eBay的分析平台每天处理的数据量高达100PB,超过纳斯达克交易所每天的数据处理量。根据IDC数据,到2020年,电子数据存储量将在2009年的基础上增加44倍,达到35万亿GB;截止到2010年,电子数据存储量已經达到了120万 PB,或1.2ZB。非结构化信息如文件、电子邮件和视频,将占未来10年新生数据的90%。Gartner也指出,传统数据库在数据增长如此迅猛的当下远不能胜任。

Hadoop分布式并行计算框架,是Apache的开源项目,已有7年的历史。Hadoop的核心是HDFS(分布式文件系统)和MapReduce(映射与归约)计算模型,MapReduce的思想来自于谷歌2004年发表的一篇论文。

HDFS分布式文件系统将一组数据分发给不同的机器并且提供冗余处理。比如,可以对每一个数据在3个不同的节点上进行复制,一旦一个数据所在节点出现问题,还有两个其他节点的相同的数据可以使用。MapReduce计算模型中的Map将一个任务分解为多个任务,产生特征数据,Reduce将多个执行结果汇总得到最终结果。

2008年7月,Hadoop打破1TB数据排序基准测试纪录。Yahoo!的一个Hadoop集群用209秒完成1TB数据排序 ,比上一年的纪录保持者快了将90秒。2009年5月,进一步将时间缩短到62秒。2007年,百度开始部署Hadoop用做日志处理。2008年,淘宝部署基于Hadoop的云梯。云梯的总容量大概为9.3PB,1100台机器,每天处理约18000道作业,扫描500TB数据。Facebook、Linkedin、Amazon、EMC、eBay、Twitter、IBM、Microsoft、Apple、HP等都已是Hadoop的用户。

在产业方面,IBM提供基于Hadoop的大数据分析软件,推出了在Hadoop架构上建立作为群集运行DB2或Oracle数据库的集群系统,并提供Hadoop的部署与实施服务。EMC于2011年5月推出基于Hadoop数据中心设备——GreenPlum HD。2008年,微软收购Powerset,并将Powerset基于Hadoop的技术应用于搜索引擎bing搜索引擎。

Ventana Research公司分析师David Menninger认为,企业将显著提升对于开源软件Hadoop框架的兴趣,未来将有更多的供应商和更多的生产商加入Hadoop行列。

Hadoop云平台 篇3

于是云计算技术应用而生,Hadoop云计算平台是Apache旗下的一个开源分布式计算项目,有效的解决了上述问题。Hadoop在可申缩性、健壮性、计算性能和成本上具有明显的优势,已成为当前互联网企业主流的大数据存储和分析平台。预计,在未来5年内将有50%的大数据项目会在Hadoop的框架上运行[5]。该文在Hadoop云计算平台为基础上,验证了Hadoop面对海量数据的处理能力,以及设计并实现了基于hadoop分布式文件系统的Scool云存储文件管理系统。

1 云存储平台

云存储的实现要以多种技术的发展为前提,比如宽带网络的发展、WEB2.0技术、应用存储的发展、集群技术、网格技术、分布式文件系统、CDN内容分发、P2P技术、数据压缩技术、重复数据删除技术、数据加密技术、存储虚拟化技术、存储网络化管理技术。海量数据的可管理性、可扩展性、可靠性、总体成本(TCO)、以及容量扩展性将最终决定云存储未来发展形式。所有云存储系统应具有硬件冗余、自动的故障切换、存储设备升级不会导致服务中断、容量分配不受物理硬盘限制、节省电力、及时提供容量的扩展、海量并行扩容、统一的对外名称、负载均衡、容易管理等优点。

1.1 云存储的特性

异构性:是指云存储系统能够兼容不同的存储设备、网络差异、不同的操作系统、各种计算机硬件和不同编程语言。

分布性:是指单一的数据中心存储模式无法满足现有用户在数据访问效率、数据可靠性和系统负载均衡方面的需求,云存储平台的存储资源池中将包含多个地理位置分布的数据中心用来进行数据冗余和负载均衡。

扩展性:是指云存储系统可以简单高效的为存储空间扩容,存储节点的加入和退出必须以热插拔的方式进行。

透明性:是指包括存储位置透明和用户访问透明,用户不需要关心数据存储的具体位置,就能够就近访问到数据的副本,对于用户而言,数据总是可用的。

并发性:是指云存储系统中多个用户可能会同时对共享数据资源发出请求,每个云存储组件必须被设计成在并发环境中是安全的。

可靠性:是指任一进程、计算机和网络都有可能独立的发生故障,因此每个云存储组件需要清楚所依赖的组件可能出现故障的方式,组件要设计成能适当的处理每个故障。

效率:是指用户访问云存储系统中共享数据的算法应该避免性能瓶颈,频繁访问的数据需要复制更多的副本,用户能够就近获得最快的访问时间,同时用户使用云存储服务的接口应该尽可能简单。

2 云存储的结构模型

云存储是以存储设备为核心,综合了多种高新计术构成的复杂系统。它通过应用软件来对外界用户提供统一的服务。其结构模型由以下四层组成。

2.1 存储层

存储层是云存储中最为基础的部分,同时也是云存储的底层。云存储通过互联网、光纤通道网络等,将大量的不同类型且分布在不同地理位置的存储设备连接在一起,实现海量数据的统一存储。同时实现对存储设备的集中管理、状态监控以及容量的动态扩展。实质上,这就是一种面向服务的分布式存储系统。

2.2 基础管理层

基础管理层在云存储系统中是最难实现的部分,也是云存储中最为核心的一层。该基础管理层主要应用集群、分布式文件系统、虚拟化等技术来实现云存储系统中多个存储设备之间的协同工作,使得这些不同设备能够面向用户提供一致的服务。为了保护用户数据的安全性和私密性,云存储使用了数据加密技术、内容分发技术、数据备份和容灾等技术来保证用户的数据不被窃取、泄密或丢失。通过设计统一的用户管理、安全管理、副本管理及策略管理等公共数据管理功能,将底层存储与上层应用无缝衔接起来,实现多存储设备之间的协同工作,以更好的性能对外提供多种服务。

2.3 应用接口层

应用接口层是云存储中最灵活多变的部分。云存储服务商根据实际业务需求,可以开发远程数据备份、视频点播平台等不同类型的服务接口,为用户提供相应的应用服务。应用接口层是云存储平台中可以灵活扩展的、直接面向用户的部分。根据用户需求,云存储可以开发出不同的应用接口,提供相应的服务,例如数据存储服务、空间租赁服务、公共资源服务、多用户数据共享服务、数据备份服务等。

2.4 访问层

访问层是云存储中要求只有经过授权的用户才可以通过标准的应用接口登陆系统,才能享用里面的各项服务。但是服务商所提供的访问手段和访问类型因采用的手段不同而不同,但是通过数据访问层的话,任何一个授权用户都可以在任何地方,使用任意一台联网的终端设备,按照标准的公用应用接口来登录云存储平台,享受云存储服务。

3 部署云平台

3.1 Hadoop

Hadoop是Apache旗下的一个开源项目,用来支持数据密集型的分布式应用,能够支持上千节点以及海量(PB级)数据量的运算。Hadoop主要由两部分构成:Hadoop分布式文件系统(HDFS[6])和在HDFS上的Map Reduce[7]编程模型实现。

3.1.1 HDFS分布式文件系统

HDFS是Google GFS[8]的开源版本的实现,作为一个高度容错的分布式文件系统,它能够提供高吞吐量的数据访问,适合存储海量的大数据文件,在软件层内置数据容错能力,可应用于云存储系统的搭建与开发,和现有的分布式系统最大的不同点在于高容错性、易扩展和低成本。

HDFS是可以运行在普通硬件上的分布式文件系统,采用主/丛(Master/Slave)结构。其中Name Node主要负责维护集群内的元数据,所有块的元数据都被注册在Name Node,对外提供创建、打开、删除和重命名文件或目录的功能。Data Node负责存储数据,并提负责处理数据的读写请求。Data Node定期向Name Node上报心跳,Name Node通过响应心跳来控制Data Node。HDFS提供了一个高度容错性和高吞吐量的海量数据存储解决方案。HDFS可以提供以下特性:

1)可自我修复的分布式文件存储系统;2)高可扩展性,无需停机动态扩容;3)高可靠性,数据自动检测和复制;4)高吞吐量访问,消除访问瓶颈;5)使用低成本存储和服务器构建。

3.1.2 Map Reduce的实现

Map Reduce模型由两项核心操作构成:Map和Reduce,是Google的一项重要技术,也是一个编程模型,用以进行大规模据量的高效计算。对于大量数据的计算,通常采用的手法就是并行计算。对于现阶段而言,并行计算对许多开发人员来说还是一个比较遥远的东西。Map Reduce就是一种简化并行计算的编程模型,它让那些没有多少并行计算经验的开发人员也可以开发并行应用程序。

3.1.3 Hadoop优势

综上所述,本平台基于Hadoop分布式技术实现,使编程和实现起来都比较容易,能够高效地存储和管理海量数据,具体来说有以下优势:存储方面:现在世界上最大的Hadoop集群目前在Facebook,可以存储30PB的数据。计算方面:Hadoop是目前Terasor(Terasort是Hadoop中的的一个排序作业)记录的保持者,Terasort是给出1TB的随机数据,看谁能够在最短的时间内完成排序,Hadoop使用了1400多个节点,在2分钟内完成1T的数据排序。

3.2 云平台搭建

云计算平台的部署是复杂的系统工程,包括基础设施的组装与搭建、云计算系统平台的安装、部署、调试和测试等等。本实验应用Hadoop框架来构建小型的云计算平台环境,在硬件上用普通PC单机或多台普通PC电脑即可实现。

本实验由4台普通PC电脑构成,配置均为Core2处理器,2G内存,操作系统为Red Hat Linux。其中一台作为Namenode,机器名为master,其余三台作为data Node,机器名分别为slave01、slave02、slave03。系统结构如图1所示。在4台机器上建立统一的Hadoop用户,并设置Hadoop用户从master主机到各个slaves主面登录不需要使用密码。安装Hadoop运行环境Java1.7,安装版本为Hadoop1.0.3的Hadoop系统,配置conf文件夹下的hadoopenv.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、master、slave文件,初始化Namenode节点并格式化hadoop文件系统的存储空间,并保证Hadoop文件系统在各个节点上配置文件的一致性。

3.3 Scool云存储管理系统设计

3.3.1 系统设计

本文开发的Scool系统设计的中心思想是以WEB方式向用户提供文件操作服务功能,用户在WEB基础上使用本系统,给用户使用带来了极大地方便,用户只需要通过注册就能获取系统提供的存储空间,就可以获取系统提供的存储服务,用户可以方便的管理和使用自己的空间。系统安全也是我们设计的一个重点,系统通过单独的文件管理服务器向云存储系统发送用户请求,系统通过调用Hadoop系统提供的多种API方式方便地管理用户文件,没有经过验证的用户是不能调用和使用API接口。(如图2所示)

本系统利用Hadoop作为底层集群部署,由于Hadoop对硬件的要求不高,普通pc机就可以达到要求,并能够高效的处理数据,方便用户的使用和操作,为用户数据提供统一管理界面,对用户及时返回处理结果,系统设计总体可有效加快其服务应用的部署和实施工作。

3.3.2 模块设计

本系统有以下四个模块组成,如图3所示:

用户管理模块:本模块用来完成新用户的注册功能,成功通过注册的用户将成为合法用户,并获取一定的存储空间。经过用户注册,系统会记录用户申请时的用户名和密码以及其它用户信息,并保存这些用户数据信息到数据库。用户身份认证功能是指用户以WEB的方式登录到本系统,用户登录时系统会根据用户登录信息与数据库保存的信息对比,对比完全一致时才能够登录到本系统。否则,用户将无法获取云存储系统提供的服务功能。信息管理功能是指用户拥有管理相关用户信息的权力,如登录密码更改、用户信息更改、密码找回等功能。

文件管理模块:本模块是指合法用户在系统提供的存储空间上的文件操作服务功能,用户通过此服务管理存储空间上的相关文件。用户可以完成上传文件,下载文件,删除文件等操作。本系统增加SWFUPLOAD技术来实现上传大文件的功能,最大支持1G大小的文件上传。

目录管理模块:本模块的功能是用户管理存储空间上的文件存储目录,用户可以新建目录来管理不同分类的文件,用户也可以删除相应的目录。

3.3.3 系统实现

基于Hadoop的云存储管理系统,实现了为用户提供云存储服务的基本功能,用户登录系统就可以体验Scool云存储带给用户的方便、实用、高效的服务。如图4所示。

4 结束语

基于Hadoop实现的云存储平台,能够提供一种廉价的大规模数据存储以及高速数据处理的解决方案。同时,该存储平台具有可扩展性、安全性、容灾性、副本自动还原、快速的特性,能够满足用户对存储平台实时的按需扩容的需求。以HDFS作为分布式数据存储的容器,解决了数据冗余备份的问题。云存储平台解决了非结构化和半结构化的松散数据存储,以及存储层的可靠性和可扩展性等问题。同时,基于Hadoop的云存储平台在对象访问接口层实现了功能丰富的接口,能够满足日益增长的应用需求,为今后的云存储安全、性能优化、以及开发其它应用服务的研究提供基础。

系统的安全以及性能优化是下一步研究工作的重点,系统安全方面最为重要,研究kerberos认证机制是一种有效的解决方案,kerberos实现的是机器级别的安全认证,由于kerberos对集群里的所有机器都分发了keytab,相互之间使用密钥进行通信,确保不会冒充服务器的情况,以保证云存储的安全防护功能。

参考文献

[1]张建勋,古志民,郑超.云计算研究进展综述[J].计算机应用研究,2010,27(2):429-433.

[2]Hayes B.Cloud Computing[J].Communications of the ACM,2008,51(7):9-11.

[3]LING,DASMALCHI G,ZHU J.Cloud Computing and IT as a Service:Opportunities and Challenges[C]//Proceedings of the IEEE 6th In ternational Conference on Web Services(ICWS’08),Sep 23-26,2008,Beijing,China.Los Alamitos,CA,USA:IEEE Computer Society,2008:5.

[4]Kyle Zhou.China Internet market insight:Study of Internet Big Data Technological Innovation[EB/OL].(2012-07-12).http://www.ldc.com.en.

[5]Manyika,James,Michael Chui,Jaques Bughin,Brad Brown,Rlchard Dobbs,Charles Roxburgh Big Data:The next frontier for innovation,competition,and Productivity[R].San Francisco:MeKinsey Global Institute,2011.

[6]HDFS Architecture.2010.http://hadoop.apache.org/common/docs/current/hdfs_design.html.

[7]Dean J,Ghemawat S.Mapredteuce:Simplified Data Processing on large Clusters.Communications of ACM,2008,51(1):107-113.

Hadoop云平台 篇4

1.1 云计算及其特点

云计算是基于Internet技术通过服务的方式提供虚拟化资源的计算模式, 能够整合网络中多种类型的资源共同提供数据存储和访问功能。云计算主要分为软件即服务 (Saa S) , 平台即服务 (Paa S) , 基础架构即服务 (Iaa S) 三种服务模式。

云计算的主要特点为:设备利用率高, 云计算整合计算资源对用户开放, 提高了主机的运行和使用效率;可靠性高, 云计算用户的数据存储在云端, 数据由集群的节点保存, 数据冗余通过集群来处理, 以此来保证数据读取的稳定性;运行成本低, 扩展性强。

1.2 Hadoop简介

Hadoop是由Apache开发的一个开源的分布式云计算平台, Hadoop的核心是分布式文件系统HDFS、分布式平行计算框架Map Reduce和分布式数据HBase, Hadoop平台为用户提供大量透明的服务, 使得用户可以轻松利用Hadoop整个计算资源来搭建起自己的云计算平台。 Hadoop具有的优势为:高性能, Hadoop的处理对象可以使数量级在PB以上的非结构化数据, 得到的结构能够以通用的形式提供给用户;可拓展性, Hadoop的会随着集群规模的增加, 计算能力也会不断增加, Hadoop可以拓展到上万台服务器节点来完成数据的存储和计算, 有利于系统的后续完善。

2 Hadoop学习平台需求分析

Hadoop平台的设计基于兼容共享原则和开放原则, 设计的主要内容包括系统的整体结构设计和依据系统的结构设计。通过对文献调研, 师生访问, 确定云教学和自主学习平台需求分析。

学生需求功能分析, 借助平台学生能够查看和修改学生信息, 实现学生和教师的互动, 从平台上获取学习资源。教师需求功能分析, 教师能够通过学习平台查看和修改教师的信息, 实现师生交流互动, 借助平台发布信息和学习资料, 获取学习资源。

3 Hadoop学习平台可行性分析

Hadoop学习平台可行性分析内容包括需求可行性、经济可行性和技术可行性三种可行性分析。需求可行性:高校的发展通过借助现代化的手段, 将优势资源整合, 采用云计算技术发展高校教育具有很到的需求可行性。经济可行性:基于Hadoop的高校教学与自主学习系统在原有网络的基础上, 师生通过该平台就可以获取各种学习资料, 师生之间的互动还以可以提高学生的学习兴趣和积极性, 老师也能够做到教学相长, 该系统的成本低, 可以给予浏览器工作, 具有很好的经济可行性。技术可行性:云技术的发展已经逐渐成熟, 近几年来更是发展迅猛, 美国已经开始了基于云平台的教育资源整合优化, 建立很好的网络教育平台, 所以本平台的设计具有良好的技术基础。

4 云教学与自主学习系统的设计

平台的设计按照系统的职责划分主要可以分为文件系统, 数据访问系统和Web控制系统三部分。文件系统是云平台的文件存储物理层, 云平上所有的教育资源都存储在文件系统上。数据访问系统是云平台的设计的重点, 该数据库系统融合HBase和My SQL数据库, 应用两种数据的优势, 提供了更好的前台服务器访问功能。 HBase主要存贮数据量较大、访问频繁的教育资源, My SQL负责存储数据量少、访问少的资源, 不同的资源采用的存储类型不同便于云平台的管理。 Web控制系统采用J2EE开发框架SSH2, Web重要部分是业务逻辑层, Spring对全部业务Bean进行跳转调度。 Web应用系统设计了界面友好的UI, 提供了资源快速定位和模糊检测功能, 方便用户快速寻找自己需要的资源, Web应用界面如图1 所示。

云平台采用了HBase存储文件的位置, 通过HDFS来实现文件创建和存储功能, 资源的接口程序采用的是HDFS提供的JAVA API编写, 通过数据接口教学资源文件可以完成从本地文件到HDFS文件的转换, 支持多中间上传和下载。 My SQL访问方式采用Hibernate进行Bean实例化控制, Hibernate控制如下所示:

5 总结

本文探究了基于Hadoop云技术的教学与自主学习平台的设计, 阐述了云计算及其特点, Hadoop分布式云平台的系统组成。通过基于Hadoop云技术的教学与自主学习平台需求分析和可行性分析, 设计并实现了云教学与自主学习平台的建设, 为现代教学资源平台的建设起到了一定的参考作用。

参考文献

[1]徐东.基于Hadoop的云教学资源平台设计与实现[D].北京交通大学, 2014.

Hadoop云平台 篇5

数据库具有理论基础强、实践应用突出、学科综合性强等特点。 (2) 数据库技术也是计算机专业人员必备的专业技能。数据库课程的教学应当与实际工作中的需求紧密联系。要以当前主流的数据库应用为背景, 以数据模型作为核心, 不仅讲授数据库的理论、原理, 也要使学生掌握数据库的运用, 并能对数据库进行高效的维护。良好的数据库专业技能不仅需要扎实的理论基础、对知识点深入理解, 还需要较强的动手能力, 能运用所学的理论知识在实际情况中正确分析、解决问题。 (3)

本文在对数据库这门课程的教学特性进行了深入分析的基础上构建了一个基于Hadoop的数据库教学实验平台, 并详细讲述了该平台在教学中的优势。

1 数据库学科教学现状

目前各高校计算机相关专业均开设了数据库课程, 但是在教学中大都采用的是传统的课堂授课辅以机房上机练习的形式。这样的教学存在着弊端。课堂授课中, 侧重于知识点的讲解, 理论与实践有所脱节, 忽略了实际中的使用技术。很多同学的理论知识学得很好, 包括基本概念、代数运算、规范化和数据库设计等。但是在面对一个较为复杂的实际情况时不能设计出性能优越的数据库来, 这很难使学生所学的知识点融会贯通。机房上机练习虽然能提供给学生一定的动手锻炼的机会, 但是由于缺乏一些真正的需求, 大部分同学的练习只是局限于一些常用的数据库工具软件、命令的使用。同时这些练习也仅仅是一些关于单门学科的知识点验证, 学生很难把所学的知识与实际工作相结合。而且这些练习中的数据大都不具有实际生产环境意义, 因此学生在上机练习中很难考虑到实际工程中的一些要求。比如实际的信息系统中, 数据量可能达到百万、千万记录, 这时候的数据库操作可能会遇到一系列问题, 比如溢出错误等, 时间性能等等。而且传统的机房上机中所涉及到的数据库几乎都是SQL Server、Oracle、My SQL等, 而现在社会发展早已进入了大数据时代, 数据的规模甚至达到TB、PB级, 传统的数据库技术在解决大数据问题面前遇到了一系列问题。课程教学应该要紧密联系生产界的主流技术, 与实践紧密融合, 让学生将掌握的理论知识灵活运用到实际工程中, 达到学以致用的效果。同时长期单一的教学模式不容易使学生保持较好的学习积极性。因此必须运用不同的教学方法与教学形式, 调动学生的学习热情, 促进学生的学习。

2 基于Hadoop的数据库教学实验平台的构建

随着互联网的发展, 数据呈指数级增长。大数据的存储、处理对现有数据库技术提出了巨大的挑战, Hadoop的出现从一定程度上解决了这个问题, 并得到了广泛的运用。 (4) 秉承课程教学要与实践相结合的原则, 我们通过搭建一个Hadoop平台进行数据库教学、实验。

Hadoop是目前一个非常流行的开源框架, 可编写和运行分布式应用处理大规模数据。 (5) Hadoop可运行在由廉价机器构建的集群上, 有简单、健壮、可扩展等特点。HDFS文件系统是Hadoop的底层文件系统, 它是一个主从式的分布式文件系统, 有Name Node和若干个Data Node组成。HBase是基于HDFS上的一个开源数据库, 目前在一些大公司得到了广泛运用。HBase (6) 是一个分布式的、面向列的开源数据库, 在Hadoop之上提供了类似于Bigtable的能力。HBase与关系型数据库有着区别:HBase是一个适合于非结构化数据存储的数据库, 而且是基于列的而不是基于行的模式。HBase主要用于需要随机访问, 实时读写大数据的情况。

针对目前数据库教学中遇到的难题, 我们利用Hadoop的技术优势, 构建了一个基于Hadoop的数据库教学实验平台。该平台对于服务器的硬件配置要求较低, 这也是Hadoop技术的一大优势, 因此我们利用廉价的机器搭建起底层系统并配置好HDFS文件系统。

2.1 平台的搭建

该平台中有9台计算机, 配置均为双核CPU、4GB内存、500G硬盘、Ubuntu操作系统, 我们选取的Hadoop版本是1.21, 它具有良好的稳定性、容错性。指定其中一台计算机作为系统的Name Node及Job Tracker, 7台作为系统的Data Node和Task Tracker。Name Node节点指导Data Node节点进行底层的IO任务, 并记录文件如何被分成文件块、以及这些块被哪些节点存储等其他信息。而Data Node则存储文件块, 进行计算, 并与其他节点交互、复制数据以实现冗余。在Hadoop文件系统HDFS上, 我们配置适合Hadoop版本的HBase, HBase是一个能存储海量数据的数据库。由于Name Node节点在系统中作用较大, 如果Name Node节点出现故障, 整个平台的使用都会受到影响。为此我们取一台单独的计算机作为Secondary NameNode, Secondary Name Node的作用是与Name Node通信, 它不存储HDFS的任何实时变化, 只是按照一定的时间间隔获取HDFS信息的一个快照。万一Name Node节点出现故障, 可根据Secondary Name Node上的信息快速恢复系统平台, 并降低各节点丢失数据的概率。Hadoop的架构如图1所示。

应用层的构建我们依据MVC设计原则, 采用Struts+Hibernate+Spring技术, 将视图控制模型分离, 降低耦合度, 提高代码可重用性, 使层次架构更加清晰明了, 同时也便于后期维护、降低维护成本。该平台能够处理大数据, 且使用的机器很廉价, 并具有较好的稳定性、鲁棒性。该平台主要框架如图2所示。

2.2 平台功能介绍

用户可通过登录模块进入系统。系统管理员可以为学生分配平台资源使用的权限, 并可以执行系统设置、用户管理、消息发布、平台维护等操作。学生根据管理员分配的权限可以进入平台执行相应的操作。

在实验练习模块中学生可以通过该模块操作HBase数据库中的海量数据, 所学知识将在真实环境数据下得到运用, 能对知识点融会贯通。同时该平台中的HBase数据库不仅能满足数据库教学的中的一般需求, 而且实现了压缩算法、内存操作和布隆过滤器, 这能为一些学习能力较强的学生提供钻研探索的机会, 有效地锻炼学生的创新能力。在这里学生有机会玩转大数据, 能真正地让学生在课堂上所学的理论知识与实践得到很好地结合。这为学生以后进入社会参加工作提供了经验。

深入学习模块可以让学生全面、深入地继续学习。一方面, 该模块向学生展示了关于数据库课程的教学方案、该教学平台的特性、平台的搭建细节以及平台的使用指南, 让学生不仅能快速地学会这个平台的使用, 还能对该平台有个全面细致的了解。另一方面, 该模块发布了一些教学视频、讲义、资料供学生下载, 让学生在课余时间能够对感兴趣的内容进行自主学习。

在线测试模块主要给学生提供一个在线测试的平台, 教师可以定期在平台上发布在线测试, 学生将在规定的时间内进入系统答题, 由平台自动判分, 同时平台具有一定的查重功能, 这能够有效地避免抄袭现象的存在。对于每道题, 教师可以提前设置好正确答案分析, 学生可以在测试结束后自己分析做错的题。对于学生答题的判分情况, 系统自动生成各种报表, 让教师能对学生的学习情况有个全面细致的了解, 从而对学生的薄弱知识点进行查缺补漏。

答疑解惑模块可以让教师、学生在线直接交流, 学生对于未来课程所期望的知识点讲解也可以留言, 学生不懂的问题可以在此请教教师, 这打破了课堂教学时间的限制, 能让学生获得更多的指导学习时间。

3 数据库教学实验平台的效果与优势分析

自从该平台投入教学使用后, 取得了较好的教学效果。学生的学习热情越来越高, 参与在线学习的人数越来越多, 在线测试中学生的成绩斐然, 参与数据库实验平台的学生人数和在线时间均处于持续增长。

搭建这个数据库教学实验平台并在教学中使用是我们在教学改革中的探索, 这为以后的教学改革指明了方向。

搭建了基于Hadoop的数据库教学实验平台。一方面提供给了学生一个锻炼实践的机会。学生在教材中学到的各种理论知识都能在该平台的练习中得到深入理解并加以融会贯通, 增加了学生动手锻炼的机会, 通过平台的教学, 学生能够深入理解数据库基本原理, 熟练设计数据库的基本原则以及具体细节, 掌握数据库操作的性能调优技术。Hadoop、HBase等新技术的运用不仅能让学生了解工业界流行的技术, 避免与实际脱轨, 而且有助于培养学生的独立思考、解决新问题的能力。同时对于那些感兴趣的同学, 可以进一步学习Hadoop框架的底层实现细节。另一方面, 该平台在教学中的使用改变了传统的教学模式, 让学生成为教学的主体, 学习过程中更加注重的是学习方法的指导, 重视学生能力的培养。特别是定期的在线测试改变了传统的考核方式, 在完成每个学习阶段后, 相应的在线测试能检测学生的学习效果, 能让学生始终保持对自身的正确认识。通过多元化的教学方式, 极大地调动了学生的积极性和主动性。

4 结束语

数据库技术是计算机科学技术中的核心技术之一, 也是发展最快的技术之一。数据库学科理论性强、实践应用性突出的特点决定了学好这门学科必须要理论与实践相结合。本文针对当前的数据库课程教学现状中存在的问题进行了深入分析, 并提出了一个基于Hadoop的教学实验平台, 该教学实验平台具有良好的交互性、易操作, 在数据库的教学中起着重要的作用。这不仅能强化学生对教材中理论知识的掌握, 而且提供给学生一个实践的机会, 极大地锻炼了学生独立思考、解决新问题的能力。在将来的教育中应该要重视实践环节, 培养学生的创新能力。

摘要:数据库是计算机科学的重要分支, 是信息系统的核心和基础。数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和存储, 具有较小的冗余度较高的数据独立性和易扩展性, 并可为各种用户共享。1经过多年来的发展, 数据库经历了三个重要的发展阶段:第一代的网状和层次数据库系统, 第二代的关系数据库系统, 第三代的以面向对象数据模型为主要特征的数据库系统。数据库已经成为计算机信息系统和应用系统的核心技术和重要基础, 也是许多其他专业的选修课程。

关键词:数据库,理论基础,专业技能

注释

11 萨师煊, 王珊.数据库系统概论[M].高等教育出版社, 2000.

22 瞿中.数据库教学方法改革的探索与实践[J].黑龙江高教研究, 2006 (2) :113-114.

33 张元, 韩燮.基于CDIO的数据库课程体系改革与实践[J].计算机教育, 2011 (3) :52-55.

44 Borthakur D, Gray J, Sarma J S, et al.Apache Hadoop goes realtime at Facebook[C]//Proceedings of the 2011 ACM SIGMOD International Conference on Management of data.ACM, 2011:1071-1080.

55 Shvachko K, Kuang H, Radia S, et al.The hadoop distributed file system[C]//Mass Storage Systems and Technologies (MSST) , 2010 IEEE 26th Symposium on.IEEE, 2010:1-10.

Hadoop云平台 篇6

在HDFS中,所有文件的写入和读取都需要通过Name Node控制,接收用户对文件操作的请求,定位文件位置和分配文件存储的Data Node节点,并且所有文件的信息都存储在Name Node中的元数据里。在文件处理中,HDFS在Name Node中为每一个文件都建立了元数据,用来存储该文件信息,这样的做法对大文件是十分合理的[1]。但问题是当系统中存储大量的小文件时,这样的做法就在时间开销和性能上有了严重的问题,在小文件的存储过程中,向Name Node发出请求分配Data Node节点的时间消耗甚至超过了存储过程本身的时间,Name Node中海量小文件的元数据会占用大量的内存,影响系统性能[2]。

面对小文件存储的瓶颈,设计小文件存储的优化过程,并且针对原生HDFS小文件存储优化的过程,在减少系统负载的同时保证小文件存储的正确性和稳定性是当前面临的问题。

1 文件存储优化方案设计

HDFS作为时下流行的分布式存储系统,自身不擅长处理小文件的写入,在处理小文件上存在瓶颈,但是面对当前小文件数量急剧增长的现状,应该紧跟时代需求的脚步,在小文件处理方面进行相关优化,从单一面向大型数据的储存转向更加符合时代的方向,更好地兼容大小文件的存储。

1.1 合并及写入

合并及写入在合并的过程中,第一步是要保证小文件能够在缓存中等待,一直合并到合并块大小接近Block Size时,再向HDFS发送写入的请求。在用户上传小文件时,首先新建一个合并文件,返回到DFSClient中新设计的Merge Stream流对象,其功能就是循环等待并读取用户上传的小文件,直到缓存大小达到Block⁃Size的大小[3]。为对象分配Buffer空间,空间大小和Block Size大小相同,同时RPC通信在Name Node中建立对应的元数据结构Merge Node,在Merge Node中保存filemap,其中包含了小文件名和其在本块中的偏移量等信息。

1.2 小文件映射

Name Space主要维护文件元数据,正是根据元数据记录的文件存储信息,用户才能将在Data Node中分散存储的文件块找到并且组合成原本完整的文件。文件元数据包括文件的文件名、文件大小等基本的文件信息,还保存了文件被分割成多少块,分别放在哪些Block中,分别在哪个Data Node上映射信息,而这些映射信息都是通过INode的对象维护的。

在小文件处理中,本系统设计了Merge Node继承自INode对象,Merge Node维护了小文件名到Block Id、偏移表的映射File Map,而File Map是Merge INode File的一个属性成员,Merge INode File继承至INode File,主要添加了File Map一个属性成员,File Map管理了文件名到Block的映射关系,其中包括该小文件所在块的Block Id以及Merge Block中的偏移量Index索引,Merge Block同样是新建的结构体,其中包括Blockinfo和Index两个成员。在合并过程中Name Node会根据合并的大文件名找到对应的Merge INode File结构,然后将小文件名到Block Id和Index映射添加到File Map结构中,这就完成了对File Map信息的更新。

1.3 读取

客户端提取小文件时,首先要向Name Node发出提取文件的请求,并且发送该文件的文件名和合并文件名等基本信息,Name Node接收请求和文件信息后,在命名空间搜索该文件的信息,根据合并文件名查找目录树,找到该合并文件的Merge INode节点,然后在File Map上搜索该小文件,最后返回该小文件存储的Block Id,Data Node信息和在该合并数据块上的小文件偏移表in⁃dex会与该Data Node建立连接,发送请求数据,数据中包含Block Id和块中的偏移量。Data Node收到信息后首先根据Block Id在本地目录上定位该数据块,找到并打开该数据块,得到小文件在索引表中的偏移量和文件长度,根据偏移信息,在数据块中的读指针定位到正确的偏移地址上,开始进行读入操作,读入的同时记录读取的数据总量,直到大小和文件大小相同则停止读取[4]。最后将读取的数据发送给客户端,至此完成对小文件的提取。

2 云存储系统分析与设计

2.1 系统架构

本系统的设计主要是实现一个基于HDFS分布式文件系统为底层,配合My SQL数据库,以JSP为开发语言的Web项目,主要功能是实现企业内部的私有云存储功能[5]。在功能方面建立两大块,其中一块是用户功能的模块,另一块就是该系统的核心,即文件功能模块。在用户模块中,要包含普通用户的注册登录退出,还要有管理员角色的功能,不但能够管理用户的基本信息,设置权限,删除用户等,还能有更进一步的功能,就是在公共文件区中添加公共文件。而在文件功能模块中,要包含普通上传,加密上传,分段上传,下载,解秘下载,用户点对点分享,热点文件功能,简单文件预览,公共文件功能等。系统功能模块如图1所示。

系统的架构需要四个方面的设备共同完成整个系统,需要有用户端,服务器端处理客户端请求,需要数据库存储用户信息和少量的文件信息,最后是HDFS的集群设备,负责对文件进行分布式存储。

2.2 用户端设计

用户端主要包括系统的登录注册功能模块,负责控制普通用户和管理员用户的用户角色模块。登录注册是用户角色检测的前置条件,在登录注册的前提下进行用户角色检测,连接数据库中的用户表对比和提取用户数据,在对比成功的前提下,根据用户信息判断是否为普通用户或者管理员,从而加载不同的用户界面[6]。在角色登入的状态上,用户提交输入信息进行比对进入登录状态,系统向数据库发送数据请求,然后进行比对验证,若验证成功则进入界面处理状态,根据不同角色最后呈现给用户相应的界面,如图2所示。

2.3 文件基本功能设计

文件的基本功能包括文件上传、文件下载和文件的列表展示三个方面。用户使用存储系统,最常用的就是这三个基本的文件功能。在本系统中,由于上传下载包括了多种扩展功能,在扩展功能中有加密上传、解密下载、公共文件下载、热点文件下载,但是基本的上传下载流程是固定不变的,在不同功能中,对文件的处理是在专门的文件处理类中进行操作,而操作的结果依然是根据文件的基本流程进行。

文件上传的核心流程主要为:系统接收到文件上传的请求后,提交给上传控制的不同类中,不同的类对文件进行操作后,开始和HDFS相连,写入文件,写完后更新数据库,最后刷新用户文件列表。

文件下载的基本流程是:下载处理类接收到用户对某个文件的具体功能下载请求,该类首先与数据库连接获取该文件的路径信息,然后进入HDFS中,根据文件路径找到该文件并且转移文件数据到服务器上,下载处理类对转移到服务器中的文件进行相应处理,同时更新数据库,最后递交给用户[8]。用户先在Web端操作选择目标文件,并且点击相应的下载操作,接着服务器将请求交给下载处理类,下载处理类接收请求并连接数据库取得文件信息,连接HDFS进行文件读取,然后将转移到服务器上的文件交给处理类进行文件处理,最后将处理好的文件流式返回给用户。

3 系统实现过程

3.1 用户模块

在用户模块中,主要涉及到的是数据库的操作和jsp前台与后台servlet的数据处理过程,对HDFS的操作涉及比较少。而针对用户模块操作主要是在后台的User⁃Bean和User Bean Cl文件中,User Bean定义了新用户的建立方法,获取用户名等信息的各种方法。在新用户建立主要和数据库进行数据更新的过程,首先获取到servlet传输来的控件内容,然后连接数据库,更新user表,新建两张表分别是该用户的文件表和分享表。

3.2 管理员模块

管理员身份的检测是在JSP前段Body中的onload事件触发admincheck脚本方法。

onload="admincheck()"

通过jsp特性,将后台的变量引用到前台中。变量<%=username%>就是当前系统session获取的用户名的字符串,通过匹配管理员的用户名,判断是否是管理员身份,进而激活管理员页面。该脚本函数的作用就是控制前段的管理员界面的显示与否,当检测到是管理员身份时,就屏蔽普通用户的操作界面,激活管理员操作。在管理员的操作中主要设置用户权限值和删除用户两个方面。这两个功能的实现是在Admin Servlet类中。在jsp传参的过程中加入了check变量,前台是deleteuser(a)的javascript函数控制传参,确保选择的用户是正确的。

3.3 文件上传和下载

系统中引入了加密上传的方式,在上传过程中要在servlet传输中让其识别出是普通上传还是加密上传,这里在Web中设计了checkstringchange()的javascript方法,该方法主要是在加密选项中触发,一旦被触发,则需要更改form中的action内容,将不同的参数传递给Up⁃load Servlet,而在Servlet中是通过checkstring的值来判断是否为加密方式,<%checkstring="jiami";%>是jsp的使用方式,更改checkstring的标识变量,并且更新ji⁃amikey的内容,传递加密指令。

文件下载是从HDFS定位到该文件,然后传输至服务器,然后服务器转交给用户的过程。由于系统采用My SQL记录用户文件的上传信息,其中包括每一个文件所处的文件位置,所以,对每一个文件的定位工作需要访问数据库得到文件的路径信息。文件下载中出现的难点在于,由于下载方式不同,有公共文件,也有加密文件,还有普通文件,首先要保证文件按照其自身下载方式下载,如加密文件就要通过加密通道,进行解密过程然后再传递给用户,所以这里就需要在下载过程中传递多种标识量进行逻辑判断,这就需要在向servlet传参时设置不同的识别标记。本系统中,结合前台javascript函数,用jiemikey和publiccheck两个Parameter共同控制,使得Download Servlet能够区分三种不同的下载方式。

3.4 文件展示

文件展示其实就是将用户存储的文件信息展示出来,并非真正的文件展示,所以在获取用户存储在HDFS上的文件信息,就是文件展示的核心。而上文提到由于在系统中加入了数据库,用户的文件信息同样会被写入数据库中,所以数据库同样作为提供文件信息的来源。在本系统中,不同页面中采取了两种不同的展示方式:一种是直接通过连接HDFS获取最新的文件状态;而第二种就是不经过HDFS,通过读取数据库的文件信息提供给用户。在用户的首页部分,因为展示的是用户自身所有的文件信息,所以本页面对数据的准确性要求较高,并且由于用户可以对首页的每一个文件进行操作,一旦列表中的文件和HDFS中的文件有出入,则很容易造成用户操作失败,影响用户的使用。所以在首页采用的是及时更新的方式,即每当用户连接首页时,就连接HDFS获取最新的文件状态,返回给用户。

4 性能测试和分析

在针对系统的内存监测和文件提取中,使用随机生成的100个,500个,1 000个,2 000个小文件进行测试对比。分别进行5次实验,取五次实验中的平均时间进行展示。在Name Node元数据占用内存方面,从测试结果中可以看出,在原生的HDFS中,随着上传文件数目的增长,Name Node对无论大文件还是小文件采取一样的元数据保存方式,要为每一个小文件都分配一个和大文件相同的INODE数据类型存储其元数据,随着小文件的不断增多,小文件元数据在系统中占用的空间越来越多。内存消耗量的对比见图3。

而在修改后的HDFS中,由于采用了小文件合并的方式,所以Name Node中只需要保存合并的大文件块元数据,并且在其元数据中增添空间占用十分小的索引信息,相比之下,规模小了很多,所以随着文件数目的增加,众多小文件在Name Node中消耗的内存增长缓慢,内存占用平均节省至少30%,这样的对比可以看出,通过合并的方式能够在集群存储大量小文件时,减少Na⁃me Node的内存开销,达到缓解HDFS小文件存储带来的内存开销问题。内存消耗的对比折线图见图4。

针对文件读写过程中的时间开销,则使用data命令,每次上传文件前和上传完毕后,获取时间差值。由于设备硬件水平限制,使用Linux文件生成指令自动生成的100个,200个,300个,400个大小在10 MB以内的小文件,而具体的操作方法则是使用Hadoop中copy⁃From Local方法,将小文件循环上传到HDFS中,并且在上传前后设置data的触发函数,记录时间,计算出时间差。小文件写入消耗的时间见图5。

从图5中可以看出,随着x轴上的小文件数量从100,200,300到400不断递增,无论是原生HDFS还是修改后的HDFS都出现了非线性的快速增长。但相对而言,修改后的HDFS在小文件的上传中花费的时间更少,文件的平均上传时间缩短了20%,能够证明写入小文件时,优化后的HDFS能够更快速地对小文件进行处理。

5 结论

本文针对HDFS处理大量小文件写入时面临的Na⁃me Node内存负载和时间开销大的问题,设计了一套优化的小文件处理模块。对多个写入的小文件进行文件合并,形成大的合并文件块,在合并文件的元数据中加入小文件索引表,该索引表记录了每个小文件的基本文件信息和文件在合并块中的偏移量,读取小文件时通过索引表定位小文件块中的地址,一个合并文件块将多个小文件的数据存储在Data Node中,而Name Node中只保存合并文件的元数据。同时,基于当前中小企业的数据存储需求,设计并且实现了一套针对中小型企业的私有云存储系统,不但保证了文件存储的安全性和稳定性,而且实现了很多实用的文件功能,方便企业用户的数据处理。

摘要:由于公有云存储中存在数据泄露、丢失、存储不稳定等不安全因素,私有云存储成为解决当前企业安全存储需求的最佳选择。针对单点内存负载过高,写入效率低下的问题,设计了一套处理大量小文件的模块,通过缓存多个小文件合并,再合并文件元数据放置索引表,通过索引表中的偏移量寻找块中小文件数据的方式,提高HDFS写入大量小文件的系统性能,经过测试验证了优化方案的有效性。

关键词:Hadoop,HDFS,私有云存储,小文件优化

参考文献

[1]洪旭升,林世平.基于Map File的HDFS小文件存储效率问题[J].计算机系统应用,2012(11):179-182.

[2]郝树魁.Hadoop HDFS和Map Reduce架构浅析[J].邮电设计技术,2012(7):37-42.

[3]BORTHAKUR D.The Hadoop distributed file system:architecture and design[J].Hadoop project website,2007,11:1-10.

[4]张峰,李基亮.校园私有云存储方案的探索[J].华东师范大学学报(自然科学版),2015(z1):139-145.

[5]MOHANDAS N,THAMPI S M.Improving Hadoop performance in handling small files[C]//Proceedings of 2011 International Conference on Advances in Computing and Communications.Kochi:Springer Berlin Heidelberg,2011:187-194.

[6]邓鹏,李枚毅,何诚.Name Node单点故障解决方案研究[J].计算机工程,2012,38(21):40-44.

[7]李菊.基于私有云安全平台的网络安全部署研究与实施[J].信息网络安全,2013(8):48-51.

Hadoop云平台 篇7

关键词:Hadoop,云计算,Hbase,智能电网,IEC61970

0 引言

智能电网是电网的智能化, 通过将信息技术、通信技术、计算机技术与原有的电网高度紧密地集合到一起的新型电网, 实现电网的可靠、安全、经济、高效、环境友好和使用安全的目标。但是随着电网智能化的不断提高, 其数据量也随之以指数级的增长。面对这海量数据的存储的难题, 国内已有电力调度系统的建设大多采用常规的解决方案, 即采用昂贵的大型服务器为基础, 通过传统的关系数据库的方式管理, 并且以数据库分片的方式存放到磁盘阵列中的形式[1]。这导致系统的扩展升级较为困难, 费用十分高昂, 且整个系统模块间耦合性较强, 难以满足电网智能化所要求的高效、可靠、经济的目标[2]。

云存储能够解决智能电网对海量数据的存储的难题, 最大限度地整合系统的存储能力, 减少电网智能化的成本, 大幅提高当前系统的整体性能, 对智能电网的发展起到巨大的推动作用。云计算虽然在智能电网方面未见成型的系统[3,4], 但已经在其他领域得到了大量的应用[7,8], 而且智能电网方面的云计算系统也在架构设计开发阶段了[9], 但是Hadoop集群在处理电网大数据上具有巨大的优势[1,12]。

1 Hadoop概述

Hadoop作为一个开源的云计算基础框架, 一个分布式系统基础架构, 可以使用户充分利用集群的威力高速运算和存储, 具有可靠的数据存储和处理能力、易于扩展的计算机集群、以高容错性的多数据副本、以软件开源及廉价计算机集群带来的低成本等优势, 正成为信息领域研究的热点。

HBase (Hadoop Database) , 是一个在HDFS系统基础上的高可靠性、高性能、面向列、可伸缩的分布式No SQL数据库, 是谷歌公司Big Table技术的开源项目[15], 利用HBase技术可在廉价PC服务器集群上搭建起大规模非关系结构化快速读写的存储仓库。

Map Reduce作为并行处理大数据集的软件框架, 在Hadoop上得到了实现[7]。它负责分配工作以及与用户程序进行通信, 通过把对数据集的大规模操作分发给网络上的每个节点上, 实现数据的分布式处理。

2 智能电网数据云存储系统设计

智能电网环境下电力数据具有:规模大、类型多、价值密度低和变化快的特点[5], 按照数据的产生源大致分为三类:一是电网运行和设备检测或监测数据;二是电力企业营销数据, 如交易电价、售电量、用电客户等方面的数据;三是电力企业管理数据[5]。因此随着时间的增长, 存储电网数据所需的空间将越来越大, 同理在查询数据时也将更为费时费力。

针对上述智能电网数据的特点, 结合Hbase分布式数据库稀疏存储、自动切分数据、提供高并发读写操作等特点, 构建出智能电网数据云存储系统。

如图1所示为云存储系统的结构图, 整个系统由存储客户端、Hadoop服务器集群、查询客户端三部分组成。数据源包括智能电网中的发电、变电、输电、用电、调度、销售、财政等数据, 由各类监控管理设备或终端经由以太网等网络传输, 并经由存储客户端存储到集群当中。系统核心是以大量廉价的PC机为基础, 通过Hadoop分布式框架搭建的服务器集群, 由少量的Name Node (负责维护文件系统命名空间) 和大量的Data Node (负责存储数据块) 组成。图1左边是存储客户端, 负责将上传的数据映射成Hbase数据库Htable表项, 并且存储到Hbase数据库中;右边为查询服务器, 负责处理海量数据的查询, 为数据分析应用提供海量数据基础。

2.1 集群搭建及Hbase表设计

通过虚拟化技术, 在安装Windows 7操作系统的PC机上, 安装VMware Workstation 10, 虚拟Linux环境, 形成一个处于10.10.11.0段的局域网络。在各机上安装JDK、SSH、Hadoop-0.20.2以及Hbase-0.90.5, 完成搭建一个完全分布模式下的Hadoop集群, 最后再在各机上安装Zookeeper-3.3.4来管理Hadoop集群。

创建Hbase表时需要确定表的结构和表的属性。表的结构有三种基本类型包括:行关键字 (Row Key) 、时间戳 (Time Stamp) 和列族 (Column Family) 。其中行关键字由用户ID (类型为32位二进制) 、数据存入时间 (Datatime类型) 、数据类型 (String类型) 、数据行ID (类型64位二进制) 四个部分组成的字节数组, 由Row Key生产器生成。时间戳根据输入数据的时间戳而定, 若数据为静态数据本身无时间戳则由存入数据库时间为时间戳的值。列族, 利用其稀疏和动态创建列的特性, 根据输入文件描述的对象动态创建列并且把数据存到对应列中。而表的属性主要用到的有:数据行最大版本数, Hbase通过保留旧版本以预防误操作, 在这由于数据被修改的可能性较小故设为3;压缩算法, 使用snappy算法, 其压缩效率与lzo相近但解压效率远高于Izo, 使数据查询速度加快。

2.2 存储客户端设计

实验以调度系统向云存储系统进行数据上传为例, 将一台PC机作为调度系统数据发生端, 将满足国标DLT890[12]标准 (转化自IEC系列标准) [6,11]的数据上传到集群。其中数据包含了地理 (GIS) 信息、电力设备和线路信息、财政信息、负载信息、量测信息、电力保护信息、设备储备与损耗信息、预测及计划信息等[14], 这些信息数据以通用信息模型及其拓展模型为模板形成, 并且通过RDF (Resource Description Framework) 网络资源描述语言[10]的方式描述, 如图2所示。

在实验里, 存储客户端根据用户信息和相关配置信息创建配置信息并且初始化Row Key工厂以及创建数据行上传缓冲区HTable Pool, 然后将上传文件中的数据映射为数据行存放到上传缓冲区中, 当缓冲区存放的数据行达到一定的行数再提交实行稀疏的磁盘存储, 如表1所示, 且数据项中可以含有空的列项, 并且为空的数据项不占用任何存储空间。由于HTable是有序的且Hbase具有自动切分数据的能力, 故只需控制存储数据行的Row Key不连续递增, 就能把数据行均匀的存到集群机器上, 保持机器负载的均衡, 避免了新数据扎堆存储到相同的机器上降低整个存储系统的I/O性能的现象。

上述数据上传的详细过程如图3所示, 其中上传缓冲区通过HTable Pool类对上传的数据行进行缓冲和管理, 除此之外通过建立上传文件流队列实现用户的多文件上传操作。

2.3 查询客户端设计

Hbase轻量化地集成了Hadoop中的Map Reduce并行运算模型[9], 并且根据自身的特点突出优化了其表查询的效率以及提出了基于Map Reduce的表查询函数。因此用户在查询时主要设计的是Table Input Format、Table Mapper、Table Reducer、Table Output Format四个函数[8], 其整体查询过程如图4所示。

1) Table Input Format函数, 负责将数据以表的形式通过表分割成为Splits, 然后提交给Map函数。

2) Table Mapper函数, 负责处理Table Input Format函数提交的Splits, 配置Row Key值的范围、该数据项的版本、过滤器等设置, 确定数据查找的条件并创建扫描读入对象Scan, 最后将查询到的数据交给Table Reducer函数。

3) Table Reducer函数, 负责对查询到的数据进行分析处理。实验中由于无特殊应用需求, 只对查询数据进行了排序, 提交到Table Output Format函数。

4) Table Reducer个数配置, 通过配置Table Reducer个数能够调节H a d o o p集群的负载以及该Map Reduce任务的处理速度, Table Reducer个数在很大程度上影响整个Map Reduce任务的效率。

5) Table OutputFormat函数, 除了负载汇总Table Reducer函数处理完的数据以外, 还提供了底层刷新的机制, 大大地增加了大量数据在相界面呈现时的速度。

3 实验与结果分析

3.1 实验平台环境

本文的所有实验均在实验室搭建的Hadoop平台上运行。平台有9个节点组成, 均为廉价PC机, 每个节点的物理配置为双核CPU, 主频为2.0MHz, 内存为2G, 网络带宽100Mbps局域网, 硬盘为100G, Hadoop版本为0.20.205, Hbase版本为0.90.5, 数据行最大版本数为3。

3.2 数据查询性能分析

实验是在集群无其他任务的条件下, 使用测试客户端以不同的配置测试Hbase的I/O性能, 以得到Hbase的I/O性能最优时Hbase的配置。其中影响Hbase的I/O性能的主要因素是要在集群上开多少个并行进程来处理查询和分析处理任务。

1) 实验中只改变Map Reduce的并行进程个数 (即改变每个Input Split的大小) , 保持其他条件不变, 创建查询170万行数据的任务并获取任务运行时间, 结果如图5所示。

2) 控制Map Reduce的并行进程个数 (Map和Reduce任务均为18个) 及其他条件不变, 只改变查询数据行的数量, 从10万行到350万行, 并获取任务运行时间, 结果如图6所示。

由上述两组实验可以看出, 每个Map Reduce任务的并行进程个数太少时集群资源没用充分地利用查询速度降低;而并行进程个数太多时, 虽然数据处理的速度有所增加, 但却浪费了大量的时间在进程创建和节点通讯上, 反而得不偿失;除此之外如果每个进程处理的数据过多会大量占用节点内存, 导致该节点无法处理别的进程, 降低了效率。因此根据上述两个实验得出在集群用18个进程且每个进程生命周期为20秒 (即处理约170行数据) 时得到较好的效率。故对于本集群, Map Reduce的并行进程个数应设置为[查询数据行数/90000]+1。这样设置虽然牺牲了集群的小部分任务处理速度, 但是却使集群在多任务高负载运行下保证每个任务的处理速度。

3.3 数据读写性能比较

实验是在集群无其它任务运行且Map Reduce配置相同的条件下, 使用测试客户端对Hbase进行写入数据和查询数据, 将同样的数据放到Oracle系统 (四核CPU, 8GB内存, 硬盘650GB) 里查询并统计时间。

由上表2可以看出, 当数据量低于80万行时, 单机服务的传统Oracle数据库有很大的优势;但是随着查询数据量的增大, 集群Hbase数据库的优势越来越明显。但是当在大量数据入库时, 两种数据库系统写入速度都不太理想, 不过针对这一问题, Hbase也提供了一种与数据库文件导入类似的以Hfile (按照Hbase数据格式存储的文件格式) 的方式入库, 其写入速度与HDFS速度一样[13], 并且在文件格式转换时, 还能通过Map Reduce的方式利用集群的整体性能快速地将数据转换为Hfile。综上, 该集群非常适合存储大规模的存储次数频繁但每次数据量不多的智能电网大数据, 且在电网大数据处理上具有快速、可靠、廉价的优势。

4 结论

Hadoop云平台 篇8

向云迁移与大数据分析可能是2016年全球首席信息官的头等大事。调查显示, 全世界大约90%的数据都产生在过去10年中, 互联网、云计算、大数据等技术革命的影响不断渗透到世界的各个角落, 最早收益的就是IT和互联网公司, 但从近几年的发展趋势看, 传统产业IT转型速度加快, 包括电信、医疗、制造、保险等, 企业管理者试图通过IT转型捕捉关键数据, 由此产生更多的盈利能力和商业洞察。

Gartner在2015年2月公布了一份题为“各行各业云部署相似性多于差异性”的研究报告:预测到2018年末的近4年中, 公有云IT支出的年复合增长率为18%。这也进一步证明, 云IT支出远远超过平均IT支出, 而且这种趋势没有任何减速迹象。Ovum分析师Tony Bae也表示, 云是下一波Hadoop大量采用之处。“专用设备和云部署将推动下一波Hadoop和大数据分析的大量采用。”

中国市场也不例外, 国内企业在经历了近20年的商业化运行之后, 已经深切体会到了信息化对于企业运营的重要性, 在云时代, 目前已经有大量企业前赴后继地拥抱云计算, 从最开始的资源池、私有云到现阶段逐渐接受以BAT为主导的公有云服务, 由此也形成了“混合云”这一市场局面, 企业主们通常将核心生产业务存放于私有云, 将需要大量计算能力和资源空间的非核心业务上传至公有云, 业界普遍认为, 混合云将是中国IT市场的新常态, 并将长期存在。

混合云引发大数据新难题

虽然混合云的存在符合企业市场客观发展规律, 但却给大数据分析带来了不小挑战, 如何在混合云框架下进行大数据的挖掘分析成为了业界的新难题。

一家国内咨询公司的CTO对通信世界全媒体记者表示:虽然企业入云是趋势, 但目前的公有云还存在很多不足, 当数据量较大时, 缺陷就暴露出来了——效率低下, 当月活跃数据超过1亿后, 查询时间过长, 影响业务时效性;单位成本高;IO瓶颈明显, 与线下集群相比, 即便是高配置下的公有云性能还是相差甚多;防护策略少, 大量数据存储于云端, 数据安全防护薄弱, 很容易受到网络攻击。

也就是说, 企业需要为可能长期存在的混合云架构, 设定更加合理的大数据分析策略。目前, 业界基于大数据的应用开发大多基于H adoop的开源平台。对于目前以开源社区模式茁壮成长起来的Hadoop平台, 由于一直采用开源、开放的原则, 近几年得到迅速发展, 但更多的IT工程师认为, 对于大数据而言, 开源Hadoop仅是一块“敲门砖”, 如果需要实现更加完善的功能, 显然还需要更多的技术能力, 或者说更深层次的产品开发。

IT企业挖掘企业跨云新商机

很多IT企业都从中看到了商机, 一系列商业解决方案也不断面市。比如“IT大鳄”微软公司, 从智能云Azure, 到大数据智能的SQL Server 2016, 再到混合云Windows Server 2016, 以及最新推出的数据可视化Power BI, 微软正在践行云计算、大数据、商业智能的发展思路。

在近期召开的微软技术大会上, 微软公司执行副总裁, 全球销售、市场营销和业务运营总裁让·菲力浦·古德华 (Jean-Philippe Courtois) 就表示:“全球86%的CEO相信, 未来5年内, 数字技术将是驱动企业转型的首要动力。云计算、大数据、人工智能, 这些引领变革的技术趋势超越了传统IT的范畴, 正在推动企业核心业务的转型和创新。”

目前, A zure公有云已经覆盖了全球3 8个区域;全球“财富50 0强”企业中, 有85%的企业采用了微软云服务。在微软亚太研发集团首席运营官、微软亚太科技有限公司董事总经理、微软中国云计算与企业事业部总经理申元庆看来, 公有云平台应具备全面的解决方案能力, 无论是公有云、私有云、混合云架构, 还是企业级云服务、大数据分析、人工智能、物联网、开发工具和移动应用等, 应该满足企业的各类业务需求。

选择跨云实施大数据的3个原因

Novantas是一家美国银行领域的解决方案和咨询服务提供商, 其CTO Kaushik Deka表示, 他们每天都在AWS上处理成千上万的关键事物, 通过为银行客户提供洞察力而获得业务方面的增长, 数据可以在公有云环境下做到灵活部署和调用, 但一部分银行客户对数据的安全性等级有较高要求, 因此他们不能将数据迁移到公有云平台上, 因此必须搭建适合混合云架构的大数据平台。

事实上, 与Novantas拥有相同业务需求的企业并不在少数, 总结而言, 企业跨云处理大数据通常包括以下3点原因:

●降低采购、配置和维护运行大数据应用所需的客户端硬件的成本;

●增强数据工程师和数据分析师通过自助服务配置解决业务问题的能力;

●实现向云迁移的战略目标, 减小公司自有数据中心的规模。

基于以上市场诉求, 从事大数据分析与挖掘服务提供商Cloudera公司的联合创始人、首席战略官M ike Olson也表示, 混合云架构下的大数据分析, 需要企业级的大数据平台能够处理任何种类的大数据工作负载, 无论工作负载是临时性的还是长久性的, 都能够处理成批作业以支持建立数据采集管道, 或支持先进的SQL分析和复杂事件处理。这才是跨云而生的大数据分析能力。

运营商大数据不止于Hadoop

电信研究院的大数据专家告诉记者, 电信领域的大数据应用场景近年来也在不断增多, 总体而言可以分为两种, 首先是旧平台迁移, 传统经分系统多承载于类似O r acle、I B M的数据库中, 伴随数据量的逐渐增大, 以及设备扩容所带来的成本压力, 一些运营商会考虑将经分系统逐渐迁移至开源的大数据平台上;其次是新业务, 物联网是电信行业全新的市场领域, 物与物之间的全新通信方式将带来海量的连接数据, 面对这部分数据压力, 运营商更多选择用开源平台来承载。

据悉, 目前国内运营商均已分别建立了开源的大数据平台, 这其中以中国联通最为积极和完善, 尽管最初采用的都是免费的Hadoop版本, 但随着系统升级和能力扩展, 运营商也在引入大数据领域的合作伙伴以及采用Hadoop商用版本。

其原因在于, 伴随Hadoop平台上的组件越来越多, 运营商需要投入更多人力和精力去维护这些组件, 这很可能会加重运营商的IT负担, 如果找本土软件商进行二次开发, 由于贡献代码无法返回开源社区形成标准, 很容易陷入无法正常升级的尴尬境地, 因此在针对扩展性、安全性、生产就绪性等方面的考量时, 更多客户选择了商用版本。

公有云提供商率先做出市场反应

在多云和混合云架构下, 越来越多的公司希望在客户端运行某些工作负载, 在云中运行另一些工作负载, 这么做也许是为了扩大规模、执行开发和测试任务或者满足服务级别协议及行业监管要求。更重要的是, 企业更不希望将数据锁定到特定云服务中, 以降低风险。

由此, 诸如微软、亚马逊等国际公有云服务商率先推出了混合云架构下的大数据分析能力。

微软最近面向用Power BI Desktop建立报告的Microsoft Azure客户推出了新的Impala预览版连接器。这些客户可以利用Impala的速度优势, 将大量类型不同、数量不等的数据置于数据分析状态显示板中, 供任意数量用户访问。微软公司总经理Jeana Jorgensen表示:“Azure客户认识到, 云中大数据分析可能对其业务产生重要影响。”

上一篇:感恩教育的思考下一篇:问题透析