当前位置:首页 >> 互联网 >>

第5章 数据抓取子系统设计及核心算法_图文


第 5 章 数据抓取子系统设计及核心算法
数据抓取子系统功能: ? 对互联网中网页进行搜集、保存; ? 其机器人程序, 像蜘蛛一样在页面之间爬, 所以又称为 crawler 或 spider。 5.1 抓取系统的基本架构 数据抓取子系统 ? 收集页面及其超链接; 要求:及时、高效、数量多、有用; ? ? 收集的页面是内容索引子系统索引的对象, 收集的链接是链接分析子系统分析的对象。

图 5.1 数据抓取子系统(高层)结构示意图 ? ? ? 下载模块使用多线程或异步 I/O 方式下载网页; 将内容与结构信息传递到索引子系统进行存储; 将链接结构信息传递到抓取调度程序,并传递到链接结构分析子系统进 行存储和计算; ? 调度程序根据超链接重要程度决定抓取顺序,再将抓取任务下达给下载 模块进行下载,
1

?

周而复始地进行网络数据的抓取与收集。

对上图的基本结构进行分解,可以得到下图所示的功能模块图。 ? 链接存储、链接选取、 DNS 解析、网页抓取、网页分析、链接分析和 扩展、网页存储; ? 抓取系统的各模块是环状的封闭环境,通常称之为“抓取环” 。

图 5.2 一个典型的搜索引擎抓取环的架构形式 1、链接存储库 linkdb ( link database ) 存储链接、链接统计信息。 2、链接选择模块 link selector 负责抓取子系统的任务调度,根据链接深度、网页类型、 URL 格式等特征 来决定网页抓取的优先级。 3、内部 DNS 服务 将网络数据资源对应的 URL 地址解析为 IP 地址。 ? 一般的网络应用程序,可利用公共 DNS 服务器提供的解析服务,来满 足解析需要; ? ? 对搜索引擎,这种方式则通常不能满足效率和性能的需要。 数据抓取子系统内部往往自行设立 DNS 服务器以提供高效的解析服
2

务。 ? 有时 DNS 服务还同时担任对相应 URL 所在网站的抓取策略限制文件 (robots . txt )进行内容检查的任务。

4、网页抓取模块 crawler system 主要功能包括: ? ? 压力控制; 页面抓取;

通常采用多线程或者异步 I/O 方式实现。

5、网页提取模块 ec ( extraction center ) ? ? ? 进行网页信息提取、属性计算工作; 将提取和计算出来的网页信息存储到 webdb ( web database )中; 将扩展出来的链接发送给 link filter 进行过滤。

6、链接过滤模块 link filter ? ? ? 负责扩展链接的分析和处理; 经过滤策略处理后的链接信息发送给 link saver; 过滤链接可以避免大量无意义、自动生成的链接对抓取子系统的影响。

7 、链接更新模块 link Saver ? ? ? ? 负责链接添加、更新和删除请求; 定期地合并到 link db 中。 进行定期而不是实时的数据更新 link db 存储结构要满足高性能的链接选取策略, 很难满足链接的实时更 新。

3

5.2 数据抓取涉及的网络协议 5.2.1 URL 规范
URL 即 Uniform Resource Locator (统一资源定位符) ,也被称为“网页 地址” ,是互联网上标准的资源地址。 它最初是由 Tim Berners -Lee 设计用来作为互联网地址的, 现在它已经被编 制为互联网标准 RFC 1738 了。 URL 格式如下:

5.2.2 HTTP 协议 5.2.2.1 HTTP 协议简介
一、什么是 HTTP 协议 HTTP: ? ? ? Hypertext Transfer Protocol 的英文缩写; 主要用于 Web 浏览器和 Web 服务器之间的数据交换。 在地址栏中输入 http://host:port/path, 就是让浏览器使用 HTTP 协议来和
4

host 指定的服务器进行通讯。

HTTP 协议诞生于上世纪 90 年代初 ? ? ? 第一个广泛应用的版本是 HTTP0.9,非常简陋; HTTP1.0 中,增加了许多特性,如资源重定位、大量的状态响应码等; HTTP1.1 中,增加请求方法,最大的改进:HTTP 可以保持连接状态。

二、HTTP 的工作方式
HTTP 协议采用请求/响应的工作方式; ? 基于 HTTP1.0 的客户端向服务器发出请求后, 服务器会向客户端返回响 应消息(包括请求是否正确、所请求的数据) ; ? ? 在确认客户端收到响应消息后,服务端就关闭网络连接。 数据传输过程中,并不保存历史信息和状态信息;

