论文部分内容阅读
[摘要]从服务器端入手,将Hadoop技术应用到网络考评系统,分析了Hadoop数据处理单元、MySQL数据库单元、Hadoop-MySQL接口单元、PHP-MySQL接口单元和用户接口单元的实现方法。实践证明,Hadoop是一个高效的分布式计算引擎,可以大大提高网络考评系统的效率和性价比。
[关键词]网络考评系统 Hadoop B/S
基于Internet网络技术的网络考评系统以具有自动组卷、自动阅卷和随时接入的特点,为课程考核提供了一种更为便捷、高效的途径。目前,针对此类系统的研究主要集中在软件的层次模型、功能设计和测试方案等方面。华中师范大学的邓洪涛研究了多层架构技术在教学考评系统中的应用[1];苏州大学的朱云霞优化了系统持久层框架Hibernate,简化了JAVA程序操作数据库的方式,提高了系统对数据库的访问效率[2];南开大学的斯琴其木格将基于MVC模式的Web应用框架Struts应用于教学考评系统的开发[3]。以上这些研究工作优化了网络考评系统的性能,但无法应对当前面临的主要困难:正常时段的用户数量和高峰时段的用户数量差别很大,系统的性能需要具备灵活调节的特性。
本文将Hadoop引入网络考评系统,通过优化组合普通电脑机群达到性能的弹性需求,缓解高峰与正常时段访问的矛盾。网络结构依然采用B/S模式,这种模式能极大简化客户端的要求。
一、基于Hadoop的网络考评系统结构设计
图1为系统结构设计示意图,由web服务器、分布式数据库和Hadoop服务器三部分组成。web服务器提供方便的B/S服务,数据库提供数据的存储和任务的中转,Hadoop服务器提供分布式数据处理。为了支撑上述服务的高性能运行,选择了服务器版ubuntu-12.04作为服务器操作系统。选择了开源的Apache组建Web服务器,它具有稳定、多平台和开源的特性,提供了HTTP通信协议、虚拟主机、网络安全传输规格SSL、PHP/Perl程序模块以及代理服务器模块等[4]。选择开源的MySQL数据库作为存储和中转核心,搭配Apache Web服务器软件和PHP动态网页,组成优秀的Web网站架构。Hadoop通过数据库交互数据,高效进行数据处理。除此之外,系统涉及的工具包、软件包、开发环境都是从开源社区免费获得。
二、基于Hadoop的网络考评系统实现
(一)Hadoop-MySQL接口单元实现
虽然有强大的Sqoop工具提供接口实现,但考虑到开发的复杂性、系统负荷能力, 直接采用Java语言编写接口功能。在开发环境上通过添加Java与MySQL连接的驱动mysql-connector-java,基于此驱动提供的JDBC应用程序接口实现了Hadoop与MySQL的接口通讯。另外,为了使Hadoop及时了解事件发生的时刻,在MySQL中还设置了信号量标志数据,当用户事件提交到MySQL时,会同时设置相关的标志信息,Hadoop系统通过循环查询标志信息决定任务的启动。在Hadoop程序中添加一个进程,这个进程周期性读取着MySQL中的标志数据,通过使用mysql-connector-java中的executeQuery()方法实现。
(二)Hadoop处理单元实现
MapReduce是Hadoop的任务分配和调度核心,MapReduce任务分为两个主要阶段:Mapping和Reducing。每一个阶段都有自己的处理函数,Mapping函数为mapper,Reducing函数为reducer[5]。此外,为了减轻MapReduce任务对系统的负担,除了Mapping和Reducing,还使用了MapReduce的优化选项Combine。Combine的作用就是将mapper的结果先进行合并,以减小mapper和reducer之间的网络流量,节省资源。Combine的数字签名同Reducing完全一样,只需要修改一下类名。
(三)MySQL数据库表实现
MySQL是整个系统数据存储和中转的中心,在里面存储用户信息、题库这两类信息,在运行时还需要存储用户提交的信息和反馈信息。MySQL有一个十分友好的带界面的管理器phpMyAdmin,这是一个用PHP语言制作的网页软件,直接通过浏览器就可以访问,在里面可以可视化管理整个数据库[6]。通过phpMyAdmin创建一个新用户,生成一个同名数据库,然后通过MySQL命令创建用户信息表和判断题等。
(四)PHP-MySQL接口单元实现
PHP语言为数据库操作提供了良好的接口,直接使用其中mysqli函数族的API,无需像Java一样安装驱动,并且永久连接数据库,降低服务器端的压力。在连接到数据库之前首先要明确目标数据库的URL,包括:主机名、用户名、用户密码和数据库名,其中的用户名、用户密码和数据库名必须同Java程序参数一致。首先创建一个指向指定数据库的连接对象,参数如上所述;然后将要执行的MySQL指令以字符串的形式保存在变量内,再调用mysqli_query()执行操作;最后调用mysqli_free_result()释放资源,调用mysqli_close()关闭数据库连接。
(五)用户接口单元实现
用户接口单元是PHP格式的网页,其向用户显示信息以及将用户信息传回到服务器。PHP动态网页执行流程见图2,界面包含登陆、认证、考试、评价和帮助等。
登陆界面接收用户输入的用户ID号、用户密码、用户类型,然后传递给反馈界面,通过HTML即可实现。反馈界面需要根据不同的判断结果,显示不同的内容,但是其网页框架是不变的,所以这个网页采用PHP与HTML相结合的方式编写。用户身份验证成功后需要依据用户的类型显示不同的网页内容:如果是学生,则提供进入题库和撤销登录的选择;如果是教师/管理员,也要提供相应的选项。题库网页的开发其实与登陆界面类似,采用HTML指定网页的基本格局、设计表单,使用PHP语言与数据库进行数据传输、数据匹配等任务。登陆成功界面需要向题库界面传递用户名,这里将此信息保存为Cookie。Cookie是浏览器的一种缓存区,用于网页间的短时、小量数据传输。在登陆成功网页内,将从数据库中取出的用户姓名保存为userName的Cookie变量,在题库网页内,将Cookie变量userName的值赋给变量$quserName以供使用。
经过测试,各PHP网页工作正常,能判断出用户信息出错、密码错误的情况,题库界面可以读取数据库中的题目,评分页面能够正常评分,实现了设计的基本功能,且使用方便,达到了设计目的。图3为重要的答题和评分界面。
三、结语
本文从服务器端入手,将Hadoop应用到网络考评系统,提出了PHP用户端-MySQL数据库-Hadoop分布式处理模式的考评软件体系。针对各功能节点和接口部分,深入探讨了Hadoop数据处理单元、MySQL数据库单元、Hadoop-MySQL接口单元、PHP-MySQL接口单元和用户接口单元的实现方式和方法,使网络考评系统用户端简单高效,而后台处理更加并行化,充分发挥了Hadoop系统的优势。
[参考文献]
[1]邓宏涛.基于多层体系结构技术的教学考评系统的分析与设计[D].华中师范大学,2006.
[2]朱云霞.基于Hibernate的教学评估系统的设计与实现[D].苏州大学,2008.
[3]斯琴其木格.基于Struts框架的教学考评系统设计与实现[D].南开大学,2009.
[4]陈湘扬,陈国益.PHP5+MySQL网页系统开发设计[M].电子工业出版社,2007.
[5]White, Tom. Hadoop: The definitive guide[M]. O'Reilly Media, Inc., 2012.
[6]张建华. LAMP 从入门到精通[M]. 浙江大学出版社, 2006.
(作者单位:中南大学物理与电子学院 湖南长沙)
[关键词]网络考评系统 Hadoop B/S
基于Internet网络技术的网络考评系统以具有自动组卷、自动阅卷和随时接入的特点,为课程考核提供了一种更为便捷、高效的途径。目前,针对此类系统的研究主要集中在软件的层次模型、功能设计和测试方案等方面。华中师范大学的邓洪涛研究了多层架构技术在教学考评系统中的应用[1];苏州大学的朱云霞优化了系统持久层框架Hibernate,简化了JAVA程序操作数据库的方式,提高了系统对数据库的访问效率[2];南开大学的斯琴其木格将基于MVC模式的Web应用框架Struts应用于教学考评系统的开发[3]。以上这些研究工作优化了网络考评系统的性能,但无法应对当前面临的主要困难:正常时段的用户数量和高峰时段的用户数量差别很大,系统的性能需要具备灵活调节的特性。
本文将Hadoop引入网络考评系统,通过优化组合普通电脑机群达到性能的弹性需求,缓解高峰与正常时段访问的矛盾。网络结构依然采用B/S模式,这种模式能极大简化客户端的要求。
一、基于Hadoop的网络考评系统结构设计
图1为系统结构设计示意图,由web服务器、分布式数据库和Hadoop服务器三部分组成。web服务器提供方便的B/S服务,数据库提供数据的存储和任务的中转,Hadoop服务器提供分布式数据处理。为了支撑上述服务的高性能运行,选择了服务器版ubuntu-12.04作为服务器操作系统。选择了开源的Apache组建Web服务器,它具有稳定、多平台和开源的特性,提供了HTTP通信协议、虚拟主机、网络安全传输规格SSL、PHP/Perl程序模块以及代理服务器模块等[4]。选择开源的MySQL数据库作为存储和中转核心,搭配Apache Web服务器软件和PHP动态网页,组成优秀的Web网站架构。Hadoop通过数据库交互数据,高效进行数据处理。除此之外,系统涉及的工具包、软件包、开发环境都是从开源社区免费获得。
二、基于Hadoop的网络考评系统实现
(一)Hadoop-MySQL接口单元实现
虽然有强大的Sqoop工具提供接口实现,但考虑到开发的复杂性、系统负荷能力, 直接采用Java语言编写接口功能。在开发环境上通过添加Java与MySQL连接的驱动mysql-connector-java,基于此驱动提供的JDBC应用程序接口实现了Hadoop与MySQL的接口通讯。另外,为了使Hadoop及时了解事件发生的时刻,在MySQL中还设置了信号量标志数据,当用户事件提交到MySQL时,会同时设置相关的标志信息,Hadoop系统通过循环查询标志信息决定任务的启动。在Hadoop程序中添加一个进程,这个进程周期性读取着MySQL中的标志数据,通过使用mysql-connector-java中的executeQuery()方法实现。
(二)Hadoop处理单元实现
MapReduce是Hadoop的任务分配和调度核心,MapReduce任务分为两个主要阶段:Mapping和Reducing。每一个阶段都有自己的处理函数,Mapping函数为mapper,Reducing函数为reducer[5]。此外,为了减轻MapReduce任务对系统的负担,除了Mapping和Reducing,还使用了MapReduce的优化选项Combine。Combine的作用就是将mapper的结果先进行合并,以减小mapper和reducer之间的网络流量,节省资源。Combine的数字签名同Reducing完全一样,只需要修改一下类名。
(三)MySQL数据库表实现
MySQL是整个系统数据存储和中转的中心,在里面存储用户信息、题库这两类信息,在运行时还需要存储用户提交的信息和反馈信息。MySQL有一个十分友好的带界面的管理器phpMyAdmin,这是一个用PHP语言制作的网页软件,直接通过浏览器就可以访问,在里面可以可视化管理整个数据库[6]。通过phpMyAdmin创建一个新用户,生成一个同名数据库,然后通过MySQL命令创建用户信息表和判断题等。
(四)PHP-MySQL接口单元实现
PHP语言为数据库操作提供了良好的接口,直接使用其中mysqli函数族的API,无需像Java一样安装驱动,并且永久连接数据库,降低服务器端的压力。在连接到数据库之前首先要明确目标数据库的URL,包括:主机名、用户名、用户密码和数据库名,其中的用户名、用户密码和数据库名必须同Java程序参数一致。首先创建一个指向指定数据库的连接对象,参数如上所述;然后将要执行的MySQL指令以字符串的形式保存在变量内,再调用mysqli_query()执行操作;最后调用mysqli_free_result()释放资源,调用mysqli_close()关闭数据库连接。
(五)用户接口单元实现
用户接口单元是PHP格式的网页,其向用户显示信息以及将用户信息传回到服务器。PHP动态网页执行流程见图2,界面包含登陆、认证、考试、评价和帮助等。
登陆界面接收用户输入的用户ID号、用户密码、用户类型,然后传递给反馈界面,通过HTML即可实现。反馈界面需要根据不同的判断结果,显示不同的内容,但是其网页框架是不变的,所以这个网页采用PHP与HTML相结合的方式编写。用户身份验证成功后需要依据用户的类型显示不同的网页内容:如果是学生,则提供进入题库和撤销登录的选择;如果是教师/管理员,也要提供相应的选项。题库网页的开发其实与登陆界面类似,采用HTML指定网页的基本格局、设计表单,使用PHP语言与数据库进行数据传输、数据匹配等任务。登陆成功界面需要向题库界面传递用户名,这里将此信息保存为Cookie。Cookie是浏览器的一种缓存区,用于网页间的短时、小量数据传输。在登陆成功网页内,将从数据库中取出的用户姓名保存为userName的Cookie变量,在题库网页内,将Cookie变量userName的值赋给变量$quserName以供使用。
经过测试,各PHP网页工作正常,能判断出用户信息出错、密码错误的情况,题库界面可以读取数据库中的题目,评分页面能够正常评分,实现了设计的基本功能,且使用方便,达到了设计目的。图3为重要的答题和评分界面。
三、结语
本文从服务器端入手,将Hadoop应用到网络考评系统,提出了PHP用户端-MySQL数据库-Hadoop分布式处理模式的考评软件体系。针对各功能节点和接口部分,深入探讨了Hadoop数据处理单元、MySQL数据库单元、Hadoop-MySQL接口单元、PHP-MySQL接口单元和用户接口单元的实现方式和方法,使网络考评系统用户端简单高效,而后台处理更加并行化,充分发挥了Hadoop系统的优势。
[参考文献]
[1]邓宏涛.基于多层体系结构技术的教学考评系统的分析与设计[D].华中师范大学,2006.
[2]朱云霞.基于Hibernate的教学评估系统的设计与实现[D].苏州大学,2008.
[3]斯琴其木格.基于Struts框架的教学考评系统设计与实现[D].南开大学,2009.
[4]陈湘扬,陈国益.PHP5+MySQL网页系统开发设计[M].电子工业出版社,2007.
[5]White, Tom. Hadoop: The definitive guide[M]. O'Reilly Media, Inc., 2012.
[6]张建华. LAMP 从入门到精通[M]. 浙江大学出版社, 2006.
(作者单位:中南大学物理与电子学院 湖南长沙)