大数据导论-思维、技术与应用 第2章 大数据采集_第1页
大数据导论-思维、技术与应用 第2章 大数据采集_第2页
大数据导论-思维、技术与应用 第2章 大数据采集_第3页
大数据导论-思维、技术与应用 第2章 大数据采集_第4页
大数据导论-思维、技术与应用 第2章 大数据采集_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

大数据导论第二章PART01大数据采集概述PART02系统日志采集方法CONTENTS目录PART03网络数据采集方法PART04习题采集是大数据处理流程的第一步。数据是大数据处理的基础,数据的完整性和质量直接影响着大数据处理的结果。采集是大数据处理流程的第一步。数据是大数据处理的基础,数据的完整性和质量直接影响着大数据处理的结果。PART01大数据采集概念大数据采集概述大数据采集是指从传感器和智能设备、企业在线系统、企业离线系统、社交网络和互联网平台等获取数据的过程。RFID射频数据传感器数据用户行为数据社交网络交互数据移动互联网数据数据包括RFID射频数据、传感器数据、用户行为数据、社交网络交互数据及移动互联网数据等各种类型的结构化、半结构化及非结构化的海量数据。数据包括数据结构结构化半结构化非结构化大数据分类在大数据体系中,将传统数据分类为业务数据,而将传统数据体系中没有考虑过的新数据源分为线下行为数据、线上行为数据和内容数据三大类。消费者数据、客户关系数据、库存数据、账目数据等;业务数据车流量数据、能耗数据、PM2.5数据等;行业数据应用日志、电子文档、机器数据、语音数据、社交媒体数据等;内容数据页面数据、交互数据、表单数据、会话数据、反馈数据等;线上行为数据车辆位置和轨迹、用户位置和轨迹、动物位置和轨迹等。线下行为数据大数据主要来源企业系统机器系统社交系统互联网系统行业数据业务数据内容数据线上行为数据线下行为数据数据源数据类型大数据的主要来源有:1企业系统:客户关系管理系统、企业资源计划系统、库存系统、销售系统等;234机器系统:智能仪表、工业设备传感器、智能设备、视频监控系统等;互联网系统:电商系统、服务行业业务系统、政府监管系统等;社交系统:微信、QQ、微博、博客、新闻网站、朋友圈等。数据源与数据类型的关系图大数据采集方法分类数据的采集是指利用多个数据库或存储系统来接收发自客户端(Web、App或者传感器形式等)的数据。比如,电商会使用传统的关系型数据库MySQL和Oracle等来存储每一笔事务数据,在大数据时代,Redis和MongoDB和HBase等NoSQL数据库也常用于数据的采集。在大数据的采集过程中,其主要特点和挑战是并发数高,因为同时有可能会有成千上万的用户来进行访问和操作,比如火车票售票网站和淘宝,它们并发的访问量在峰值时达到上百万,所以需要在采集端部署大量数据库才能支撑。根据数据源的不同,大数据采集方法也不相同。但是为了能够满足大数据采集的需要,大数据采集方法都使用了大数据的处理模式:MapReduce分布式并行处理模式或者基于内存的流式处理方式。大数据采集方法分类传统企业会使用传统的关系型数据库MySQL和Oracle等来存储数据。随着大数据时代的到来,HBase、Redis和MongoDB这样的NoSQL数据库也常用于数据的采集。通过在采集端部署大量数据库,并在这些数据库之间进行负载均衡和分片来完成大数据采集工作。系统日志采集主要是收集公司业务平台日常产生的大量日志数据,供进行离线和在线的大数据分析系统使用。高可用性、高可靠性、可扩展性是日志收集系统所具有的基本特征。系统日志采集工具均采用分布式架构,能够满足每秒数百MB的日志数据采集和传输需求。1数据库采集2系统日志采集大数据采集方法分类大数据采集方法分类网络数据采集是指通过网络爬虫或网站公开API等方式从网站上获取数据信息的过程。网络爬虫会从一个或若干初始网页的URL开始,获得各个网页上的内容,并且在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足设置的停止条件为止。这样可将非结构化数据、半结构化数据从网页中提取出来,存储在本地的存储系统中。感知设备数据采集是通过传感器、摄像头和其他智能终端自动采集信号、图片或录像来获取数据。大数据智能感知系统需要实现对结构化、半结构化、非结构化的海量数据的智能化识别、定位、跟踪、接入、传输、信号转换、监控、初步处理和管理等。主要关键技术包括针对大数据源的智能识别、感知、适配、传输、接入等。3网络数据采集4感知设备数据采集大数据采集方法分类许多公司的平台每天都会产生大量的日志,并且一般为流式数据,比如搜索引擎的pv和查询等。处理这些日志需要特定的日志系统。目前使用最广泛的用于系统日志采集的海量数据采集工具有Hadoop的Chukwa,ApacheFlume,Facebook的Scribe和LinkedIn的Kafka等PART02系统日志采集方法日志系统特征许多公司的平台每天都会产生大量的日志,并且一般为流式数据,比如搜索引擎的pv和查询等。处理这些日志需要特定的日志系统,这些系统需要具有以下特征:构建应用系统和分析系统的桥梁,并将它们之间的关联解耦;支持近实时的在线分析系统和分布式并发的离线分析系统;具有高可扩展性,也就是说,当数据量增加时,可以通过增加节点进行水平扩展。3123系统日志采集方法目前使用最广泛的用于系统日志采集的海量数据采集工具有Hadoop的Chukwa,ApacheFlume,Facebook的Scribe和LinkedIn的Kafka等Hadoop的ChukwaApacheFlumeFacebook的ScribeApacheFlume的基本概念Flume是一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统。Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、HBase等)的能力。Flume的基本概念Flume的核心是把数据从数据源(Source)收集过来,再将收集到的数据送到指定的目的地(Sink)。为了保证输送的过程一定成功,在送到目的地之前,会先缓存数据到管道(Channel),待数据真正到达目的地后,Flume再删除缓存的数据。ApacheFlume系统架构Flume系统的核心就是一个代理(Agent)。Agent本身是一个Java进程,运行在日志收集节点。Agent里面包含3个核心的组件:Source、Channel、Sink。

