基于Hadoop的校园教育资源管理系统
作者:侯青 徐家喜 吉力
来源:《电脑知识与技术》2014年第01期
        摘要:针对传统海量数据存储和处理方法成本高、效率低、编写程序困难等缺点,该文搭建了基于Hadoop框架的云平台,设计和实现了基于Hadoop的校园教育资源管理系统。测试及实验结果表明,基于Hadoop的云平台在大数据和多用户并发访问环境下,系统运行稳定,数据处理快,能有效降低成本,较传统单机服务器具有明显优势,能够很好的在校园资源管理系统中得到应用。
        关键词:云计算;Hadoop;集;HDFS;Mapreduce
        中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)01-0067-05
        1 概述
        云计算是IT基础设施的交付和使用模式,用户可以通过网络以按需、可扩展方式获得所需
要的计算机资源,如:硬件、软件平台等,提供资源服务的平台被称为“云平台”。当前国内外很多大型企业如:亚马逊、谷歌、IBM等已经推出了自己的云平台,并将计算资源作为服务提供给用户,但是由于云计算平台搭建所需要的硬件资源和软件服务比较昂贵,技术和安全性尚未成熟,另外受到带宽等各个因素的限制,在实际应用中,企业提供的云平台未必是一个解决问题的符合实际的好方案。
        Hadoop是Apache基金会的开源项目,是云计算研究和应用最具有代表性产品。Hadoop分布式框架为开发者提供了一个分布式系统的基础架构,用户可以在不了解分布式系统底层细节的情况下开发分布式应用,充分利用由hadoop统一起来的集存储资源、网络资源和计算资源,实现基于海量数据的高速运算和存储。当前校园教育资源的下载一般是通过FTP来完成,然而由于数据量大,并发用户多,导致服务器负载过重,下载速度慢,所以教育资源系统的资源没有被很好的使用。该文基于hadoop搭建一个校园教育资源管理平台,充分利用闲置PC机,发挥多台机器的功能,解决教育资源管理平台“形同虚设”问题。
        2 基于hadoop的校园教育资源管理系统研究
        2.1搭建云计算平台
        该文为了测试基于hadoop云平台的性能,将机房即将报废的5台闲置机器做了集。其中一台为Master,其余四台为Slave。Master主要配置NameNode和JobTracker的角,负责数据分块、存储并将任务分配给相应节点进行执行。Slave节点主要负责各自任务的具体执行。具体实施步骤如下:
        1、 所需资源包:Linux Ubuntu 9.10 、Hadoop 0.20.0 包、Sun-java6-jdk 包 、SSH 包和Eclipse 包。
        2、 配置流程如下:
        1) 安装Linux系统。该文使用ubuntu 11.10,将五台PC机安装同样版本的Linux系统,同时创建相同用户hadoop,并将home路径来做hadoop的安装路径。比如,本系统在所有机器上都建立了/home/hadoop/program目录。
        2) 安装jdk到/home/hadoop/program路径下,并配置Master环境变量,即:在"/etc/profile"文件的尾部添加以下内容:
        # set java environment
        export JAVA_HOME=/home/hadoop/program /jdk1.6.0_43
        export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
        export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
        保存并退出,执行下面命令使其配置立即生效。
        source /etc/profile
        Slave的jdk安装和配置同Master。
        3) 下载hadoop并解压至Master,安装路径是/home/hadoop/program/hadoop-1.0.4。
        4) 修改配置文件。在hadoop-1.0.4目录下到conf目录,修改以下配置文件:
        ①配置hadoop-env.sh
        该"hadoop-env.sh"文件位于"/home/hadoop/program/hadoop-1.0.4/conf"目录下。到#export JAVA_HOME=$JAVA_HOME 将注释符号#去掉。
        ② 配置l文件
        修改Hadoop核心配置文件l,这里配置的是HDFS的地址和端口号。
       
        p.dir
        /home/hadoop/program/hadoop-1.0.4/tmp
       
        fs.default.name
        hdfs://192.168.3.100:9000
       
        ③ 配置l文件
        修改Hadoop中HDFS的配置,配置的备份方式默认为3。
       
        plication
        3
        dfs.permissions
        false
       
        ④ Mastes中配置Master的IP或者机器名称:
        Master:192.168.3.100
        ⑤ Slaves中配置Slaves的IP或者机器名:
        Slaves:192.168.3.101
        192.168.3.102
        192.168.3.103
        192.168.3.104
        5) 启动并验证hadoop
        ① 格式化HDFS文件系统
        hadoop namenode -format
        ② 启动hadoop
        start-all.sh //启动hadoop
        ③ 查看Master的logs目录,查看Namenode日志以及JobTracker日志,确认hadoop是否正常启动。
        2.2校园资源管理平台系统的设计与实现
        2.2.1系统总体设计
        本系统在eclipse环境下,前台使用jsp页面展示,后台使用java语言结合hadoop API来完成。整个系统平台是建立在局域网内,限在校教职工和学生使用。系统采用三层系统架构,包括客户端、系统管理层和底层基础架构层,如图1所示。
        第一层 客户端,通过Web浏览器向服务器发出资源请求,服务器端返回教育资源分类列表,供客户端下载。
        第二层 系统管理层,具有应用程序扩展能力的Web服务器,本系统是指装有tomcat的Web服务器,它通过相应的应用程序与底层集进行连接,hadoop集负责将用户提交的请求进行处理,并将结果返回至Web服务器,再由Web服务器返回至客户端。
        第三层 hadoop集基础设施层,hadoop集为系统提供存储和计算功能。Hadoop集中的HDFS用于管理数据和分配任务。
        图1 教育资源系统管理系统三层结构
        2.2.2 系统功能模块设计
        教育资源管理系统主要包含三大模块:
        1)用户管理模块:主要包含用户的注册、登录、身份验证、用户信息管理等。
        2) 数据管理模块:主要包含数据的分类、数据的上传、数据的下载和数据的删除等。
        3) 集管理模块:主要动态获取集工作状态和任务进度等。
        系统功能模块图如图2所示:
        图2 系统功能模块图
        2.2.3关键代码实现
linux安装jdk18并配置环境变量        系统关键模块是数据管理模块。数据管理模块主要有三个功能:数据的上传、下载和删除。系统先通过jsp页面调用Servlet和Hadoop的API接口来实现数据的上传、下载和删除。核心代码如下:
        public void upload2HDFS(String s, String d)
        throws IOException
        {Configuration config = new Configuration();
        config.set("acker", "hdfs://192.168.3.100:9001");
        config.set("fs.default.name", "hdfs://192.168.3.100:9000");
        FileSystem hdfs = (config);
        Path src = new Path(s);
        Path dst = new Path(d);
        pyFromLocalFile(src, dst);
        hdfs.close();
        }
        public void download2LocalFile(String s, String d)
        throws IOException
        {Configuration config = new Configuration();
        config.set("acker", "hdfs://master:9001");

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。