大数据技术文档.docx
《大数据技术文档.docx》由会员分享,可在线阅读,更多相关《大数据技术文档.docx(29页珍藏版)》请在冰豆网上搜索。
大数据技术文档
第1章绪论
随着计算机技术、通信网、互联网的迅速发展和日益普及,Internet上的信息量快速增长。
从海量的信息块中快速检索出用户真正需要的信息正变得很困难,信息搜索应向着具有分布式处理能力方向发展,本系统利用hadoop分布式开源框架良好的扩充能力、较低的运作成本、较高的效率和稳定性来满足需求。
现状:
缺陷和不足:
(1)结果主题相关度不高。
(2)搜素速度慢。
引入hadoop+nutch+solr的优点:
(1)hadoop平台数据处理高效。
hadoop集群处理数据比起单机节省数倍的时间,数据量越大优势越明显,满足信息采集对数据处理的速度和质量要求。
(2)hadoop平台具有高扩展性。
可以适当扩展集群数量来满足日益不断增加的数据量,而这并不会毁坏原集群的特性。
(3)安全可靠性高。
集群的数据冗余机制使得hadoop能从单点失效中恢复,即Hadoop能自动进行数据的多次备份,以确保数据不丢失,即使当某个服务器发生故障时,它也能重新部署计算任务。
(4)Nutch不仅提供抓取网页的功能,还提供了解析网页、建立链接数据库、对网页进行评分、建立solr索引等丰富的功能。
(5)通过Nutch插件机制实现了系统的可扩展性、灵活性和可维护性,提高了开发效率。
能够根据用户需求进行灵活定制抓取和解析,提高了系统使用性。
(6)通过solr集群,采用分布式索引在不同的机器上并行执行,实现检索服务器之间的信息交换。
可以通过设定主题进行索引检索。
研究目标和内容
本文的研究目标是全面深入分析研究分布式搜索引擎,进而优化分布式搜索引擎中的索引构建策略,内容包括:
(1)深入研究hadoop分布式平台,仔细剖析hadoop中的分布式文件系统HDFS和map/Reduce编程模型。
(2)深入研究Nutch架构、相关技术与体系结构,着重研究分析Nutch插件系统的内部结构和流程;对protocol-httpclient插件进行开发支持表单登录;对url过滤、信息解析插件进行开发,提高搜索的主题相关度;(实现用mapreduce的google的排序算法,改进系统搜索的关联度)。
系统功能结构
(1)本地资源解析模块
对本地文本pdf,word,excel内容解析和索引,按照主题分类,添加到相应的主题中进行搜素。
(2)搜索模块
用户根据不同主题进行内容索引、关键词查询,将跟查询关联度最高的前n个文档返回给用户,并统计出在这些查询结果中出现频率最高的前n个词。
用户可根据需求修改配置文件,提高搜索的相关度。
(3)信息爬取模块
信息定制采集模块
1、种子URL:
用作抓取器爬取的出发点,也叫做根URL。
2、关键字:
关键字的选择很重要,描述了抓取任务的所属分类的主题方向。
3、深度:
由于Nutch抓取模块采用的是广度优先的策略,抓取深度的选择决定了抓取时间的长度和抓取网页数量的大小。
一般根据所选取的种子URL的类型和详细程度以及对网页抓取规模的需求来进行设置。
在信息定制模块用户设置主题信息,url信息、抓取深度的信息,抓取线程根据定制信息,开始抓取工作。
(综合型搜索引擎;某一主题类网站,垂直搜索引擎;博客搜索引擎)
信息解析过滤模块
根据fiddle进行登录分析,修改网络协议插件,支持简单的一次跳转表单登录,用户可以在配置文件中进行设置,然后抓取内容;复杂的登陆需要分析登陆过程,写出相对应的网络协议插件。
由于本系统在网络资源采集过程中支持个性化定制,只对目标站点感兴趣的内容进行采集,分析目标站点的结构特点,在页面采集完成后,从中提取出链接、元数据、正文、标题、关键字、描述等信息,进行后续的过滤和其他处理。
链接的提取首先要判断页面类型,页面的类型可以有应答头分析得出,根据不同的类型选择相应的爬取和解析插件,对遇到带有链接的标记如、、等,就从标记结构的属性中找出目标url,并从成对的该标记之间抽取出正文作为该链接的说明文字,链接文字一般能反映文章的主题信息,系统设定阈值,判断主题和说明性文字的相关性,对爬取链接进行过滤,加入到爬取链接列表中。
定制采集的子模块,根据正则表达式对网页内容进行过滤,获取和处理跟主题相关的内容,过滤无关的信息内容;对网页编码格式进行提取,实现内容编码的转换。
(下一步改进主题相关度链接过滤算法)
(4)系统管理模块
用户对根据需求对系统的配置参数进行修改。
论文组织结构
1、绪论。
本章首先介绍了本文研究的背景及意义,接着研究了信息采集与搜索技术的国内外发展现状,最后给出了本文研究的内容和论文组织结构。
2、关键技术。
Hadoop、Nutch、Solr技术架构及文本检索算法
本章介绍了开源软件Hadoop、Nutch、Solr的基本情况;详细介绍了Hadoop框架及其进行分布式计算的编程模型MapReduce和数据存储系统HDFS;Nutch以Hadoop的分布式文件系统HDFS作为底层数据平台,采用MapReduce编程方式实现数据的分布式处理,以扩展机制为突出特性,用户可以根据实际需求对其添加插件进行扩展改进,构建自己的信息采集搜索系统;通过Solr集群,采用分布式索引在不同的机器上并行执行,实现检索服务器之间的信息交换,减小索引对机器的要求,同时介绍了常用的文本检索算法VSM,pagerank和lucene默认的排序算法。
3、系统环境配置。
Hadoop+Nutch+Solr系统的运行环境配置与运行。
本章介绍配置Hadoop+Nutch+solr系统的运行环境并详细阐述其运行流程。
4、基于Hadoop+Nutch+Solr的信息采集搜索系统的设计与实现。
本课题采用hadoop+Nutch+Solr开源软件,缩短了开发时间并且能够根据个性化需要采集数据提高搜素结果的精度,基于mapreduce实现了pagerank算法,将pagerank作为一个独立的索引项添加到nutch默认的lucene排序算法中,用户可以根据需求自己定义排序的规则,提高检索的相关度。
(基于hadoop的nutch网页排序算法研究与实现)
系统相关技术介绍
Hadoop
hadoop由Apache公司于2005年秋天作为Lucene的子项目Nutch的一部分正式引入。
Hadoop被定位为一个易于使用的平台,以HDFS、MapReduce为基础,能够运行上千台PCServer组成的系统集群,并以一种可靠、容错的方式分布式处理请求。
本文基于Hadoop+Nutch+Solr开发的信息采集搜索项目,现对Hadoop进行全面分析和深入研究。
Hadoop框架介绍
Hadoop是执行大数据分布式应用的开源框架,凭借高效,可靠,可扩展等特性受到广泛应用,它有两大最核心的模块:
进行分布式计算的MapReduce与底层的存储系统HDFS(HadoopDistributedFileSystem分布式文件系统)。
MapReduce中任务的分解(Map)与结果的汇总(Reduce)是其主要思想。
Map就是将一个任务分解成多个任务,Reduce就是将分解后多任务分别处理,并将结果汇总为最终结果。
Hadoop整体由九个子项目组成,其中MapReduce和HDFS两大核心将在后文展开具体介绍。
框架如下图所示,项目功能如下表所示.
图Hadoop框架图
子项目
功能
HadoopCommon
Hadoop系统核心,提供子项目的基本支持
HDFS
实现高吞吐的分布式存储
MapReduce
执行分布式并行计算
HBase
一个可扩展的分布式数据库系统
Pig
为并行计算提供数据流语言和执行框架
Hive
提供类SQL语法进行数据查询的数据仓库
ZooKeeper
提供分布式锁等
Mahout
一个大规模机器学习和数据挖掘库
Arvo
Hadoop的RPC(远程过程调用)方案
表Hadoop子项目功能介绍
MapReduce编程模型
MapReduce是一种编程模型,该模型将数据扩展到多个数据节点上进行处理,它最早是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。
并行编程模式的最大优点是容易扩展到多个计算节点上处理数据。
开发者可以很容易就编写出分布式并行程序。
mapreduce的主要思想是将自动分割要执行的问题(例如程序)拆解成map(映射)和reduce(化简)的方式;一个MapReduce作业(job)首先会把输入的数据集分割为多个独立的数据块,再以键值对形式输给Map函数并行处理。
Map函数接受一个输入键值对的值,产生一个中间键值对集合,由MapReduce保存并集合所有具有相同中间key值的中间value值传递给Reduce函数,reduce对这些value值进行合并,形成一个value值集合,最终形成输出数据。
处理流程如下图:
MapReduce的处理流程
Hadoop的分布式文件系统(HDFS)
Hadoop分布式文件系统(HDFS)是GoogleGFS存储系统的开源实现,HDFS具有高容错性和高传输率,特别适合具有大数据集的程序应用。
HDFS采用master/slave架构。
一个HDFS集群包含一个单独的名字节点(Namenode)和一定数目的数据节点(Datanode)组成一个HDFS集群。
HDFS被设计成一个可以在大集群中、跨机器、可靠的存储海量数据的框架。
它将所有文件存储成block块组成的序列,除了最后一个block块,所有的block块大小都是一样的,他们存放在一组Datanode中,文件的所有block块都会因为容错而被复制,每个文件的block块大小和容错复制份数都是可配置的,他们在Namenode的统一调度小进行数据块的创建、删除和复制工作。
下图所示为HDFS的体系架构
图HDFS体系结构图
Namenode和Datanode都可以在普通计算机上运行。
Namenode作为master服务,它负责管理文件系统的命名空间和客户端对文件的访问。
NameNode会保存文件系统的具体信息,包括文件信息、文件被分割成具体block块的信息、以及每一个block块归属的Datanode的信息,对于整个集群来说,HDFS通过Namenode对用户提供了一个单一的命名空间; Datanode作为slave服务,在集群中可以存在多个,通常每一个Datanode都对应于一个物理节点,Datanode负责管理节点上它们拥有的存储,它将存储划分为多个block块,管理block块信息,同时周期性的将其所有的block块信息发送给Namenode。
从上面的介绍可以看出,在搭建好的Hadoop集群上,大数据集首先会由HDFS安全稳定地分布存储到集群内的多台机器上,再利用MapReduce模型将该数据集分解为较小的块(一般为64MB)进行处理,特点是高效、安全、具备高吞吐量。
Hadoop用户可以在不了解分布式底层细节的情况下很好地利用该分布式平台开发分布式程序,进行高效数据存储和运算。
因此Hadoop成为管理大量数据的关键技术,在信息采集和搜索领域的使用范围越来越广。
hadoop具备以下突出的优点:
(1)hadoop平台数据处理简单高效。
hadoop运行在由普通PC机组建的大型集群上,用户可以在平台上快速编写并行代码运行分布式应用,避免耗时的数据传输问题;集群处理数据比起单机节省数倍的时间,数据量越大优势越明显,满足信息采集对数据处理的速度和质量要求。
(2)hadoop平台具有高扩展性。
可以适当扩展集群数量来满足日益不断增加的数据量,而这并不会毁坏原集群的特性。
(3)安全可靠性高。
集群的数据冗余机制使得hadoop能从单点失效中恢复,即Hadoop能自动进行数据的多次备份,以确保数据不丢失,即使当某个服务器发生故障时,它也能重