Source组件是专门用来收集数据的,可以处理各种类型、各种格式的日志数据,包括Avro、Thrift、Exec、JMS、SpoolingDirectory、Netcat、SequenceGenerator、syslog、http、Legacy和用户自定义的格式。1SourceSinkChannelApacheFlume系统架构Sink组件是用于把数据发送到目的地的组件,目的地类型包括HDFS、Hive、Logger、Avro、Thrift、IRC、FileRoll、HBase、AsyncHBase、MorphlineSolr、ElasticSearch、KiteDataset、Kafka、Custom等,或者其它的FlumeAgent。3Channel组件为Source组件提供了临时存放收集到的数据的能力。也就是说,Channel组件在Agent中是专门用来存放临时数据的,对采集到的数据进行简单的缓存。所有从Source过来的日志数据都会以队列的形式存放在里面,管道类型包括:Memory、JDBC、Kafka、File、SpillableMemory、PseudoTransaction、和Custom等类型。使用内存性能高但不持久,有可能丢数据。使用文件更可靠,但性能不如内存。2ApacheFlume系统架构Flume串联管道处理基于Flume的日志采集是灵活的,既有AvroSink也有AvroSource,既有ThriftSink也有ThriftSource,这意味着我们可以将多个管道处理串联起来,如下图所示。Flume在Source和Sink端都使用了事务机制保证在数据传输中没有数据丢失。ApacheFlume系统架构Flume多数据源合并结构图Source上的数据可以复制到不同的通道上。每一个通道也可以连接不同数量的Sink。这样连接不同配置的Agent就可以组成一个复杂的数据收集网络。通过对agent的配置,可以组成一个复杂的数据传输网络。例如可以将多个管道合并到一个管道中最终输出到同一个Sink中去,如右图所示

ApacheFlume系统架构例如可以设置同一个Source对应到多个Sink上,如下图所示。Flume单数据源多目的地结构ApacheFlume使用方法Flume的用法很简单,就是书写一个用户配置文件。在配置文件当中描述Source、Channel与Sink的具体实现,而后运行一个Agent实例。在运行Agent实例的过程中会读取配置文件的内容,这样Flume就会采集到数据。

配置文件的编写原则如下:从整体上描述代理Agent中Sources、Sinks、Channels所涉及到的组件。#Namethecomponentsonthisagenta1.sources=r1a1.sinks=k1a1.channels=c1ApacheFlume使用方法2)详细描述Agent中每一个Source、Sink与Channel的具体实现:即在描述Source的时候,需要指定Source到底是什么类型的,即这个Source是接受文件的、还是接受http的、还是接受Thrift的;对于Sink也是同理,需要指定结果是输出到HDFS中,还是HBase中等;对于Channel需要指定是内存、数据库,还是文件等。#Describe/configurethesourcea1.sources.r1.type=netcata1.sources.r1.bind=localhosta1.sources.r1.port=44444

#Describethesinka1.sinks.k1.type=logger#Useachannelwhichbufferseventsinmemorya1.channels.c1.type=memorya1.channels.c1.capacity=1000a1.channels.c1.transactionCapacity=100ApacheFlume使用方法3)通过Channel将Source与Sink连接起来。#Bindthesourceandsinktothechannel a1.sources.r1.channels=c1 a1.sinks.k1.channel=c14)启动agent的shell操作。flume-ngagent–na1-c../conf–f../conf/example.file\ -Dflume.root.logger=DEBUG,console参数说明:-n指定Agent名称(与配置文件中代理的名字相同)-c指定Flume中配置文件的目录-f指定配置文件-Dflume.root.logger=DEBUG,console设置日志等级ApacheFlume应用案例NetCatSource应用监听一个指定的网络端口,即只要应用程序向这个端口里面写数据,这个Source组件就可以获取到信息。其中Sink使用logger类型,Channel使用内存(Memory)格式。1)编写配置文件:#Namethecomponentsonthisagent a1.sources=r1 a1.sinks=k1 a1.channels=c1 #Describe/configurethesource a1.sources.r1.type=netcat a1.sources.r1.bind=0 a1.sources.r1.port=44444 #Describethesink a1.sinks.k1.type=logger #Useachannelwhichbufferseventsinmemory a1.channels.c1.type=memory a1.channels.c1.capacity=1000 a1.channels.c1.transactionCapacity=100

#Bindthesourceandsinktothechannel a1.sources.r1.channels=c1 a1.sinks.k1.channel=c1该配置文件定义了一个名字为a1的Agent,有一个Source在port44444监听数据;一个Channel使用内存缓存事件;一个Sink把事件记录在控制台。ApacheFlume应用案例2)启动FlumeAgenta1服务端$flume-ngagent-na1-c../conf-f../conf/netcat.conf\-Dflume.root.logger=DEBUG,console3)使用telnet发送数据从另一个终端,使用telnet通过port44444给Flume发送数据。$telnetlocalhost44444 Trying... Connectedtolocalhost.localdomain(). Escapecharacteris'^]'. Helloworld!<ENTER> OKApacheFlume应用案例4)在控制台上查看Flume收集到的日志数据17/06/1915:32:19INFOsource.NetcatSource:Sourcestarting17/06/1915:32:19INFOsource.NetcatSource:CreatedserverSocket:sun.nio.ch.ServerSocketChannelImpl[/:44444]17/06/1915:32:34INFOsink.LoggerSink:Event:{headers:{}body:48656C6C6F20776F726C64210DHelloworld!.}Scribe基本概念Scribe是FaceBook开源的日志收集系统,在FaceBook内部已经得到大量的应用。它能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NFS,分布式文件系统等)上,以便于进行集中统计分析处理。它为日志的“分布式收集,统一处理”提供了一个可扩展的,高容错的方案。它最重要的特点是容错性好。当后端的存储系统crash时,scribe会将数据写到本地磁盘上,当存储系统恢复正常后,scribe将日志重新加载到存储系统中。Scribe基本架构Scribe从各种数据源上收集数据,放到一个共享队列上,然后推送(push)到后端的中央存储系统上。当中央存储系统出现故障时,Scribe可以暂时把日志写到本地文件中,待中央存储系统恢复性能后,Scribe把本地日志续传到中央存储系统上。客户端可以采用各种语言通过Thrift向Scribe传输数据。Scribe可以将不同类型的数据存放到不同目录中,以便于进行分别处理。Scribe的架构主要包括三部分,分别为ScribeAgent、Scribe和存储系统,如右图所示。Scribe系统架构Scribe基本架构ScribeAgentScribeAgent实际上是一个ThriftClient。使用ThriftClient是向Scribe发送数据的唯一方法。Scribe在内部定义了一个Thrift接口用来接收用户发送的数据。ScribeThriftClient发送过来的数据以后,会根据配置文件,将不同主题(Topic)的数据发送给不同的对象。Scribe提供了各种各样的存储栈,如NFS文件系统和HDFS等。Scribe可将数据加载到这些存储栈中。存储系统存储系统实际上就是Scribe中的存储栈。当前Scribe支持多种类型的存储栈,包括file,buffer,network,bucket,null,ThriftFile和multi。Scribe的架构主要包括三部分,分别为ScribeAgent、Scribe和存储系统Scribe使用方法使用Scribe系统主要有两个任务。第一个是编写配置文件,第二个是编写ThriftClient程序。配置文件描述了Scribe的组成结构,Client程序实现发送数据的功能。配置文件的编写原则如下:1)配置全局参数port=1463max_msg_per_second=2000000max_queue_size=10000000check_interval=3port:Scribe服务监听的端口号,缺省值是0;max_msg_per_second:每秒处理信息的最大量,缺省值是0;max_queue_size:消息队列存储的最大量,缺省值是5Mbytes;check_interval:检测存储栈的时间间隔值,缺省值是5秒;new_thread_per_category:是否为每个类型创建一个新线程,缺省值是yes;num_thrift_server_threads:监听消息源消息的线程数,缺省值是3;Scribe使用方法2)配置存储栈参数Scribe服务根据存储栈的参数决定信息的处理,所以每个存储栈必须描述自己要处理的信息类型。<store> category=statistics type=file target_write_size=20480 max_write_interval=2</store>category:存储栈处理的信息的类型type:存储栈的类型,可以为file、buffer、network、bucket、thriftfile、null、multitarget_write_size:每个类型待处理信息的最大长度,缺省值是16Kbytesmax_batch_size:内存存储栈每次可以处理的数据量,缺省值是1Mbytes

