基于Hadoop云计算平台的资源搜索系统

时间:2022-10-15 02:16:03

基于Hadoop云计算平台的资源搜索系统

摘要:针对当前用户难以快速准确地获取到自己需要的网络信息,设计了基于Hadoop云计算平台的资源搜索系统,并对该搜索系统进行了实验验证,结果表明,随着数据量的不断增大,Hadoop版本系统节约的时间越多,优势越明显。

关键词:云计算;资源搜索系统;Hadoop;MapReduce

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2014)19-4463-03

Implementation of Resource Searching System Based on Hadoop

WANG Jiao, HU Ming-liang

(Xi'an Aeronautics Computing Technique Research Institute,AVIC,Xi'an 710065,China)

Abstract: Aiming at the current user can not quickly and accurately access to network information, A resource search system based on Hadoop is designed, The search system is verified by the experiment ,and the test shows that the Hadoop system is to save time with the increase of data quantity.

Key words: cloud computing; Resource Searching System; Hadoop; MapReduce

互联网的出现改变了我们的工作,学习乃至生活方式,其丰富的资源为我们提供了大量的信息,然而由于缺乏行之有效的整合标准和手段,目前这些资源的分布呈现高度分散状态,内容庞杂无序,结构化程度低,用户往往难以快速准确地获取自己需信息。所以研究和设计出针对资源搜索的系统平台,以提高用户获取资源信息的速度和准确度有着非常重要的意义。而Hadoop作为新一代的分布式计算框架,非常有利于处理“网络大数据”。中国电信、中国移动、淘宝、Facebook 和Yahoo均有成功应用。

1 Hadoop概述

Apache Hadoop 是一个用java语言实现的软件框架,在由大量计算机组成的集群中运行海量数据的分布式计算,由pig,HIVE,Chukwa,ZooKeeper,HBASE,MAPreduce,HDFS等组成。如图1所示。本资源搜索系统主要使用了HDFS,HBASE,MAPreduce。

1.1 Hadoop体系架构

图1 Hadoop体系架构

1.2 HDFS――分布式文件系统

HDFS是一个高度容错性的分布式文件系统,能提供高吞吐量的数据访问,非常适合大规模数据集上的应用,其主要由Client、DataNode和NameNode三部分组成,其中,Client是面向用户的分布式文件系统应用程序;DataNode是存储在本地文件系统中的文件块单元,在存储文件块的meta-data的同时,向NameNode周期发送所存储的文件块信息;NameNode是分布式文件系统中的管理者,负责管理文件系统的存储块复制,集群配置信息,命名空间等。

1.3 MapReduce――映射、化简编程模型

MapReduce是一种编程模型,用于大规模数据集的并行运算。Map(映射)和Reduce(化简),采用分而治之思想,先把任务分发到集群多个节点上,并行计算,然后再把计算结果合并,从而得到最终计算结果。多节点计算,所涉及的任务调度、负载均衡、容错处理等,都由MapReduce框架完成。

1.4 HBASE――分布式数据存储

HBase― Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统;HBase位于结构化存储层,HDFS为HBase提供了高可靠性的底层存储支持,MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制;Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的简单。

2 系统设计

2.1系统体系结构

图2 系统体系结构图

在Browser/Server三层体系结构下,为了真正实现数据存储、计算、用户体验的分离,将资源搜索系统分成三个独立的层。分别是数据存储层、逻辑层、表示层。

1) 数据存储计算层:该层由Hadoop平台实现,选用Hadoop组件中的HBase作为存储数据库,实现分布式数据存储,该层主要是负责存储整个搜索引擎的底层结构化数据,主要包括两个大规模的数据库,一是面向客户查询的信息的读取,二是面向爬虫所得页面与抽取信息的写入;为了提高存储Capacity和计算效率,在Hadoop平台中选择多个数据节点DataNode。

2) 逻辑层:该层是实现数据存储计算层与表示层的纽带,对关键算法(如搜索算法、聚焦爬虫等)的设计至关重要,在设计中,特别要考虑算法的可扩展性、可重用性、可维护性和健壮性等。

3) 表示层:该层是实现系统与用户的一个人机接口,可以生成用户访问的Web页面,向普通用户提供查询界面,向管理员提供后台服务页面。

2.2 数据整合设计

Hadoop云计算平台是利用MapReduce进行切分和整合数据,MapReduce对数据进行整合的逻辑模型如图3所示。

图3 MapReduce 的逻辑模型图

在进行MapReduce操作时,首先对MapReduce程序运行前的参数进行配置,根据输入数据的大小和参数的设置把数据分成M个分段, 每个分段对应一个map线程;然后,编写Map函数,将分段中的数据作为Map的输入,实现[Map:(in_key,in_value)->{(keyj,valuej)|j=0...M-1}];接着, Map的输出到Reduce,在map端完成内存排序写入磁盘复制,在reduce端完成映射到reduce端分区合并排序;最后,将排好序的key/value作为Reduce的输入,经过Reduce计算输出结果,实现[Reduce:(key,[value1,...,valuem])->(key,final_value)|j=0...R-1}]。

