基于Hadoop平台的教育资源垂直搜索系统的设计与实现_第1页
基于Hadoop平台的教育资源垂直搜索系统的设计与实现_第2页
基于Hadoop平台的教育资源垂直搜索系统的设计与实现_第3页
基于Hadoop平台的教育资源垂直搜索系统的设计与实现_第4页
基于Hadoop平台的教育资源垂直搜索系统的设计与实现_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于基于Hadoop平台的教育资平台的教育资源垂直搜索系统的设计与实现源垂直搜索系统的设计与实现 答辩人:孔答辩人:孔 楠楠 导导 师:张建明师:张建明( (教授教授) )内容概要内容概要总结与下一步工作总结与下一步工作 系统的实现系统的实现 关键技术阐述关键技术阐述 基于基于HadoopHadoop平台的平台的MDVSPMDVSP模型模型 研究的背景、现状和目标研究的背景、现状和目标研究的背景、现状和目标v背景背景 互联网的信息量呈爆炸趋势增长,数量的增加带来的是搜索服务品质的下降,并且查询的结果里存在大量的重复信息和垃圾信息,用户的查询效率非常低。 互联网已经成为基础教育领域的广大教育工作

2、者、学生和家长们获取基础教育资源和信息的重要工具,那么在网络的发展客观上就需要有能够满足这一特定领域、特定人群或者说是特定需求的网站。研究的背景、现状和目标v现状现状 信息过量。网上资源内容广泛,通用搜索引擎返回的大量信息过多过杂,专业性不强.使用户淹没在海量信息里,筛选信息需要耗费大量的精力。 信息准确度低。由于通用搜索引擎强调通用性,检索范围广,对资源没有筛选分类,资源索引库十分庞杂,很难满足特定用户群的特定需求。 信息服务缺乏针对性,缺少用户交互。通用搜索引擎检索结果完全依赖于用户的关键词,即对于不同的用户,同一个关键词返回的结果相同,没有与用户联系起来,难以满足用户的个性化需求。研究的

3、背景、现状和目标v目标目标 提高教育领域搜索内容的准确率和搜索引擎的计算效率。 熟悉Hadoop分布式集群的整体框架,包括其存储模式和计算模型。 基于Hadoop,定制Map/Reduce和强大的容错机制,定义和实现数据接口。 耦合原始数据预处理和Hadoop,解决名称节点的单点故障等问题。 基于Hadoop分布式平台,结合教育资源垂直搜索领域,设计出搜索效率、准确率较高的垂直搜索引擎。内容概要内容概要总结与下一步工作总结与下一步工作 系统的实现系统的实现 关键技术阐述关键技术阐述 基于基于Hadoop平台的平台的MDVSP模型模型 研究的背景、现状和目标研究的背景、现状和目标基于Hadoop

4、平台的MDVSP模型vHDFSHDFS体系架构体系架构 基于Hadoop平台的MDVSP模型vHDFSHDFS体系架构体系架构 Hadoop的分布式文件系统被设计为将海量文件遍布存储在一个大集群的多台计算机上。HDFS的设计是受到了GFS的启发。HDFS将每一个文件以分块序列的形式进行存储,一个文件的所有分块除去最后一个分块外都是等大小的。为了实现容错将文件分块进行自动复制。文件分块的块大小和复制比例都是可以按照单个文件进行配置的。HDFS中的所有文件都是“只写一次”并且严格限定在任何时候只有一个写文件操作者。基于Hadoop平台的MDVSP模型vHDFSHDFS体系架构体系架构 和Hadoo

5、p MapReduce类似,HDFS也是主从架构。一个安装好的HDFS包括一个单独的名称节点,一个主服务器用于文件系统命名空间管理和客户端的文件访问管理。除此之外,还有很多个数据节点,在集群中的每个节点都有一个数据节点用于存储该节点运行时的数据。名称节点通过RPC接口支持文件系统命名空间中文件和目录的打开、关闭和重命名等操作。它也决定了数据块和数据节点的映射关系。数据节点负责提供文件系统客户端的读写请求,除此之外也提供来自名称节点的数据块创建、删除和复制指令。基于Hadoop平台的MDVSP模型vMap/ReduceMap/Reduce执行流程执行流程 基于Hadoop平台的MDVSP模型vM