max_write_interval:向每类存储栈写数据的间隔时间,缺省值是1秒must_succeed:当处理信息出错以后是不是需要重试,缺省值是yesScribe应用案例这里描述如何配置和发送信息到Scribe服务器。其中,存储栈处理信息的类型是default,存储栈的类型是buffer格式。1)编写配置文件:port=1463 max_msg_per_second=2000000 check_interval=3 #DEFAULT <store> category=default type=buffer target_write_size=20480 max_write_interval=1 buffer_send_rate=2 retry_interval=30 retry_interval_range=10 <primary> type=file fs_type=std file_path=/tmp/scribetest base_filename=thisisoverwritten max_size=1000000 add_newlines=1 </primary> <secondary> type=file fs_type=std file_path=/tmp base_filename=thisisoverwritten max_size=3000000 </secondary> </store>该配置文件定义了一个存储类型为buffer的存储栈。主存储和副存储的类型均为file,但是副存储的最大容量是3M,而主存储的最大容量为1M。Scribe应用案例2)创建一个目录用于存放日志信息$mkdir/tmp/scribetest3)使用example1.conf中的配置信息启动Scribe服务./bin/scribed./../examples/example1.conf4)打开一个新的终端控制台,使用scribe_cat发送一条信息到Scribeecho"hello..."|./bin/scribe_cattest5)确定日志是否被记录cat/tmp/scribetest/test/test_currentScribe应用案例6)使用root查看Scribe的运行状态./bin/scribe_ctrlstatus7)查看Scribe计算器./bin/scribe_ctrlcounters8)关闭Scribe./bin/scribe_ctrlstopApacheChukwa基本概念Chukwa是构建在Hadoop的HDFS文件系统、MapReduce计算框架和HBase系统之上的一个可靠的大规模日志收集和处理系统。并继承了Hadoop的可伸缩性和可靠性。帮助用户在各个节点实时监控日志文件的变化,增量的将文件内容写入HDFS或HBase,同时还可以将数据去除重复,排序等。因此,经过Chukwa处理以后,Hadoop从HDFS中拿到的文件已经是整理好的大的SequenceFile,Hadoop无需再做任何转换过程就可以使用MapReduce处理数据,中间繁杂的过程都由Chukwa完成。基本概念:主要功能:ApacheChukwa基本概念Chukwa的主要目的是提供一个灵活的、功能强大的分布式数据收集和快速处理的平台。Chukwa可以用于监控2000个以上节点的大规模的Hadoop集群的整体运行情况,并对它们每天产生数据量在T级别的日志进行分析。对于集群的用户而言,Chukwa可以展示它们的作业已经运行了多久,占用了多少资源,还有多少资源可用,一个作业是为什么失败了,一个读写操作在哪个节点出了问题。对于集群的运维工程师而言,Chukwa可以展示集群中的硬件错误,集群的性能变化,集群的资源瓶颈在哪里。对于集群的管理者而言,Chukwa可以展示集群的资源消耗情况,集群的整体作业执行情况,可以用以辅助预算和集群资源协调。主要目的:使用角度:ApacheChukwa基本架构Chukwa旨在为分布式数据收集和大数据处理提供一个灵活、强大的平台。这个平台不仅可以与现在的存储系统结合使用,而且能够与将来新的存储技术结合使用。为了保持这种灵活性,Chukwa被设计成由多级收集和处理阶段的管道线,在各个层级之间有非常明确和狭窄的界面。Adaptors:用于从各种数据源收集数据;Agents:运行在每一个节点,负责往节点外发送数据;ETLProcesses:用于对数据进行分析和归档;数据分析脚本:用于集成Hadoop集群的运行状况信息;HICC(HadoopInfrastructureCareCenter):Web界面,用来负责数据的展示。Chukwa由5个主要组件组成:安装和配置Chukwa基本工作从ApacheChukwa网站下载最新版本,解压,并且保证每个希望监控的节点都有一份。我们使用CHUKWA_HOME来表示存放Chukwa的目录。设置Hadoop和HBase:1)复制Chukwa文件到Hadoop和HBase目录下:cp$CHUKWA_HOME/etc/chukwa/perties$HADOOP_CONF_DIR/pertiescp$CHUKWA_HOME/etc/chukwa/perties\ $HADOOP_CONF_DIR/pertiescp$CHUKWA_HOME/share/chukwa/chukwa-0.8.0-client.jar\ $HADOOP_HOME/share/hadoop/common/libcp$CHUKWA_HOME/share/chukwa/lib/json-simple-1.1.jar\ $HADOOP_HOME/share/hadoop/common/libcp$CHUKWA_HOME/etc/chukwa/perties$HBASE_CONF_DIR/pertiescp$CHUKWA_HOME/etc/chukwa/perties\ $HBASE_CONF_DIR/pertiescp$CHUKWA_HOME/share/chukwa/chukwa-0.8.0-client.jar$HBASE_HOME/libcp$CHUKWA_HOME/share/chukwa/lib/json-simple-1.1.jar$HBASE_HOME/lib安装和配置Chukwa2)重新启动Hadoop集群和HBase;3)运行下面的命令,初始Chukwa的HBase模型。bin/hbaseshell<$CHUKWA_HOME/etc/chukwa/hbase.schema设置和启动ChukwaAgent1)编辑CHUKWA_HOME/etc/chukwa/chukwa-env.sh。2)编辑CHUKWA_HOME/etc/chukwa/chukwa-agent-conf.xml。确认HADOOP_CONF_DIR,JAVA_HOME,和HBASE_CONF_DIR的值的正确性。确认solr.cloud.address的值的正确性。安装和配置Chukwa3)

在CHUKWA_HOME目录下,运行:sbin/chukwa-daemon.shstartagent4)

