朱晓丽
(山东广播电视大学,山东 济南 250014)
基于Hadoop的远程教育海量资源存储方法研究
朱晓丽
(山东广播电视大学,山东 济南 250014)
远程教育资源具有数据量大,增长迅速的特点,对这些海量数据资源进行低成本存储和基于内容的高效检索,是远程教育云平台建设面临的一大难题。本文基于Hadoop设计了一套对远程教育海量资源进行存储和检索的方法,解决了这个难题。
云计算;Hadoop;海量数据;远程教育
近年来,云计算日益受到产业界、学术界的重视,我国政府更是把云计算上升为战略新型产业,各级政府给予政策、资金等大力支持。各个行业纷纷基于云计算来规划下一代信息化建设。
云计算是一种共享资源的计算模式,它通过虚拟化、分布式计算等技术手段,将物理上分散于互联网各处的计算、存储、网络、软件等资源聚合起来,实现资源的逻辑集中和动态弹性使用,并以服务的方式将这些资源提供给互联网用户。与传统模式相比,云计算具有强大信息存储与处理能力,可提供方便灵活、按需租用、高性价比的信息化服务。
具体到远程教育方面,云计算技术打破传统模式,为远程教育的发展带来全新的理念[1]。利用云计算技术为互联网用户提供计算、存储、软硬件等服务的全新网络服务模式是实现终身教育公共服务体系的重要支柱,将云计算技术应用于教育,是未来远程教育的发展方向[2]。
中央电大正向国家开放大学转型,国家开放大学的建设方案已经过教育部党组的批准。为了满足国家开放大学的战略发展,有人提出基于云计算建设远程教育云,通过搭建高性能的计算环境,实现快速存储、分发和推送海量数字化资源,实现高质量的远程教学传输力,为用户提供一个个性化、一站式、一体化的学习环境和工作环境,支持个性化学习和因材施教,促进学习者高级思维能力和群体智慧的发展,提高教育质量[3]。
使用云架构的方法来构建远程教育平台,包括数据中心和智能用户终端两部分。针对“目前的教育资源库存在着教学资源共享程度低、教育资源不全面、不系统、各自为战等不利现象”,提出“利用云计算的集中存储方式,将所有数据存储在规模庞大的数据中心和服务器群中”的思路,但对如何实现,没有展开。
远程教育资源在数据量、内容和形式上都在不断的丰富,速度以指数方式增长,这些资源包括从事教育事业的人力资源、物力资源和无形资源的总和。其中直接支持教学活动的各种数字文档资源称为教学资源,包括在教学过程中所使用和产生的教案、课堂用的幻灯片、课堂练习题、课件、动画、图形图像、音、视频文件以及各类测试、考试题;学生创作类资源和学习过程中产生的资源;教育管理与教学评估类的数据资源;教育科研过程中产生的资源;其他特色资源等等。这些资源不仅在内容上多种多样,在表现形式上丰富多彩,在数据量上更是海量惊人。
如何对如此海量的资源进行低成本的存储,并支持高效的检索面临着诸多难题,针对远程教育资源大多为非结构化数据的特点,本文提出了基于Hadoop的远程教育海量资源存储与检索方法。
目前主要的存储数据技术的包括本地存储、共享存储和分布式存储三大类。下面分别说明并进行简单比较。
(1)本地存储
利用服务器本地磁盘来存储数据。主要存在两个方面问题:数据与应用系统紧密结合、数据容量受到较大限制(约为几十TB)。可通过DAS(Direct Attached Storage,直接附属存储)技术进行扩容,但系统软件安装调试复杂。多用于个人电脑和承载小型业务的服务器。
(2)共享存储
服务器通过网络来访问外部存储,并对存储进行共享。主要包括NAS和SAN两种。NAS(Network Attached Storage,网络附属存储),是一种专业的网络文件存储及文件备份设备,或称为网络直联存储设备、网络磁盘阵列。SAN(Storage AreaNet work,存储区域网络),是一种通过光纤集线器、光纤路由器、光纤交换机等连接设备将磁盘阵列、磁带等存储设备与相关服务器连接起来的高速专用子网。NAS提供由文件处理带来的协作性,SAN则具有高性能。由于采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点。数据容量通常在PB级以下,不能满足大规模存储应用的需要,且成本较高。
(3)分布式存储
数据分散存储在多台独立的服务器上,这些服务器形成一个存储集群。采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。具有存储成本低、数据容量大(PB级或以上)的特点。
综上,对于PB级以上的海量数据需要采用分布式存储技术来解决,Hadoop则是分布式存储技术的典型代表。
Hadoop是Google GFS、BigTable和MapReduce三大技术的开源实现,包含两部分内容:(1)Hadoop提供一个分布式文件系统HDFS及分布式数据库HBase用来将数据存储或部署到各个计算节点上;(2)Hadoop是一个实现了MapReduce计算模型的开源分布式并行编程框架,程序员可以借助Hadoop编写程序,将所编写的程序运行于计算机机群上,从而实现对海量数据的处理。概括为一个公式:
Hadoop=HDFS(分布式文件系统)+Hbase(分布式数据库)+MapReduce(并行数据处理)
(1)HDFS(分布式文件系统)
HDFS采用Master/Slave架构,对文件进行分布式存储。一个 HDFS集群是由一个 Master和一定数目的TrunkServer组成。Master是一个中心服务器,负责管理文件系统的namespace和客户端对文件的访问。TrunkServer在集群中一般是一个服务器节点,负责管理节点上附带的存储。在内部,一个文件被分成一个或多个block块,这些block块存储在TrunkServer集合里。
(2)HBase(分布式数据库)
HBase是一个分布式的、面向列的开源数据库,它不同于一般的关系数据库,是一个适合于非结构化数据存储的数据库。另一个不同是HBase是基于列的而不是基于行的模式。HBase使用和BigTable非常相同的数据模型。用户存储数据行在一个表里,一个数据行拥有一个可选择的键和任意数量的列,一个或多个列组成一个ColumnFamily,一个Family下的列位于一个HFile中,易于缓存数据。表是疏松的存储的,因此用户可以给行定义各种不同的列。在HBase中数据按主键排序,同时表按主键划分为多个HRegion。
(3)MapReduce(并行数据处理)
MapReduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在大型集群上,并以一种可靠容错的方式并行处理上PB级别的数据集。一个MapReduce作业通常会把输入的数据集切分为若干独立的数据块,由Map任务以完全并行的方式处理它们。框架会对Map的输出先进行排序,然后把结果输入给Reduce任务。通常作业的输入和输出都会被存储在文件系统中。整个框架负责任务的调度和监控,以及重新执行已经失败的任务。
远程教育资源主要包括文本(如教案、幻灯、题库等)和流媒体(音频、视频、动画等)两类格式的数据,其中文本具体格式有Word、Powerpoint等格式,流媒体包括AVI、MPEG、FLV、AWF等。为了方便使用,远程教育资源通常按照学科进行分类。文本数据需要支持丰富的检索,例如关键字、创建时间、作者等。为了提高检索的查全率,不仅需要对文件名进行关键字检索,更需要对文件内容进行关键字检索。同时被检索的这些资源数据量大、且仍在快速增长中。综上,对远程教育海量资源的存储需做好两点: (1)支持对文件内容基于关键字的检索;(2)成本低且易于扩展。
基于上面两点考虑,本文设计了基于Hadoop的远程教育海量资源存储方法。该存储方法底层采用HDFS对资源进行分布式存储,从而拥有良好的扩展性,成本相对于共享存储有较大降低;利用HBase来存储教育资源的基本信息、文本内容、流媒体内容、版本等信息;借助分词技术对文本内容进行分词后形成关键词,一并保存到HBase中,以备查询时使用;最后利用MapReduce实现关键词的并行检索,从而提高查询的效率。下面介绍两个关键技术:存储远程教育资源的HBase表结构设计、基于内容的检索技术。
使用HBase来存储远程教育资源,关键是要建立合适的数据模型,以支持对教育资源的各类应用。为此需建立一张远程教育资源表(命名为ResourceTable),利用该表对远程教育资源的标题、简介、作者、文本附件、流媒体附件、附件格式等信息进行集中存储。该表的具体格式如表1所示。
表1 ResourceTable结构
行键和时间戳是HBase表的标准字段。由于HBase表按行键顺序存储,为了将学科相关的资源保存在一起(这样可提高检索效率),故将行键定义为两部分:学科ID和随机ID,其中学科ID遵照我国相关标准,时间戳则采用HBase标准格式。
其他列簇用于存储远程资源各项信息。meta列簇用于存储资源的基本信息,由于基本信息可能包括资源标题、简介和作者等内容,为此设计了3列(meta:title、meta: info、meta:author)分别表示这三类信息。教育资源的文本格式内容保存到c_text列簇,鉴于可能包含教案、幻灯、试题等文本附件,设计了3列(c_text:plan、c_text:slide、c_ text:test)来表示。教育资源的流媒体格式内容保存到c_ stream列簇,鉴于可能包含音频、视频、动画等流媒体附件,设计了3列(c_stream:video、c_stream:audio、c_text:automation)来表示。教育资源附件的格式用format列簇表示,并增加了多个列来表示各种文本、流媒体附件格式。如“format:plan word”表示教案这个附件的格式为Word文档,其他以此类推。为了适应教育资源信息未来的扩展需求,所有列簇的列都可以根据需要进行添加。
特别增加了一个keyword列簇,该列簇主要用于支持基于内容的检索而设。keyword列簇只有一个默认列,因此没有命名。所有文本附件分词后形成的关键词集合将作为keyword列簇的值。
上面所有列簇除了format列簇外,均省略列值部分。
实现基于内容的检索,需分两步来做:(1)在保存教育资源的时候,将所有文本内容进行分词,获得关键词集合,并将其存到ResourceTable的keyword列簇;(2)在检索的时候,对ResourceTable的keyword列簇进行检索。提高上述两步的性能是实现基于内容检索的关键。
分词是第一步的关键环节,为提高此步性能,采用集群+MapReduce技术实现并行处理。具体做法:当需要对大量文本内容进行分词时,先将需要分词的内容分成多份,并Map到多个分词节点上,由分词节点对各份数据进行处理(具体处理流程如图1所示),最后通过Reduce方法将各节点的分词结果进行汇总,作为最终的分词结果。通过此并行处理,可显著提高分词的效率。
图1 内容关键词提取过程
在第二步中,由于ResourceTable表中行数众多,各行的关键词较多,每次检索需要对大量的关键词进行比对,产生了性能瓶颈。可利用HBase上的MapReduce集群进行处理。具体做法为:将ResourceTable表的keyword列簇分散存储到多个HBase Region中,通过Map方法对多个HBase Region进行并行处理(即对关键词进行比对),最后通过Reduce方法汇总关键词比对结果。配置HBase使用MapReduce的方法:
(1)首先引入环境变量(修改/etc/profile文件,在文件末尾追加下面内容):
(2)将/jz/hbase-0.20.5/conf下的hbase-site.xml拷贝到hadoop的conf目录下,同时在/jz/hbase-0.20.5目录下,将hbase-0.20.5.jar、hbase-0.20.5-test.jar和/jz/ hbase-0.20.5/lib/zookeeper-3.2.2.jar拷贝到hadoop/lib目录下。
(3)至此,配置完成。
在完成上述配置后,在对keyword列簇进行查询时,HBase会采用MapReduce方式并行进行,从而提高查询的的效率。
采用分布式存储技术,相对共享存储,成本更低且扩展性更好,可根据需求增加存储节点,实现平滑扩展。在MapReduce技术支撑下,提高了分词和检索的性能,从而为实现针对海量数据基于内容的检索提供了保障。
针对远程教育资源数据量大、且增长迅速的特点,本文基于hadoop,采用分布式存储和并行计算的思想,设计了一套对远程教育海量资源进行存储和检索的方法。相比传统的共享存储方法,本方法不仅成本低,而且支持基于内容的高效检索,提高了查全率。
[1]杨龙云.云计算对教育的影响[J].中国教育技术装备,2011(3).
[2]赵明霞,姚高峰,杜晓静.云计算时代下的教育信息化[J].中国教育技术装备,2011(24).
[3]方慕真.为什么要建设国家开放大学远程教育云.
TP391
A
1008—3340(2012)03—0026—04
2012-07-01
朱晓丽,女,山东广播电视大学讲师。