失效链接处理 |
分布式海量数据管理系统Bigtable主服务器设计 PDF 下载
本站整理下载:
相关截图:
主要内容:
引 言 海量 的网络数据需要功 能强大的管理系统进行组织和存 储 ,Google公司采用分 布式文件系统存储 海量的 网络数据 ,从 而提供 强大的互联 网搜 索能力 。GFS“是其用于底 层数据存 储的分布 式文 件系统 ,Bigtable 系 统运行在 GFS上实现 对网 络数据 的结构化管理 。Bigtable系统 的运行环 境是普通 微机 组成集群环境 ,却管理着 Google公司的数PB级 的数据 。Zvents 公司仿照 Bigtable开发 了 Hypertable系统 ,此系 统参考 了前者 的实现原理 ,但是仍然存在 部分缺陷 。Yahoo公司利用 Bigtable 的数据 模型实现 了 Hbase系统 ,此 系统基于 Java语言 ,存储速 度 受到一定影 响。 通过研 究 Bigtable的基 本模型 ,简单介绍 了它 的体系结 构 ,在总结主服 务器功能 的基 础上 ,设计主服 务器 工作流程 , 最后 总结设计 的特 点。 1 体 系结构 Bigtable系统实现 了数据 的分布式管理 和结构 的组 织。 海量 的数据 分布存储在底层 文件系统 GFS中,逻辑相邻 的数 据 由Tablet服务器 分块管理 ,Master服 务器实现对 多台 Tablet 服 务器的协调和 调度 。为了保证多 台服务器共享 数据 的安全 性 ,此系统采 用 ChubbyH提供锁 服务 。Chubby是一个 分布式 的锁服 务器 ,利 用小型锁文件的管理实现分布 式数 据的共享, 同时具 有表结构 数据 的存储 能力。系统 为应 用程序提供 了统 一 的访 问接 口,实现 了客户端到服务器系统 的数据 交互 ,访 问 接 口封 装成客户端库 (ClientLib)。 图 1描述 了 Bigtable系统的体系 结构 。Chubby和 GFS实 现系统 的底 层的锁服 务器 和数据存储 ,每 台数据服务器 (Tab. 1etServer)管理相邻 的多个数据块 ,响应 客户端提 交的读写请 求 。客户端通 过 ClientLib将查询请 求发送给 Master,获取数 据位置信息 ,从数据服务器 读写数据 。Master管理着 Bigtable 的元 数据 信息,同时负责跟踪Tablet服务器 的变化 ,均衡 Tablet 服 务器的负载 ,对 GFS文件进行 垃圾 回收 。 … … … 。 … … 。 图 1 Bigtable的组 件 构 成 收稿日期:2009.01—05;修订日期:2009.12.30。 作者简介:张晓清 (1964一),女,吉林人 ,副教授 ,研究方向为系统软件; 费江涛 (1985一),男,河北保定人 ,硕士研究生,研究方 向为系统 软件 ; 潘清 (1964-),男 ,福建人,教授 ,硕士生导师,研究方 向为系统软件 。E—mail:panq@vip.sina.tom
1142 2010,31(5) 计算机工程与设计 ComputerEngineeringandDesign 2 主 服 务器 的设 计 2.1 总体设计 Master的主要 功能包括 :管理 Bigtable的元数 据;管理活 跃 的Tablet服务器集合 ;跟踪所有 Tablet的分配情况和对 Tablet 进行 合并;负责 Bigtable的垃圾数据 回收和负载平衡 卅。 (1)Master负责对 Bigtable的元数据进行 管理 。它在表创 建过程 中将 表结构数据 写入 到 Chubby上,同时为 了提高用户 读取数据 的速度,Master将表结构数据在本地进行存储。Master 还负责处 理用 户对表结构 的修改,如列家族 的添加 。Master实 现用户对 Bigtable的存取控制权 限的修改 。Master对用户提 交的操作请求进 行响应 ,同时在 Chubby上完成数据创 建、更 新和存储 。在 Chubby返回数据更新成 功的消息后 ,Master修 改本地上存储 的表 结构数据 的镜像 。最后 Master向Client返 回数据更新成功 的消息 。同时,Master响应用户对表 结构数 据 的读请求 。此 时,它只需将本地存 储的数据返 回给客 户端 即可,不需要再次访 问 Chubby。 (2)Master负 责管理活跃 Tablet服务器 的集 合 。Master通 过监 听 Chubby上 Tablet服务 器的 目录来发现 Tablet服务 器的 增减 。同时,Master保存着所有 活跃 的Tablet服 务器 的列表 。 Master和每个 Tablet服务器保 持周期性通信 ,以确保 Tablet服 务器 工作 正常 。 (3)Master跟踪所有 Tablet的分配 情况 。它保 存着每个 Tablet服务器所 属的 Tablet列表和 未指派 Tablet的列表 。当 一 个 Tablet没有受 到指派 ,同时 Tablet服 务器有足够 的可用 空 间,Master会 向Tablet服务器 发送 一个 Tablet加载请 求 ,由 Tablet服务器完 成 Tablet的加载 。同时,Master如果发现某一 台 Tablet服 务器 的负载太 大,它会 启动负载均衡程序。负载均 衡程序会将负载较大 的服务器所属 的部分 Tablet转移到负载 较小的 Tablet服 务器 上。除此之外 ,Master会定期 浏览每个 Tablet的大小 ,当它发现 相邻 的两个 Tablet的大 小均 小于下限 (MinSize)时 ,它会启动 Tablet合 并的操作 ,将两个 Tablet合并 成一个 Tablet。 (4)Master还负责 Bigtable的垃圾数据 的回收 。监控各个 Tablet服务器 的资源使 用情况 ,进行负载 的平衡。 2.2 表 的创 建 表创建操 作是 Master完 成 的重 要操作之 一 。Bigtable中 表 的结构数据 永久存 储在 Chubby上 。每 一个表在 Chubby体 现为一 个 目录 ,目录 的名 称就 是表名 。表 中的每个列 家族对 应此 目录下 的一个文件 ,这样正好实现 了列家 族作为Bigtable 存取控 制 的单元 。列 家族 的相关 数据 存储在 文件 中 。同时 在 Master本地也会 存储 表结构数 据 的镜 像 。因为 ,在 表创建 时,需要创建一个 的Tablet与之对应 ,并把它指派给 一个 Tablet 服务器 。图 2描述 了表创建 的工作 流程 ,客 户端首先查 找本地是 否对 Master的位 置进行缓存 。如果没有缓存 ,它 向 Chubby发 送 请求查找Master的位置 ,Chubby给予 响应 ,并 返回Master的 位 置信 息。Client对 Master的位置进行缓存 并向 Master发送 创 建表 的请求 。Master向 Chubby发 送表 创 建 的请 求 。在 Chubby上创建表 目录,并在此 目录下创建与 列家族对应 的文 件 ,然后将列家族 的相关信 息写入到列家族的文件 中。Chubby 向 Master返 回表 结构创建成功信 息 。Master在 GFS上创建 SSTable和 Commit—Log,同时创建 Tablet的数据结构 ,并初 始 化 。然后在元 数据表 中插 入新行 ,并连接 到此 Tablet。Master (1)Client向Chubby发送查找 Master位置的请求。 (2)Chubby向 Client返回Master的位置。 (3)Client向Master发送表创建请求。 (4)Master在 Chubby上创建表 目录并写入表结构文件 。 (5)Chubby返回创建成功。 (6)Master服务器在 GFS上创建 SSTable和 Commit—log (7)Master在元数据表中插入新行,并链接到此 Tablet。 (8)Master向Client返回表创建成功。 图2 表创建 将创建 的 Tab1et添加到未指派 的Tablet集合 中,准备进行 Tablet 指 派。最后 ,Master向Client返 回表创 建成功信息 。 2.3 表 的 删 除 表删 除操 作是使用次数 较少 的功 能,但 是它又是必不可 少 的功能 。表 的删 除包括许 多操 作 ,它要 将所有和表相关 的 数据进行 删除 。首 先是 Chubby上表 的结构数 据和相应的存 储控制权 限 ,但 是,为 了防止 Master在表删除过程 中死亡 ,这 些数据要 到最后才 能删 除。Master上存储 的表 结构的镜像也 要删 除。Tablet服务器 上 的 Tablet数据 结构信息和 MemTable 结构 。GFS上 存储的 Commit—Log和 SSTable。在删 除表所包 含的 Tablet后 ,元 数据表 中相应 记录也要删 除。
|