设置Solr存储索引后的日志文件,使用ChukwaSolr配置文件启动Solr5.5.0:bin/solrstart-cloud-zlocalhost:2181./bin/solrcreate_collection-cchukwa-nchukwa5)启动HICC:sbin/chukwa-daemon.shstarthicc6)

vi. 数据可视化,使用浏览器访问下述页面,用户名和密码都是adminhttp://<server>:4080/hicc/网络数据采集是指通过网络爬虫或网站公开API等方式从网站上获取数据信息。该方法可以将非结构化数据从网页中抽取出来,将其存储为统一的本地数据文件,并以结构化的方式存储。PART03网络数据采集方法网络数据采集方法分类网络数据采集是指通过网络爬虫或网站公开API等方式从网站上获取数据信息。在互联网时代,网络爬虫主要是为搜索引擎提供最全面和最新的数据。在大数据时代,网络爬虫更是为数据挖掘从互联网上采集数据的有利工具。网络爬虫工具基本可以分3类:1分布式网络爬虫工具:Nutch;2Java网络爬虫工具:Crawler4j、WebMagic、WebCollector;3非Java网络爬虫工具:Scrapy(基于Python语言开发)。网络爬虫概述网络爬虫(WebCrawler)是一种按照一定的规则,自动地抓取Web信息的程序或者脚本,可以自动采集所有其能够访问到的页面内容,以获取或更新这些网站的内容和检索方式。从功能上来讲,爬虫一般分为:数据采集