6、ap/ReduceMap/Reduce执行流程执行流程 分割文件(fork)。 首先,将众多文件分成大小不等的若干小块数据,数据块大小由用户给定参数控制,然后启动机器集群中的众多程序拷贝。 指派Map/Reduce任务 主程序指派空闲的工作站程序执行Map任务或是Reduce任务。 读取(read) 被指派执行Map任务的工作站读取相关的数据块,从原始数据中解析出Key/Value对,经过Map函数处理,得到中间键值时,存入内存缓冲区。基于Hadoop平台的MDVSP模型vMap/ReduceMap/Reduce执行流程执行流程 本地写(1ocal write) 内存中的数据组被划分函数周期性

7、的划分到R个区域写入本地磁盘。这些在本地磁盘的数据数列的存放位置信息被送回管理机,管理机负责将这些位置信息传送到执行Reduce任务的工作站。 远程读取(remote read) 当执行Reduce任务的工作站被告知这些数据的位置,它通过远程方式读取执行Map任务的工作站中的本地缓冲数据。Reduce工作站读取完所有中间数据后,通过中间关键字对数据进行排列,把具有相同关键字的数据分为一类。排序操作是必须的,因为具有不同的关键字Map后会进行相同的Reduce操作。如果中间数据的数量太大不适合存入内存,就启用外部存储。基于Hadoop平台的MDVSP模型vMap/ReduceMap/Reduce

8、执行流程执行流程 写到输出文件(write) Reduce工作站对每一个由唯一的中间关键字对应的中间数据进行排列,它发送关键字和相对应的中间值给用户的Reduce函数。Reduce函数的输出结果将被写到最后的输出文件中。当所有的Map任务和Reduce任务都已经完成了的时候,Master激活用户程序。在这时候Map/Reduce返回用户程序的调用点。基于Hadoop平台的MDVSP模型v系统体系结构系统体系结构 基于Hadoop平台的MDVSP模型v系统体系架构系统体系架构 表现层:表现层用于生成用户访问的Web页面,该层是用来实现系统与用户的一个人机接口。 逻辑层:这一层是非常重要也是非常关

9、键的一层,因为他是真正意义上实现用户层与数据存储计算的纽带。在这一层里我们利用相应的代码实现前面设计好的一些关键算法。所以说该层的设计是实现系统健壮性、可重用性、可扩展性和可维护性的关键因素。 数据存储计算层:该层的实现是由Hadoop平台实现。存储数据库选用Hadoop组件中的HBase,由图中我们可以看出该层主要是负责存储整个搜索引擎的底层结构化数据,数据存储层主要包括两个大规模的数据库,一是面向爬虫所得页面与抽取信息的写入,二是面向客户查询的信息的读取。在Hadoop平台中我们选择多个数据节点即DataNode,用于提高存储Capacity和计算效率。基于Hadoop平台的MDVSP模型

10、v数据处理模型框架数据处理模型框架 内容概要内容概要总结与下一步工作总结与下一步工作 系统的实现系统的实现 关键技术阐述关键技术阐述 基于基于HadoopHadoop平台的平台的MDVSPMDVSP模型模型 研究的背景、现状和目标研究的背景、现状和目标关键技术阐述v聚焦爬虫设计聚焦爬虫设计关键技术阐述v聚焦爬虫设计聚焦爬虫设计n 聚焦爬虫还需要解决三个主要问题: 对抓取目标的描述或定义; 对网页或数据的分析与过滤; 对URL的搜索策略; 抓取目标的描述和定义是决定网页分析算法与 URL搜索策略如何制订的基础。而网页分析算法和候选 URL 排序算法是决定搜索引擎所提供的服务形式和爬虫网页抓取行为

11、的关键所在。这两个部分的算法又是紧密相关的。关键技术阐述vMap/ReduceMap/Reduce设计设计n Map/Reduce Map/Reduce 数据流设计数据流设计 把输入的数据进行分区,把用户输入的文件分割成M个大小均为6M-64M的块送入Cluster; 在集群节点上首先选择一个核心节点,它是主控制程序master,master控制任务的分配,总共有M个map任务和R个reduce任务需要分配。Master会选择空闲的worker来分配map任务和reduce任务; 用户数据输入后,会分配一个map任务给worker,worker读取并处理相关的文件块。MDVSP在这里做了个优化

