免费智能真题库 > 历年试卷 > 嵌入式系统设计师 > 2015年下半年 嵌入式系统设计师 下午试卷 案例
  第4题      
  知识点:   PCI   以太网   总线   方案设计   数据采集

 
阅读以下关于数据采集与处理系统的说明,回答问题1至问题3。
【说明】
某公司承接了一个数据采集与处理系统的项目,由刘工负责系统的方案设计,刘工的设计方案如图4-1所示。该方案是基于PCI总线的多功能处理系统,PCI设备1是以太网PCI设备2用于数据采集PCI设备3、PCI设备4用于和该系统中的其他处理模块进行互联,LEGACY设备1、LEGACY设备2用于处理系统中一些慢速设备。
 
问题:4.1   在以下描述PCI总线的基本概念中,正确的表述(1)、(2)、(3)、(4)、(5)、(6)。
A. PCI总线是一个与处理器有关的高速外围总线
B. PCI总线的基本传输机制是猝发式传送
C. PCI设备一定是主设备
D. PCI的物理地址与其他总线一样,是由内存地址空间和I/O地址组成
E. PCI设备的地址译码不能对配置空间直接寻址
F. PCI设备识别主要是对开发商代码和设备代码进行识别
G. 访问配置空间时,PCI桥应提供IDSEL信号以选择PCI设备
H. 系统中只允许有一条PCI总线
I. PCI总线是高速串行总线
J. PCI总线有3种桥,即HOST/PCI桥,PCI/PCI桥,PCI/LEGACY桥
K. PCI桥是可以把一条总线的地址空间映射到另一条总线的地址空间
 
问题:4.2   PCI设备2和主CPU之间采用双口RAM方式交换数据,双口RAM是常见的共享式多端口存储器,其最大的特点是存储数据共享。它允许两个独立的CPU或控制器同时异步访问存储单元。既然数据共享,就必须存在访问仲裁控制,否则就会出现错误或冲突。内部仲裁逻辑控制提供以下功能:对同一地址单元访问的时序控制;存储单元数据块的访问权限分配;信令交换逻辑(例如中断信号)等。
两个端口对同一内存操作有4种情况:
A. 两个端口同时对同一地址单元读出数据;
B. 两个端口同时对同一地址单元写入数据;
C. 两个端口不同时对同一地址单元存取数据;
D.两个端口同时对同一地址单元,一个写入数据,另一个读出数据。
在上述情况下,两个端口的存取不会出现错误的是(1)和(2),会出现写入错误的是(3),会出现读出错误的是(4)。
 
问题:4.3   PCI设备2和主CPU之间通过双端口存储器进行数据交换。刘工设计了环形队列的实现方式。设备2向环形队列写入数据,主CPU从环形队列读取数据。环形队列是一个首尾相连的FIFO数据结构,采用数组存储,到达尾部时将转回到0位置,该转回是通过取模操作来实现的。因此环形队列逻辑上是将数组元素q[0]与q[MAX-l]连接,形成一个存放队列的环形空间。为了方便读写,还要用数组下标来指明队列的读写位置,其中head指向可以读的位置,tail指向可以写的位置,环形队列如图4-2所示。
使用环形队列时需要判断队列为空还是为满。当tail追上head时,队列为满,当head追上tail时,队列为空。通常判断环形队列为空/为满有两种判断方法。

1. 附加一个标志位tag,当head赶上tail,队列空,则令tag=0,当tail赶上head,队列满,则令tag=1;
2. 限制tail赶上head,即队尾结点与队首结点之间至少留有一个元素的空间。队列空:head==tai;队列满:(tail+1)%MAXN=head。
如果采用第一种方法(即附加标志实现算法),则环形队列的结构定义如下:

初始化环形队列的c语言代码为:

判断队列为空的c语言代码为(1)。
判断队列为满的C语言代码为(2)。
入队操作时,如果队列不满,则入队后更新尾指针的C语言代码为q->tail=(3)。
出队操作时,如果队列不空,则出队后更新头指针的C语言代码为q->head:(4)。
如果采用第二种方法,还采用上述数据结构,初始化环形队列的C语言代码为:

判断队列为空的C语言代码为(5)。
判断队列为满的C语言代码为(6)。
入队操作时,如果队列不满,则入队后更新尾指针的C语言代码为q->tail=(7)。
出队操作时,如果队列不空,则出队后更新头指针的C语言代码为g->head=(8)。
 
 
 

   知识点讲解    
   · PCI    · 以太网    · 总线    · 方案设计    · 数据采集
 
       PCI
        外设部件互连标准(Peripheral Component Interconnect,PCI)总线是当前最流行的总线之一,它是由Intel公司1992年推出的一种总线标准。它定义了32位数据总线,且可扩展为64位。
        (1)高速性。PCI局部总线以33MHz的时钟频率操作,采用32位数据总线,数据传输速率可高达132Mb/s,远超过以往各种总线。而早在1995年6月推出的PCI总线规范2。PCI总线的主设备可与微机内存直接交换数据,而不必经过微机CPU中转,也提高了数据传送的效率。
        (2)即插即用性。在使用ISA板卡时,有两个问题需要解决:一是在同一台微机上使用多个不同厂家、不同型号的板卡时,板卡之间可能会有硬件资源上的冲突;二是板卡所占用的硬件资源可能会与系统硬件资源(如声卡、网卡等)相冲突。而PCI板卡的硬件资源则是由微机根据其各自的要求统一分配,绝不会有任何的冲突问题。因此,作为PCI板卡的设计者,不必关心微机的哪些资源可用,哪些资源不可用,也不必关心板卡之间是否会有冲突。因此,即使不考虑PCI总线的高速性,单凭其即插即用性,就比ISA总线优越了许多。
        (3)可靠性。PCI独立于处理器的结构,形成一种独特的中间缓冲器设计方式,将中央处理器子系统与外围设备分开。这样用户可以随意增添外围设备,以扩充电脑系统而不必担心在不同时钟频率下会导致性能的下降。与原先微机常用的ISA总线相比,PCI总线增加了奇偶校验错、系统错、从设备结束等控制信号及超时处理等可靠性措施,使数据传输的可靠性大为增加。
        (4)复杂性。PCI总线强大的功能大大增加了硬件设计和软件开发的实现难度。硬件上要采用大容量、高速度的复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)或FPGA芯片来实现PCI总线复杂的功能。软件上则要根据所用的操作系统,用软件工具编制支持即插即用功能的设备驱动程序。
        (5)自动配置。PCI总线规范规定PCI插卡可以自动配置。PCI定义了3种地址空间:存储器空间、输入/输出空间和配置空间,每个PCI设备中都有256字节的配置空间用来存放自动配置信息,当PCI插卡插入系统,BIOS(Basic Input Output System)将根据读到的有关该卡的信息,结合系统的实际情况为插卡分配存储地址、中断和某些定时信息。
        (6)共享中断。PCI总线是采用低电平有效方式,多个中断可以共享一条中断线,而ISA总线是边沿触发方式。
        (7)扩展性好。如果需要把许多设备连接到PCI总线上,而总线驱动能力不足时,可以采用多级PCI总线,这些总线上均可以并发工作,每个总线上均可挂接若干设备。因此PCI总线结构的扩展性是非常好。由于PCI的设计是要辅助现有的扩展总线标准,因此与ISA、EISA及MCA总线完全兼容。
        (8)多路复用。在PCI总线中为了优化设计采用了地址线和数据线共用一组物理线路,即多路复用。PCI接插件尺寸小,又采用了多路复用技术,减少了元器件和管脚个数,提高了效率。
        (9)严格规范。PCI总线对协议、时序、电气性能、机械性能等指标都有严格的规定,保证了PCI的可靠性和兼容性。由于PCI总线规范十分复杂,其接口的实现就有较高的技术难度。
 
       以太网
        以太网接口一般分为十兆、百兆、千兆以太网接口。
        (1)传统以太网接口符合10Base-T物理层规范,工作速率为10Mb/s,有全双工和半双工两种工作方式。
        (2)快速以太网接口符合100Base-TX物理层规范,兼容10Base-T物理层规范,可以在10Mb/s、100Mb/s两种速率下工作,有半双工和全双工两种工作方式。它具有自动协商模式,可以与其他网络设备协商确定工作方式和速率,自动选择最合适的工作方式和速率,从而可以大大简化系统的配置和管理。传统以太网接口的配置与快速以太网接口的配置基本相同,但前者配置简单,配置项较少。
        (3)千兆以太网技术作为最新的高速以太网技术,给用户带来了提高核心网络的有效解决方案,这种解决方案的最大优点是继承了传统以太技术价格便宜的优点。千兆技术仍然是以太技术,它采用了与10Mb/s以太网相同的帧格式、帧结构、网络协议、全/半双工工作方式、流控模式以及布线系统。
        千兆以太网技术有两个标准:IEEE 802.3z和IEEE 802.3ab。
        IEEE 802.3z工作组负责制定光纤(单模或多模)和同轴电缆的全双工链路标准。IEEE 802.3z定义了基于光纤和短距离铜缆的1000Base-X,采用8B/10B编码技术,信道传输速度为1.25Gb/s,去耦后实现1000Mb/s传输速度。
        IEEE 802.3ab工作组负责制定基于半双工链路的千兆以太网标准,产生IEEE 802.3ab标准及协议。
        以太网卡可以工作在两种模式下:半双工和全双工。
        半双工:半双工传输模式实现以太网载波监听多路访问冲突检测。传统的共享LAN是在半双工下工作的,在同一时间只能传输单一方向的数据。当两个方向的数据同时传输时,就会产生冲突,这会降低以太网的效率。
        全双工:全双工传输是采用点对点连接,这种安排没有冲突,因为它们使用双绞线中两个独立的线路,这等于没有安装新的介质就提高了带宽。在全双工模式下,冲突检测电路不可用,因此每个全双工连接只用一个端口,用于点对点连接。标准以太网的传输效率可达到50%~60%的带宽,全双工在两个方向上都提供100%的效率。
 
       总线
        计算机系统中的总线(Bus)是指计算机设备和设备之间传输信息的公共数据通道,是连接计算机硬件系统内多种设备的通信线路,它的一个重要特征是由总线上的所有设备共享,因此可以将计算机系统内的多种设备以总线方式进行连接。
               总线的分类
               按照所传输的信号类型可将总线分为数据总线、地址总线和控制总线3类。不同型号的CPU芯片,其数据总线、地址总线和控制总线的条数可能不同。
               .数据总线(Data Bus,DB)用来传送数据信息,是双向的。CPU既可通过DB从内存或输入设备读入数据,也可通过DB将内部数据送至内存或输出设备。DB的宽度决定了CPU和计算机其他设备之间每次交换数据的位数。
               .地址总线(Address Bus,AB)用于传送CPU发出的地址信息,是单向的。传送地址信息的目的是指明与CPU交换信息的内存单元或I/O设备。存储器是按地址访问的,所以每个存储单元都有一个固定地址,要访问1MB存储器中的任一单元,需要给出220个地址,即需要20位地址(220=1M)。因此,地址总线的宽度决定了CPU的最大寻址能力。
               .控制总线(Control Bus,CB)用来传送控制信号、时序信号和状态信息等。其中有的信号是CPU向内存或外部设备发出的信息,有的是内存或外部设备向CPU发出的信息。显然,CB中的每一条线的信息传送方向是单方向且确定的,但CB作为一个整体则是双向的。所以,在各种结构框图中,凡涉及到控制总线CB,均是以双向线表示。
               总线的性能直接影响到整机系统的性能,而且任何系统的研制和外围模块的开发都必须依从所采用的总线规范。总线技术随着微机结构的改进而不断发展与完善。
               在计算机的概念模型中,CPU通过系统总线和存储器之间直接进行通信。实际上在现代的计算机中,存在一个控制芯片的模块。CPU需要和存储器,I/O设备等进行交互,会有多种不同功能的控制芯片,称之为控制芯片组。对于目前的计算机结构来说,控制芯片集成在主板上,典型的有南北桥结构和单芯片结构。与芯片相连接的总线可以分为前端总线(FSB)、存储总线、I/O总线、扩展总线等。
                      南北桥芯片结构
                      北桥芯片直接与CPU、内存、显卡、南桥相连,控制着CPU的类型、主板的总线频率、内存控制器、显示核心等。前端总线(FSB)是将CPU连接到北桥芯片的总线。内存总线是将内存连接到北桥芯片的总线。用于和北桥之间的通信,显卡则通过I/O总线连接到北桥芯片。
                      南桥芯片主要负责外部设备接口与内部CPU的联系,其中,通过I/O总线连接外部I/O设备连接到南桥,例如USB设备、ATA和SATA设备以及一些扩展接口,扩展总线则指是主板上提供的一些PCI、ISA等插槽。
                      单芯片结构
                      单芯片组方式取消了北桥。由于CPU中内置了内存控制器,不再需要通过北桥来控制,这样就能提高内存控制器的频率,减少延迟。还有一些CPU还集成了显示单元,使得显示芯片的频率更高,延迟更低。
               常见总线
               (1)ISA总线。ISA是工业标准总线,只支持16位I/O设备,数据传输率大约是16Mb/s,也称为AT标准。
               (2)EISA总线。EISA是在ISA总线的基础上发展起来的32位总线。该总线定义32位地址线、32位数据线以及其他控制信号线、电源线、地线等共196个接点。总线传输速率达33MB/s。
               (3)PCI总线。PCI总线是目前微型机上广泛采用的内总线,采用并行传输方式。PCI总线有适于32位机的124个信号的标准和适于64位机的188个信号的标准。PCI总线的传输速率至少为133MB/s,64位PCI总线的传输速率为266MB/s。PCI总线的工作与CPU的工作是相互独立的,也就是说,PCI总线时钟与处理器时钟是独立的、非同步的。PCI总线上的设备是即插即用的。接在PCI总线上的设备均可以提出总线请求,通过PCI管理器中的仲裁机构允许该设备成为主控设备,主控设备与从属设备间可以进行点对点的数据传输。PCI总线能够对所传输的地址和数据信号进行奇偶校验检测。
               (4)PCI Express总线。PCI Express简称为PCI-E,采用点对点串行连接,每个设备都有自己的专用连接,不需要向整个总线请求带宽,而且可以把数据传输率提高到一个很高的频率。相对于传统PCI总线在单一时间周期内只能实现单向传输,PCI Express的双单工连接能提供更高的传输速率和质量。
               PCI Express的接口根据总线位宽不同而有所差异,包括X1、X4、X8以及X16(X2模式将用于内部接口而非插槽模式),其中X1的传输速度为250MB/s,而X16就是等于16倍于X1的速度,即是4GB/s。较短的PCI Express卡可以插入较长的PCI Express插槽中使用。PCI Express接口能够支持热拔插。同时,PCI Express总线支持双向传输模式,还可以运行全双工模式,它的双单工连接能提供更高的传输速率和质量,它们之间的差异与半双工和全双工类似。因此连接的每个装置都可以使用最大带宽。
               (5)前端总线。微机系统中,前端总线(Front Side Bus,FSB)是将CPU连接到北桥芯片的总线。需要注意主板和CPU的搭配问题。一般来说,如果CPU不超频,那么前端总线是由CPU决定的,如果主板不支持CPU所需要的前端总线,系统就无法工作。
               通常情况下,一个CPU默认的前端总线是唯一的。北桥芯片负责联系内存、显卡等数据吞吐量最大的部件,并与南桥芯片连接。CPU通过前端总线(FSB)连接到北桥芯片,进而通过北桥芯片与内存、显卡交换数据。FSB是CPU和外界交换数据的最主要通道,因此FSB的数据传输能力对计算机整体性能作用很大,如果没足够快的FSB,再强的CPU也不能明显提高计算机整体速度。
               (6)RS-232C。RS-232C是一条串行外总线,其主要特点是所需传输线比较少,只需三条线(一条发、一条收、一条地线)即可实现全双工通信。传送距离远,用电平传送为15m,电流环传送可达千米。有多种可供选择的传送速率。采用非归零码负逻辑工作,电平≤-3V为逻辑1,而电平≥+3V为逻辑0,具有较好的抗干扰性。
               (7)SCSI总线。小型计算机系统接口(SCSI)是一条并行外总线,广泛用于连接软硬磁盘、光盘、扫描仪等。该接口总线早期是8位的,后来发展到16位。传输速率由SCSI-1的5MB/s到16位的Ultra2 SCSI的80MB/s。今天的传输速率已高达320MB/s。该总线上最多可接63种外设,传输距离可达20m(差分传送)。
               (8)SATA。SATA是Serial ATA的缩写,即串行ATA。它主要用作主板和大量存储设备(如硬盘及光盘驱动器)之间的数据传输之用。SATA总线使用嵌入式时钟信号,具备了更强的纠错能力,与以往相比其最大的区别在于能对传输指令(不仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性。串行接口还具有结构简单、支持热插拔的优点。
               (9)USB。通用串行总线(USB)当前风头正劲,近几年得到十分广泛的应用。USB由4条信号线组成,其中两条用于传送数据,另外两条传送+5V容量为500mA的电源。可以经过集线器(Hub)进行树状连接,最多可达5层。该总线上可接127个设备。USB 1.0有两种传送速率:低速为1.5MB/s,高速为12MB/s。USB 2.0的传送速率为480MB/s。USB总线最大的优点还在于它支持即插即用,并支持热插拔。
               (10)IEEE-1394。IEEE-1394是高速串行外总线,近几年得到广泛应用。IEEE-1394也支持外设热插拔,可为外设提供电源,省去了外设自带的电源,能连接多个不同设备,支持同步和异步数据传输。IEEE-1394由6条信号线组成,其中两条用于传送数据,两条传送控制信号,另外两条传送8~40V容量为1500mA的电源,IEEE-1394总线理论上可接63个设备。IEEE-1394的传送速率从400MB/s、800MB/s、1600MB/s直到3.2GB/s。
               (11)IEEE-488总线。IEEE-488是并行总线接口标准。微计算机、数字电压表、数码显示器等设备及其他仪器仪表均可用IEEE-488总线连接装配,它按照位并行、字节串行双向异步方式传输信号,连接方式为总线方式,仪器设备不需中介单元直接并联于总线上。总线上最多可连接15台设备。最大传输距离为20m,信号传输速度一般为500Kb/s,最大传输速度为1MB/s。
 
       方案设计
        系统方案设计包括总体设计和各部分的详细设计。
        .系统总体设计:包括系统的总体架构方案设计、软件系统的总体架构设计、数据存储的总体设计、计算机和网络系统的方案设计等。
        .系统详细设计:包括代码设计、数据库设计、人机界面设计、处理过程设计等。
 
       数据采集
        数据采集阶段的主要任务就是获取各个不同数据源的各类数据,按照统一的标准进行数据的转换、清洗等工作,以形成后续数据处理的符合标准要求的数据集。
        原始数据往往形式多样,包括:结构化数据,例如业务系统中的交易明细、操作日志等;非结构化数据,例如企业中的各种文档数据,视频、音频等数据;半结构化数据,例如Web页面的HTML文档等。而且其来源和种类也存在很大差距。
        当前的大数据处理中,数据的种类一般包括:
        .传感数据:传感数据是由感知设备或传感设备感受、测量及传输的数据。这些感知设备或传感设备实时和动态地收集大量的时序传感数据资源。传感数据种类有很多,如人身体的传感数据,网络信号的传感数据和气象的传感数据等。近年来随着物联网、工业互联网的日益发展,传感数据越来越丰富,人们也逐渐发现了其数据价值。
        .业务数据:企业业务系统在执行日常业务活动时产生的大量数据,包括设备工况、操作记录、交易流水,以及用户在使用系统时遗留下来的大量行为数据。这些数据反映了人或者物的属性、偏好,在推荐或预测系统中有很大的利用价值。
        .人工输入数据:用户通过软件人机交互等主动输入的数据,典型代表是微博、微信、抖音等系统的用户输入数据。随着互联网的不断深入,手机APP应用的不断发展,这种用户产生的数据也越来越多,越来越丰富。
        .科学数据:通过科学研究和科学实验不断搜集和汇聚的数据,一般是以电子记录或文本的形式存在。
        从大数据的来源进行划分,其种类包括:
        .企业数据:企业自建的各种业务系统,如ERP、在线交易系统、招聘系统等,也会产生各种数据集。
        .政府数据:政府信息化已发展多年,构建了很多业务数据。近年来政府也在不断地建设大数据中心,发布各种数据,包括人社、医疗、税务、工商、财务等。
        .互联网数据:互联网数据是当前大数据应用的一个重要的数据来源。互联网上存在各种应用沉淀下来的大量数据,包括门户网站、社交信息、电商网站等等。
        其中,企业数据一般属于内部数据,而政府数据、互联网数据往往属于外部数据。
        从上面大数据的分类可以看出,数据来源渠道众多,差异非常大。因此,数据采集的主要任务就是进行数据的汇聚,为后续的数据处理做好准备。这个阶段工作中主要涉及的技术包括针对内部数据的数据集成和ETL技术,针对外部数据,尤其是互联网数据的爬虫技术。
        数据集成是把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享。在企业数据集成领域,已经有很多成熟的框架可以利用。目前通常采用联邦式、基于中间件模型和数据仓库等方法来构造集成的系统,这些技术在不同的着重点和应用上解决数据共享和为企业提供决策支持。
        ETL(Extract Transform Load)用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。
        基本的ETL体系结构示意图如下图所示。
        
        ETL体系结构示意图
        ETL过程中的主要环节是数据抽取、数据转换和加工、数据加载。一般ETL工具中,围绕上述三个核心环节进行了功能上的扩充,例如工作流、调度引擎、规则引擎、脚本支持和统计信息等,尽量降低ETL阶段的工作强度,减少工作量。
        数据转换和加工是三个环节的重点,因为抽取的数据中往往存在各种问题,例如数据格式不一致、数据输入错误、字段不匹配、字段类型不符、数据不完整等。ETL一般以组件化的方式实现数据转换和加工。常用的数据转换组件有字段映射、数据过滤、数据清洗、数据替换、数据计算、数据验证、数据加解密、数据合并、数据拆分等,并以工作流的形式进行各种方式的组合,以满足数据转换的需求。有的ETL工具也提供脚本支持,满足用户定制化的数据转换需求。
        常用的ETL工具有三种:DataStage、Informatica PowerCenter和Kettle。
        .DataStage:IBM公司的DataStage是一种数据集成软件平台,专门针对多种数据源的ETL过程进行了简化和自动化,同时提供图形框架,用户可以使用该框架来设计和运行用于变换和清理、加载数据的作业。它能够处理的数据源有主机系统的大型数据库、开发系统上的关系数据库和普通的文件系统。
        .Informatica PowerCenter:Informatica公司开发的为满足企业级需求而设计的企业数据集成平台。可以支持各类数据源,包括结构化、半结构化和非结构化数据。提供丰富的数据转换组件和工作流支持。
        .Kettle:Kettle是一款国外开源的ETL工具,纯Java编写,可以在Windows、Linux、UNIX上运行,数据抽取高效稳定。管理来自不同数据库的数据,提供图形化的操作界面,提供工作流支持。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。Kettle包括4个产品:Spoon、Pan、Chef、Kitchen。Spoon通过图形界面来设计ETL转换过程(Transformation)。Pan批量运行由Spoon设计的ETL转换(例如使用一个时间调度器),是一个后台执行的程序,没有图形界面。Chef创建任务(Job),任务通过允许每个转换、任务、脚本等等,更有利于自动化更新数据仓库的复杂工作。Kitchen批量使用由Chef设计的任务(例如使用一个时间调度器)。
        由于很多大数据应用都需要来自互联网的外部数据,因此,爬虫技术也称为数据采集阶段的一个主要基础性的技术。
        网络爬虫(又称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取互联网信息的程序或者脚本。网络爬虫基本的体系结构如下图所示。
        
        爬虫框架示意图
        爬虫调度器主要负责统筹其他四个模块的协调工作。URL管理器负责管理URL链接,维护已经爬取的URL集合和未爬取的URL集合,提供获取新URL链接的接口。HTML下载器用于从URL管理器中获取未爬取的URL链接并下载HTML网页。HTML解析器用于从HTML下载器中获取已经下载的HTML网页,并从中解析出新的URL链接交给URL管理器,解析出有效数据交给数据存储器。
        网络爬虫大致可以分为以下几种类型:通用网络爬虫、聚焦网络爬虫、深层网络(Deep Web)爬虫。实际的大数据应用由于往往聚焦于某个特定的应用目标,其采用的网络爬虫系统通常是聚焦网络爬虫、深层网络爬虫技术相结合实现的。
        通用网络爬虫,爬行对象从一些种子URL扩充到整个Web,主要为门户站点搜索引擎和大型Web服务提供商采集数据。通用网络爬虫的结构大致可以分为页面爬行模块、页面分析模块、链接过滤模块、页面数据库、URL队列、初始URL集合几个部分。为提高工作效率,通用网络爬虫会采取一定的爬行策略。常用的爬行策略有:深度优先策略、广度优先策略。
        聚焦网络爬虫,是指选择性地爬行那些与预先定义好的主题相关页面的网络爬虫。和通用网络爬虫相比,聚焦爬虫只需要爬行与主题相关的页面,可以很好地满足一些特定人群对特定领域信息的需求。聚焦网络爬虫和通用网络爬虫相比,增加了链接评价模块以及内容评价模块。聚焦爬虫爬行策略实现的关键是评价页面内容和链接的重要性,常见的爬行策略有基于内容评价的爬行策略、基于链接结构评价的爬行策略、基于增强学习的爬行策略、基于语境图的爬行策略等。
        深层网络爬虫用于专门爬取那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的Web页面。Deep Web爬虫爬行过程中最重要的部分就是表单填写,包含两种类型:基于领域知识的表单填写,此方法一般会维持一个本体库,通过语义分析来选取合适的关键词填写表单;基于网页结构分析的表单填写,此方法一般无领域知识或仅有有限的领域知识,将网页表单表示成DOM树,从中提取表单各字段值。常见的爬虫工具有如下三种:
        .Nutch:一个开源Java实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。Nutch有Hadoop支持,可以进行分布式抓取、存储和索引。Nutch采用插件结构设计,高度模块化,容易扩展。
        .Scrapy:是Python开发的一个快速、高层次的屏幕抓取和Web抓取框架,用于抓取Web站点并从页面中提取结构化的数据。Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便地修改。它提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫、Web2.0爬虫等。
        .Larbin:Larbin是一种开源的网络爬虫/网络蜘蛛,用C++语言实现。Larbin目的是能够跟踪页面的URL进行扩展的抓取,最后为搜索引擎提供广泛的数据来源。
        当数据采集到以后,需要对采集并清洗后的数据进行存储。具体的存储技术在13.1.3云关键技术中的分布式数据存储中介绍,此处不再详述。
   题号导航      2015年下半年 嵌入式系统设计师 下午试卷 案例   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
 
第4题    在手机中做本题