如在计算URL访问频率中,Map函数首先处理日志中web页面请求的记录,然后输出(URL,1),Reduce函数把相同URL的value值都累加起来,产生(URL,记录总数)结果。

2.3 网络爬虫设计

网络爬虫是一种自动搜集互联网信息的程序,通过实现爬虫程序,可以搜集某一站点的URLs(网页地址),并将搜集到的URLs存入数据库,其不仅能够为搜索引擎采集网络信息,而且可以作为定向信息采集器,定向采集某些网站下的特定信息,如招聘信息,租房信息等;系统采用开?源?网?络?蜘?蛛?(?S?p?i?d?e?r?)?,SPIDER工作过程如图4所示。采集中每遇到一个页面,都需要判断该页面的URL是否已发现的url,若不是新发现的url,则将其丢弃;否则将它放入待采集url队列。系统采用美国哈佛大学教授拉宾(Rabin)提出的Rabin指纹算法。

1) 假设[A([吧 b1,b2…,bm ])]是包含m个二进制字符的二进制字符串,那么可以根据A构造相应的(m-1)度的多项式如下,其中t是不定元,即:

[A(t)=b1tm-1+b2tm-2+...bm-1t+bm] (1)

给定一个度为k的多项式P(t):

[p(t)=a1tk+a2tk-1+...+ak-1t+ak] (2)

那么A(t)除以P(t)的余数f(t)的度数为(k-1),对于给定的字符串A,定义A的指纹f(A)如下:

[f(A)=A(t)mod P(t)] (3)

如果字符串A的指纹不同于字符串B的指纹,那么字符串A也不同于字符串B:f(A)≠f(B)=>A≠B 。

2) 构造向量[(x0,x1...xi...xn)] [xi=0,1,2,...n] 其中[i]为整数且[i∈0,max(rabincode)],初始值都设置为0,然后用Rabin算法计算url的指纹,并将得到的二进制序列映射成整数i,最后用i作为向量的下标判断[xi]的值,如果 [xi=0],则此url未被访问过,将[xi]的值设置为1;如果[xi=1],则此url已经被访问过,将其丢弃。

3 实验与数据分析

3.1 开发平台及其开发工具

为了测试所设计的基于Hadoop云计算平台的资源搜索系统的性能,在实验中搭建了Hadoop集群, Hadoop集群采用4台服务器,分别是3台Datanode和1台Namenode,Client通过Namenode来提交数据。4台集群服务器配置信息为linux(CentOS 5.4) +Hadoop(0.20.2) +Java (Version 1.6.0_17) +CPU(Intel 酷睿2 双核 E7500 @2.93GHz)+NetWork(NetLink BCM5784M Gigabit Ethernet)+Memory 2G(Hard Disk 320G/7200)。

3.2 实验结果分析

表1 Hadoop版本系统和Oracle系统耗时测试数据

[数据量(万)\&基于Hadoop平台(秒)\&Oracle单机测试(秒)\&节约时间(秒)\&10\&1.0\&0.9\&0.1\&500\&3.0\&7.7\&4.7\&1000\&10.2\&30\&18.8\&2000\&15\&49\&34\&5000\&21\&84\&63\&]

实验结果表明:数据量小的时候(10万),Hadoop版本系统和Oracle系统耗时差不多,而数据量很大的时候(5000万),Hadoop版本系统比Oracle系统节约很多时间,这说明随着数据量的不断增大,Hadoop版本系统节约的时间越多,优势越明显。

(下转第4480页)

(上接第4465页)

4 结束语

随着Internet的迅猛发展,传统单机处理数据的方式已经难以满足Internet数据的爆炸式增长,新的分布式数据处理技术也日益成熟,其取代传统单机处理数据的方式已经成为必然,在当前的海量处理和存储技术中,Hadoop平台成为云计算的首选,基于此,结合资源垂直搜索领域,使用Hadoop分布式平台设计出搜索效率、准确率较高的资源搜索引擎,具有十分重要的意义。

参考文献:

[1] 江建举.基于 Hadoop 平台的海量文件存储策略研究[J].深圳职业技术学院学报,2014(3).

[2] 张艳.基于Hadoop的数字图书馆云检索系统的设计与实现[J].图书馆理论与实践,2014(4).

[3] 解慧娟.MapReduce在Hadoop平台下作业调度算法的改进和实现[J].电脑知识与技术,2014(14).

[4] 侯青.基于Hadoop的校园教育资源管理系统[J].电脑知识与技术,2014(1).

上一篇:《程序设计基础》双语教学的实践与探讨 下一篇:基于图像处理的车牌识别研究