12、,众所周知IO耗时,但是网络的IO的耗时远大于本地的IO耗时,所以master会尽量在包含对应输入数据块的副本机器上启动map操作,或者尽量靠近的机器上,从而降低远程IO所带来的延时;关键技术阐述 Worker读取块后会处理数据,分析出key/value然后传递给用户定义的map函数。Map函数将中间结果暂时存放在缓冲的内存中。Map worker执行结束后,它会通知数据处理的地址(而不是数据,这样效率非常高)主控制器master,master更新自身的数据结构,并且负责把这些信息告知Reduce worker。 Master的工作流程好比报刊的订阅/发行业务流,每当master的缓冲文件的位

13、置信息的结构更新时,他就告诉所有的正在运行状态的Reduce worker。Recude worker会迭代所有的排序后的中间数据集合,并且把key和相关的中间结果值集合传递给用户定义的reduce函数。Reduce函数会将内容输出到一个最终的文件中。关键技术阐述v容错与可靠性设计容错与可靠性设计机制描述Backup就是有多个master实例,备份的master实例是inactive状态,但是保持数据结构和管事儿的master一致。一旦工作中的master宕机,马上替换掉。Checkpoint就是master一段时间会将整个数据结构持久化到全局文件系统中(类似于写日志),宕机后,就从上一个ch

14、eckpoint开始启动master进程。关键技术阐述v容错与可靠性设计容错与可靠性设计 毕竟在一个大规模集群中,单点故障失效的问题也很常见。Master维护同一个任务下所有Map worker和Reduce work的状态信息,它会周期性的ping下他们,如果有不回应的,Master就猜测该worker所在节点可能出现故障,对于Map worker(即使它完成了),它会另外找一台机器在上面启一个新的worker重新执行失效worker的任务,而对于Reduce worker,如果完成了的话,就不需要重新执行,负责需要和Map 一样处理。这是因为Reduce worker的输出已经存放到全局文

15、件系统(留有副本),而Map worker的输出存放到本地文件上。重新执行Map时,Master会将新的Map worker信息告知Reduce们。这个机制能很容易的应付较大尺度的worker失效问题。但对于Master呢,一旦坏掉就宕机,所以master一般有两种机制,有backup和checkpoint。关键技术阐述v远程调用设计远程调用设计 RPC是个远程过程调用协议,类似于XMLRPC,但是工作方式有很大的不同,结合基于Hadoop的MDVSP系统,进行了改进、封装,包括两部分,一个是Java服务器端的JAVA-RPC,一个是JavaScript客户端的JS-RPC,两个封装包统称为M

16、DVSP-RPC。 MDVSP-RPC仅仅使用HTTP的GET和POST两种方式的请求,不对HTTP协议的其他请求方式(如 HEAD、PUT、DELETE等)提供支持。MDVSP-RPC在设计的时候要求使用POST,仅在无法使用POST进行请求的操作的时候,才考虑使用GET。因为MDVSP-RPC请求不保证是幂等性操作,使用GET请求做非幂等性操作,会破坏GET的原始语义。远程调用过程中,参数和返回结果都是通过JAVA的序列化形式表示。传输编码采用Base64和JavaScript等字符串方式编码。密钥交换采用Diffie-Hellman密钥交换算法。数据加密采用XXTEA加密算法。关键技术阐

17、述v远程调用设计远程调用设计 请求的格式采用标准的 application/x-www-form-urlencoded 格式,因为这种格式对于任何 HTTP 客户端和服务器来说都是容易构造和解析的,且可以保持 GET 和 POST 请求的构造和解析的一致性。响应的格式采用纯文本,所以服务器可以设置响应的 Content-Type 为 text/plain,并设置明确的字符集。响应格式类似于多行 JavaScript 赋值语句,例如:MDVSP_rpc_result=“B:1“;MDVSP_rpc_errno=”0”;MDSVP_rpc_output=“”;关键技术阐述vHadoopHadoop

18、的的HAHA设计设计内容概要内容概要总结与下一步工作总结与下一步工作 系统的实现系统的实现关键技术阐述关键技术阐述 基于基于HadoopHadoop平台的平台的MDVSPMDVSP模型模型 研究的背景、现状和目标研究的背景、现状和目标系统实现v开发平台及其开发工具开发平台及其开发工具n 操作系统操作系统 我们web服务器采用CentOS(Community ENTerprise Operating System)操作系统,为什么呢?因为CentOS是Linux发行版之一,它是来自于Red Hat Enterprise Linux 依照开放源代码规定释出的源代码编译而成。由于出自同样的源代码,因

19、此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。内核版本为2.6.9-42.0.3.ELsmp。系统实现v开发平台及其开发工具开发平台及其开发工具n 硬件平台硬件平台 我们选用Cisco UCS C200 M1服务器实现计算性能与I/O灵活性完美平衡的高密度服务器,硬件平台是HW4.0,主要有以下特性: Cisco UCSC200 M1服务器配有两枚四核 Intel Xeon 5500系列处理器。这些多核处理器能够根据应用需求自动地智能调节服务器性能。 最多可支持96 GB工业标准DDR3主内存。 最大提供4TB存储。 两个 千兆以太

20、网端口和一个10/100Mbps的管理端口。 双冗余电源能够提高可靠性、可用性和串口的接口。v开发平台及其开发工具开发平台及其开发工具n 开发工具开发工具服务器后台开发语言采用Java,有以下几个原因: 由于Hadoop平台是基于java开发的,考虑到兼容和可移植性,采用Java语言进行程序设计。 Java程序容易部署,在操作系统上安装Java虚拟机就可运行。而且现在Java平台已经嵌入到几乎所有的操作系统中。 考虑到程序中需要有大文本抽取分析,本系统也选用了Perl(Practical Extraction and Report Language)语言,版本是v5.10.0。Perl具有高级

21、语言(如C)的强大能力和灵活性。与脚本语言一样,Perl不需要编译器和链接器来运行代码,只要告诉Perl怎么做就可以了。Perl提供脚本语言(如sed和awk)的所有功能,在文本分析方面效率远远高于Java语言。系统实现v实现效果实现效果系统实现v实验结果对比实验结果对比数据量Oracle单机测试基于Hadoop平台节约时间20万1.1秒1.4秒-0.4秒500万7.6秒3.1秒4.5秒1000万29秒10.4秒18.6秒2000万42秒13秒29秒5000万78秒18.8秒50.2秒我们的实验都是单层扩展,首先考察数据规模对Hadoop平台性能的影响。数据源分别20万、500万、1000万、

22、2000万、5000万。初始节点个数为2。为了减少单次实验的偶然性,表中的实验结果是3次实验的平均值系统实现 为了更直观地看到对比结果,我们将表用折线图表示出来,其中纵坐标是时间,纵坐标表示数据集的大小。v实验结果对比实验结果对比系统实现系统实现对比结果表明:对比结果表明:随着数据量的不断增大,Hadoop版本系统节约的时间越多,优势越明显。数据增加的时候,Oracle单击版系统用时增加幅度高于Hadoop版本系统。数据量很小的时候,Hadoop版本系统的扩展效率反而不如Oracle。实验结果与我们最初的预想有一定差距,因为在数据量增大的基础上实验结果与我们最初的预想有一定差距,因为在数据量增

23、大的基础上HadoopHadoop平台并没有表现出特别大的优势。重新分析一下实验,归结了以下原因:平台并没有表现出特别大的优势。重新分析一下实验,归结了以下原因:第一, 对于我们的实验数据源按照一条记录1k大小来计算,5000万条记录实际上才只有40G的数据量。Hadoop平台只有在处理超大规模数据的时候才能显示出其优势。如果处理的数据源是通信企业内部的真实业务数据,Hadoop平台就会显示出强大的数据处理能力。处理小规模的数据集合的时候,反倒还不如传统的关系数据库效率高。第二, 随着数据源的不断增加,新增节点不断地增加。有第四章可以知道,扩展出的新节点的数目会影响通信社会网络分析与可视化系统的性能。当然,这不是Hadoop自身的问题,而是因为我们将去重操作放在Combine函数中处理,影响了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论