处理存储·网络爬虫原理Web网络爬虫系统的功能是下载网页数据,为搜索引擎系统提供数据来源。Google、百度都是基于Web数据采集的搜索引擎系统。网页中除了包含供用户阅读的文字信息外,还包含一些超链接信息。Web网络爬虫系统正是通过网页中的超连接信息不断获得网络上的其它网页。Web网络爬虫系统一般会选择一些比较重要的、出度(网页中链出超链接数)较大的网站的URL作为种子URL集合。以这些种子集合作为初始URL,开始数据抓取网络爬虫工作流程种子URL待抓取URL已下载网页库已抓取URL读取URL、DNS解析、网页下载将已下载URL放入已抓取URL队列抽取出新的URL放入待抓取URL队列网络爬虫工作流程图1首先选取一部分种子URL;2将这些URL放入待抓取URL队列;3从待抓取URL队列中取出待抓取的URL,解析DNS,得到主机的IP地址,并将URL对应的网页下载下来,存储到已下载网页库中。此外,将这些URL放进已抓取URL队列;4分析已抓取URL队列中的URL,分析其中的其他URL,并且将这些URL放入待抓取URL队列,从而进入下一个循环。流程解释如下:网络爬虫抓取策略的基本概念网页间关系模型从互联网的结构看,网页之间通过数量不等的超链接相互连接,形成一个彼此关联、庞大复杂的有向图。如下图所示:如果将网页看成是图中的某一个节点,而将网页中指向其他网页的链接看成是这个节点指向其他节点的边,那么我们很容易将整个互联网上的网页建模成一个有向图。理论上,通过遍历算法遍历该图,可以访问到互联网上的几乎所有的网页。网络爬虫抓取策略的基本概念网页分类从爬虫的角度对互联网进行划分,可以将互联网的所有页面分为五个部分:已下载未过期网页,已下载已过期网页,可知网页和不可知网页。如下图所示:抓取到本地的网页分为已下载未过期网页和已下载已过期网页两类。因为互联网是动态变化的,当一部分内容在网上发生变化的时候,抓取在本地的网页就过期了。待下载网页是指待抓取URL队列中的那些页面。可知网页是指还没有抓取下来,也没有在待抓取URL队列中,但是可以通过对已抓取页面或者待抓取URL对应页面进行分析获取到的URL对应的网页。还有一部分网页,网络爬虫是无法直接抓取下载的,称为不可知网页。通用网络爬虫通用网络爬虫又称全网爬虫,爬行对象从一些种子URL扩充到整个Web,主要为门户站点搜索引擎和大型Web服务提供商采集数据。为提高工作效率,通用网络爬虫会采取一定的爬行策略。常用的爬行策略有:深度优先策略、广度优先策略。深度优先策略12广度优先策略深度优先遍历策略是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,直到不能再深入为止。广度优先遍历策略按照网页内容目录层次深浅来爬行页面,处于较浅目录层次的页面首先被爬行。当同一层次中的页面爬行完毕后,爬虫再深入下一层继续爬行。聚焦网络爬虫聚焦网络爬虫又称主题网络爬虫,是指选择性地爬行那些与预先定义好的主题相关页面的网络爬虫。常用的爬行策略有如下四种:基于内容评价的爬行策略1该算法将用户输入的查询词作为主题,包含查询词的页面被视为与主题相关基于链接结构评价的爬行策略2基于链接结构的搜索策略模式就是利用了这些结构特征来评价页面和链接的重要性的,以此决定搜索的顺序。基于增强学习的爬行策略3将增强学习引入聚焦爬虫,利用贝叶斯分类器,根据整个网页文本和链接文本对超链接进行分类,为每个链接计算出重要性,从而决定链接的访问顺序。基于语境图的爬行策略4通过建立语境图(ContextGraphs)学习网页之间的相关度,训练一个机器学习系统,通过该系统可计算当前页面到相关Web页面的距离,距离越近的页面中的链接优先访问。增量式网络爬虫增量式网络爬虫是指对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面。增量式爬虫有两个目标:“保持本地页面集中存储的页面为最新页面“和”提高本地页面集中页面的质量”。为实现第一个目标,增量式爬虫需要通过重新访问网页来更新本地页面集中页面的内容为实现第二个目标,增量式爬虫需要对网页的重要性排序,常用的策略有:广度优先策略、PageRank优先策略等。深层网络爬虫深层网页是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的网页。深层网络爬虫体系结构包含六个基本功能模块:爬行控制器、解析器、表单分析器、表单处理器、响应分析器、LVS控制器;和两个爬虫内部数据结构:URL列表、LVS表。其中LVS(LabelValueSet)表示标签/数值集合,用来表示填充表单的数据源。爬取过程中最重要部分就是表单填写,包含基于领域知识的表单填写和基于网页结构分析的表单填写两种。Nutch简介Nutch是一个开源Java实现的搜索引擎。它为用户提供了运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。Nutch起源于ApacheLucene项目,已经是一个高度可扩展和可伸缩的开源网络爬虫软件项目。Nutch由爬虫Crawler和查询Searcher组成。Crawler包含WebDB和Fetchers两个组件,主要用于从网络上抓取网页并为这些网页建立索引。Searcher包含Inderxers、Searchers和WebServers三个部分,主要利用这些索引检索用户的查找关键词来产生查找结果。Nutch的架构WebDB用来存储网页(Page)和链接(Link)两种实体的信息FetchLists是抓取任务列表,为了用于分布式处理,将要抓取的链接分成多个组。Fetchers根据FetchList中的链接把相关页面下载到本地,共有两项输出分别是链接的Updates信息和页面的内容信息ContentUpdates信息用来更新WebDB的页面检索状态。Nutch架构图Content页面信息用来创建查询索引Nutch的架构Indexers对页面Content创建索引,当索引内容较大时,会把索引划分成多个索引片段(Indexes),然后分配到不同的Seracher。WebServers完成两种的功能。一种是:作为Nutch查询客户端处理用户的交互请求;另一种是作为HTTPServer从Searchers中获取查询结果。Seracher实现索引片段进行并行检索。Nutch架构图Nutch的工作流程爬虫部分工作流程如下:1)添加初始化URL2)生成新的Segment3)获取内容4)内容解析5)更新crawlDB查询流程包含两方面:1)一方面是编制索引2)一方面就是启动Web服务器,为用户提供检索服务。以索引库做分隔,左侧是爬虫部分,右侧是查询部分。Heritrix简介Heritrix是一个开源的、Java开发的、可扩展的web爬虫项目。其最出色之处在于它良好的可扩展性,方便用户实现自己的抓取逻辑。

Heritrix用来获取完整的、精确的、站点内容的深度复制,并对所有内容进行存储,而不对页面进行内容的修改。Heritrix是由互联网档案馆和北欧国家图书馆联合在2003年初规范

温馨提示

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

评论

0/150

提交评论