图:HTTP1.0 协议的通讯过程

问题: ? Web 页面含有其他资源时 (如 JavaScript 文件、 图像文件、 CSS 文件等) , 浏览器每遇到这样一个 Web 资源,就会建立一个 HTTP 会话。 ? 加重服务器负担、影响浏览器加载 HTML 等 Web 资源的效率。

5

HTTP1.1 增加了持久连接 ? ? 服务器将关闭客户端连接的主动权给了客户端; 客户端向服务器发送请求并接收响应后,只要不关闭网络连接,就可以 继续向服务器发送 HTTP 请求。 ? HTML 中含有其他的 Web 资源时,浏览器可以使用同一个网络连接向 下载这些资源,减轻了服务器的压力。

图: HTTP1.1 协议的通讯过程

HTTP1.1 新增内容: ? 从 HTTP1.0 原来的三个(GET、 POST 和 HEAD)扩展到了八个 (OPTIONS、 GET、HEAD、POST、PUT、DELETE、TRACE 和 CONNECT) ; ? 增加了请求、响应字段; ? 持久连接字段 Connection。 ? 这个字段有两个值,Close 和 Keep-Alive。 ? Connection:Close,关闭持久连接的功能,Connection:Keep-Alive 打开持久连接的功能; ? HTTP1.1 默认情况是持久连接; ? 身份认证、状态管理、缓存(Cache)等请求字段和响应字段;

6

5.2.2.2 HTTP 消息的格式
在浏览器中输入一个基于 HTTP 协议的 URL 时(以 http://开头的 URL); ? ? 浏览器按照 URL,组织生成一个 HTTP 请求; 将请求发送到服务器、等待服务器响应。

无论是请求还是响应,都统称为 HTTP 消息。 HTTP 协议的消息分为两种: ? ? HTTP 请求消息; HTTP 响应消息。

7

一、HTTP 请求消息
? HTTP 请求消息分为: ? ? ? 请求消息头; 请求实体内容。

请求消息头的第一行必须由以下三个部分组成: ? ? 请求的方法(GET、POST、HEAD 等) ; Web 资源的路径(http://www.website.com/test/test.html 中的/test/test.html 部分) ; ? HTTP 协议的版本(HTTP/1.0、HTTP/1.1) 。

?

其他行是请求头字段,格式: ? 头字段:段的值

?

请求头以一个空行结束。

?

注意: ? HTTP 请求、 响应消息中第一行的请求方法 (GET、 POST 等) 及 HTTP/1.1 或 HTTP1.0 中的字母必须大写; ? 请求方法后面的路径大小写都可; ? 消息头字段对大小写不敏感, 但大多数的请求和响应字段名都采取了首字 母大写的方式。

http://news.sina.com.cn/c/2011-10-05/160223259986.shtml
host:port>news.sina.com.cn news.sina.com.cn:80 请输入 HTTP 请求: GET /c/2011-10-05/160223259986.shtml HTTP/1.1 Host: news.sina.com.cn 正在连接服务器... 服务器连接成功! ---------HTTP 头--------HTTP/1.0 200 OK Last-Modified: Wed, 05 Oct 2011 08:23:35 GMT Accept-Ranges: bytes

8

X-Powered-By: mod_xlayout/rc2 X-UA-Compatible: IE=EmulateIE7 Content-Type: text/html Date: Wed, 05 Oct 2011 08:40:29 GMT Server: Apache Expires: Wed, 05 Oct 2011 08:42:29 GMT Cache-Control: max-age=120 Vary: Accept-Encoding Content-Length: 88696 X-Cache: HIT from cd31-151.sina.com.cn Connection: close

POST 请求: 将要提交的实体内容放到消息头的空行后面,下面是一个 POST 请求的例子:
POST /servlets-examples/servlet/RequestParamExample HTTP/1.1 Host: localhost:8888 Content-Length: 29 Connection: Close

firstname=Bill&lastname=Gates

Content-Length:表示请求实体内容的以字节为单位的长度; 即”firstname=Bill&lastname=Gates"的长度; 用 POST 方法时,这个字段必须提供,而且长度必须等于实体内容的长度。

9

二、HTTP 响应消息
? HTTP 响应消息分为 ? ? ? 消息头; 实体内容。

响应消息头第一行是请求结果,表示请求消息是否成功地获得了服务器上的 Web 资源。

?

第一行由以下三部分组成: ? 1、响应消息的 HTTP 版本 格式:HTTP/1.1、HTTP/1.0 这个版本号未必和请求消息头的版本号一致;主要是因为,服务器未必 支持 HTTP 请求中所描述的 HTTP 版本, 如使用 GET / HTTP/1.1 去请求 服务器,当服务器只支持 HTTP1.0 时,那么就会返回 HTTP/1.0。 ? 2、状态码 状态码由三位数字组成。

?

3、状态信息。 响应信息的内容和状态码相关。 如状态码为 200,则状态信息为"OK"。 状态码为 501,状态信息为"Not Implemented"。

?

响应消息头使用一个空行结束, 空行的后面跟着 HTTP 响应消息的实体内容。

HTTP 请求消息
GET / HTTP/1.1 Host:www.csdn.net

HTTP 响应消息
10

HTTP/1.1 200 OK Server: nginx/0.7.68 Date: Wed, 05 Oct 2011 09:12:22 GMT Content-Type: text/html; charset=utf-8 Connection: keep-alive Vary: Accept-Encoding Cache-Control: max-age=1800 Content-Length: 127756 Content-Location: http://www.csdn.net/index.htm Last-Modified: Wed, 05 Oct 2011 06:01:09 GMT Accept-Ranges: bytes ETag: W/"c76f9c2d2483cc1:12e6" X-UA-Compatible: IE=EmulateIE7 X-Powered-By: ASP.NET

<!DOCTYPE html

5.2.3 User - Agent
User-Agent 是 HTTP 协议中的一个属性,它表明终端程序的身份。

5.2.4 robots 协议
robots . txt 放在网站的根目录下,文件名小写。 robots . txt 规定什么文件可以查看,什么文件禁止查看;

当抓取程序访问某站点时,首先检查站点根目录下是否存在 robots . txt;

11

如果存在,抓取程序就会按照该文件中的内容来确定访问的范围; 如果该文件不存在,抓取程序将能够访问网站内所有没有被口令保护的页面。

最简单的 robots.txt 文件只使用以下两条规则。 User-Agent :指明适用于此 robots . txt 文件的抓取程序对应的 User- Agent 名 称, “*”表示适用于所有的 User - Agent 。 Disallow :禁止抓取程序访问的网页或目录。

例:alibaba.com 网站的 robots.txt

? 禁止搜索引擎抓取程序访问其中与用户交易、账户管理等相关内容的网页; ? 这些内容对于网站运行必不可少,对搜索引擎用户获取网络信息没有帮助。

灵活使用 robots . txt ,可以减少网站流量负担,同时保证恰当的 网页被搜索引擎收录。

12

5 .3 网页抓取技术
crawler system 是抓取子系统的行动中心,它的任务是在最快的时间内 将 link Selector 分配的任务完成。 由于抓取行为会耗费被抓取网站的带宽资源, 并对它的服务器造成一定 的压力,因此在抓取过程中需要采取抓取压力的控制策略。

5.3.1 网页抓取的基本过程
以 curl 为例说明网页抓取过程。

(1) curl

-v

http :// baidu . com ;

(2) 解析域名 baidu . com ,对应 IP 为 220 . 181 . 6 . 81 ; (3) 连接到 220 . 181 . 6 . 81 的 80 端口; (4) 发送 GET /HTTP/1.1 (获取根目录)的请求; (5) 读取服务器返回的 HTTP 应答包头信息; (6) 解析 HTTP 头信息, “HTTP/1 .1 200 OK”表示成功, “Content-Length”表示 HTTP 应答包体长度; (7) 根据 Content-Length 读取页面内容;
13

(8) 关闭连接。 HTTP 应答包第一行中间的数字,称之为状态码,它表示网站服务器对 HTTP 请求处理的结果。示例的状态码是 200,表示处理成功。 表 5 .5 则列举了一些常见的不成功状态码。

5.3.2 基于异步 I/O 模型的抓取器
? 同步 I/O 模型:

? 请求发出后,应用程序就会阻塞,直到请求满足为止。在等待 I/O 请求的过 程中,抓取程序并不使用任何 CPU 资源。 ? 实现较为简便,传统的抓取器一般采用多进程/线程的同步 I/O 模型。

? T1 、T2、T3、T4 均为同步 I/O 抓取线程; ? 假设每个线程的抓取速度是每秒 2 个页面,那么这个同步 I/O 抓取器的单机 抓取速度是每秒 8 个页面。 ? 抓取器的 I/O 请求需要与被抓取网站交互,同步 I/O 抓取器的并发能力取决

14

于被抓取网站的读写速度、抓取器的进程/线程数。

?

异步 I/O 模型:

? 异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件 在完成后,通过状态通知或回调来通知调用者。 ? 以连接过程为例,当一个客户端通过调用 connect 函数发出一个连接请求 后,调用者线程立刻可以朝下运行,当连接真正建立起来以后, Socket 底 层会发送一个消息通知该对象。

? 51-S5 为一个抓取事件的 5 个状态,事件状态变化后可以主动通知相应的组 件进行处理。 ? 在异步 I/O 模型中线程无需在两个状态之间进行等待,解决了在抓取过程中 因为同步等待造成的性能瓶颈。 ? 异步 I/O 模型并不能减少单个页面的抓取速度,但是大大提高了抓取器的并 发能力。在实际应用中往往可以获得比同步多线程模型提高几十乃至上百倍 的性能提升。

15

5.3.3 抓取压力控制
? ? ? 抓取会耗费网站带宽,造成访问压力; 抓取时需要进行压力控制; 基于域名的压力控制,这种方式存在一定缺陷,多个域名对应一个 IP 或一 个域名对应多个 IP 时,压力控制就不够精细; ? 通常采用基于 IP 的压力控制。

5.3.4 对 URL 重定向的支持
网页中存在 URL 重定向问题,需要对重定向行为进行识别,重定向可以分 为 3 大类: ? ? ? HTTP 30X 重定向; meta refresh 重定向; JavaScript 重定向。

1、HTTP 30X 重定向 30X 重定向: ? ? ? 通过 HTTP 应答包头中 Location 字段,由客户端实现重定向行为。 Location 的地址可以是绝对路径、相对路径或 URL 。 重定向后的 URL 需要根据上述 3 种情况以及重定向前的 URL 进行 URL 拼装。 2、meta refresh 重定向 通过 HTML 的 meta 标签来实现重定向; 如 http ://baidu . com 就是通过 meta refresh 实现重定向的。

<html> <meta http-equiv="refresh" content="0;url=http://www.baidu.com/"> </html>

meta refresh 的 URL 属性可以是绝对路径、相对路径或直接的 URL 。

16

重定向后的 URL 地址需要根据上述三种情形以及重定向前的 URL 地址进行 拼装。 3、Javascript 重定向 ? 通过浏览器支持的 Script 语言实现重定向; ? JavaScript 重定向脚本可以放在网页的任何位置上; ? 如果要求立即跳转,则可以放入网页<head>区最上面; <script language="javascript">location.replace("http://www.doumiao.net")</script>

? 抓取器准确判断此类重定向有一定困难; ? 在实践中经常通过模式匹配的方式进行 JavaScript 重定向判断, ? 由于没有真正实现 JavaScript 脚本的编译解析,因此会存在一些错误;

5.4 链接选取策略
链接选取策略: ? 数据抓取子系统用其决定下一步抓取的目标; ? 保障被抓取数据的“全”与“新” 。

搜索引擎对有用资源的覆盖率≤75%。 ? 抓取性能瓶颈: ? 硬件、带宽资源有限,无法对所有已知网页资源进行抓取。 ? 存储技术的限制: ? 数据量过大,对搜索效率会有一定的影响; ? 抓取子系统只抓取或是优先抓取重要的网页; ? 需对网页重要性、抓取优先级建立评价标准。

5.4.1 爬虫的抓取方式
? 累积式抓取 ? 从某个时间点开始,通过遍历的方式抓取尽可能多的网页; ? 已抓取的网页会出现更新或死链,无法与真实环境保持一致。
17

? 增量式抓取。 ? 具有一定量规模的网页集合; ? 具有页面被抓取的时间; ? 选取集合中过时网页 ? 用更新数据的方式进行抓取。

5.4.2 抓取优先级策略
数据抓取阶段搜索引擎掌握的信息是局部的, 所以为搜索引擎设计好的抓取 优先级策略不容易。 1.深度优先策略 从起始页开始,逐个链接跟踪下去,处理完当前线路最底端后,转入下一个 起始页,继续跟踪链接。 这种方式在早期数据规模较小的万维网中应用较多。

18

2.广度优先策略 先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续 抓取在此网页中链接的所有网页。 抓取子系统比较常用的方式,可以让网络爬虫并行处理,提高其抓取速度。

19

20

3.反向链接数策略 反向链接: 当前网站(或网页)被其他网站(或网页)所链向的链接; ? 反向链接一般指来自不同网站的入链接; ? 普通意义的入链接对链接来源不做区分。

? 反向链接主要用于网站间的导航,很大程度上表示了其他网站作者对当前网 站内容的推荐; ? 反向链接的数量可以被搜索引擎用于衡量一个网站或网页的受欢迎程度和 重要程度; ? 基于反向链接数量确定抓取优先级也就成为了一种可行的策略。

广告、作弊链接使得反向链接数不可信;

来自于特定来源的反向链接,可信 1、收录网站的链接, 如 DMOZ 目录、yahoo 目录、ODP 目录等专业目录收录网站。 2、原创文章的转载。 3、社会化书签网站和网摘 如 Google reader 、delicious.com 等。 4 、百科类产品 如维基百科、百度百科。 5、知名网站的友情链接。

21

4.局部 PageRank 策略
PageRank ? 用户进行随机网络浏览时访问某个网页的概率, ? 一定程度上反映了网页受欢迎程度。 ? 可使用 PageRank 决定网页抓取的顺序。

? PageRank 的计算需要整个网络环境下的链接结构数据; ? 数据抓取,获取网页的同时,逐步这个数据环境; ? 数据抓取子系统使用 PageRank 评分,只能基于局部链接结构图计算。

部分研究结论表明,这种情况下 PageRank 得分,与以下 2 个因素相关。 1、网页是否被较多的其他网页所链接(具有较高的反向链接数) 。 2、链接到该网页的其他网页是否是高质量的网页。

5.4.3 网页的重访策略
互联网信息不断变化,网页内容时效性存在差异。 ? 抓取新网页; ? 对已有的网页按不同的时间间隔进行重访;

网页重访策略决定了数据抓取子系统采取何种方式对网页进行重访。

主要网页重访策略。 1、以网站的更新频率作为主要参考标准 ? 不同网站更新频率不同,重访频率应该与网站更新频率一致; ? 确定网站更新频率复杂,需积累该网站或同类网站的历史信息; ? 采用随机过程模型,利用历史更新信息对未来更新时刻进行估计。

22

2、根据页面类型的不同调整对更新频率的估计 ? 同一个网站内部,网页更新频率也可能有较大差异; ? 门户网站的首页、频道首页的更新频率较高; ? 已经刊发的新闻的内容则一般不会更新; ? 对于站点内不同类别的网页,根据更新频率确定不同重访策略,保证重访频 率和页面实际的更新频率一致。

3 、针对有时效性要求的关键词进行特殊处理 ? 时效性要求较高的关键词,如“天气” 、 “股票价格”等; ? 整理专用的资源列表,进行实时的网页重访与内容更新。

5.4.4 链接去重策略
可用图描述互联网 网页看作节点, 网页间的链接看作边,这样互联网可看作一个超大规模的有 向图。 web crawler 可用图的遍历算法对互联网进行遍历,但有以下问题。 ? web crawler 在互联网爬行会形成“环” ,为了避免形成“环” ,需要知道 web crawler 已经访问过那些 URL。 ? 判断网页面是否已被抓取过。

解决的办法 把已经访问过的 URL、已经抓取过的网页的 URL 记录下来,组成一个 URL 集合;然后判断某 URL 是否在 URL 集合中,如在,表示该 URL 己该问过或网 页已经抓取过。

为了实现集合中数据快速查找,需要把 URL 映射为集合中的地址,这就需 要设计一种高效且冲突率低的 Hash 算法。

23

布隆过滤器(Bloom Filter)
? 一种多哈希函数映射的快速查找算法; ? 1970 年由 Bloom 提出; ? 应用在需要快速判断某个元素是否属于集合,但不要求 100%正确的场合。

1、布隆过滤器集合表示
? 用包含 m 位的位数组表示集合,初始状态时,每一位都置为 0; ? 对 S={X1, X2,…,Xn}含 n 个元素的集合,使用 k 个相互独立的哈希函数,分 别将集合中的每个元素映射到{1,…,m}的范围中。

2、加入元素
? 对任意一个元素 X, 第 i 个哈希函数映射的位置 hi(X)就会被置为 1 (1≤i≤k) 。 ? 对于字符串 e, 分别计算 h1(e), h2(e),…, hk(e),然后将位数组的第 h1(e), h2(e),…, hk(e)位设为 1。

? 如果一个位置多次被置为 1,只有第一次起作用。在下图中,k=3,且有两个 哈希函数选中同一个位置(从左边数第五位)。

24

3、检查元素是否存在
? 在判断 Y 是否属于这个集合,对 Y 应用 k 次哈希函数,如果所有 hi(Y)的位 置都是 1(1≤i≤k) ,则认为 Y 是集合中的元素,否则就认为 Y 不是集合中 的元素。 ? 下图中 y1 就不是集合中的元素, y2 或者属于这个集合, 或者刚好是一个 false positive。

?

哈希函数个数 k 取 10,位数组大小 m 设为元素个数 n 的 20 倍时,false positive 发生的概率是 0.0000889。

Bloom Filter 去重算法流程 (1)通过集合表示算法对位向量进行初始化; (2) 如果网页集合不空, 对于待抓取的 URL 集合中的一个元素, 通过 k 个 Hash 函数生成 k 个 1~m 的随机数; (3)运用集合查找算法对(2)生成的 k 个随机数在位向量中进行查找操作; (4)如果在位向量的 k 个位均为 1,则表示元素已经在集合中了,转(2) ,否 则转(5) ; (5)对 URL 对应的网页进行抓取,通过集合元素的增加算法把相应的 URL 加 人集合,转(2) 。

25

5.5 网页存储技术
网页被抓取、分析后,存储,供索引子系统使用。 网页存储系统的主要特点如下。 (1)支持 T 级(甚至是 P 级)的海量数据存储; (2)支持高性能的并发检索和更新; (3)支持基于“键一值”(key-value)的查询功能。 本节介绍分布式哈希(Hash)存储系统、谷歌公司的分布式大表(Big Table) 。

5.5 .1 分布式哈希存储系统
补充: MD5 散列 128 位的 MD5 散列一般被表示为 32 位十六进制数字。 以下是一个 43 位长 ASCII 字母列的 MD5 散列: MD5("The quick brown fox jumps over the lazy dog")= = 9e107d9d372bb6826bd81d3542a419d6 在原文中作一个小变化(比如用 c 取代 d)其散列也会发生巨大的变化: MD5("The quick brown fox jumps over the lazy cog") = 1055d3e698d289f2af8663725127bd4b 空文的散列为: MD5("") = d41d8cd98f00b204e9800998ecf8427e

26

1.数据模型 在网页存储中键一般取 URL 的签名(如 MD5 签名) ,而值则是对应 URL 的网页内容。

2.物理存储结构 常见的数据组织方式是定长索引、变长数据的存储方式。

使用定长的索引数据记录哈希值的一些元信息(如数据的存储文件位置,以 及在存储文件中的偏移量、长度等) 使用变长的数据文件记录哈希值对应的内容。

27

3.系统组成结构 分布式哈希存储系统主要由 4 部分组成,如下图所示。

(1) kvchunck server(基于 key-value 的数据存储服务器) 负责数据的存储,每个 kvchunk server 负责存储多个库,对外提供更新、查 询服务。 所有的库增加、 删除信息来自 meta-server, 更新信息来自 update center 。 (2) meta server(元数据服务器) 负责 kvchunck server 的管理,这里记录了所有的 kvchunk Server 信息。 ( 3 ) update center 负责 kvchunck server 的更新,接受来自外部的更新命令,向 kvchunk Server 的 所有副本发送更新命令。它保证更新命令的时序性,一个 kvchunk SerVer 的更 新命令只由一组 update center 负责。 ( 4 ) Qcontroller 在系统中 meta Server 是一个系统单点, Qcontroller 的作用是在单点失效时进 行自动的单点切换。

28

5.5.2 基于 BigTable 的网页存储系统 BigTable 是搜索引擎公司为了存储海量规模结构化数据而设计的分布式存储系 统,许多搜索引擎的相关服务(如网页搜索、 Google Analytics、 Google App Engine 等)都利用 BigTable 来存储所需的数据。 BigTable 的特性如下。 ( 1 )建构于分布式文件系统之上,如 GFS ( Google File System ,谷歌文件系 统) , HDFS ( Hadoop File System , Hadoop 文件系统) 。 ( 2 )基于列簇存储,并对数据进行列压缩。 ( 3 )高性能的并发检索和更新。 ( 4 )只能存储非关系型数据模型,不支持关系查询。

29


相关文章:
更多相关标签: