社会焦点

百度万亿量级数据库Tera架构应用、设计与实践全攻略

字号+ 作者: 来源: 2017-05-27

百度万亿量级数据库Tera架构应用、设计与实践全攻略,tera元素和祭祀哪个好,tera台服官网,tera为什么停运,北京百度搜索优化,百度云搜索引擎

信息技术发展突飞猛进,网络数据呈现爆炸之势,搜索引擎的实时性面临巨大挑战。百度搜索引擎每天处理着数万亿次的链接分析和数百亿次的互联网资源采集。作为百度搜索引擎的核心数据库 Tera,是如何支撑万亿量级的实时数据处理呢?

在 5 月 20 日百度开发者中心主办、极客邦科技承办的 71 期百度技术沙龙上,百度网页搜索基础架构技术经理齐志宏和资深工程师郑然,为大家免费放送了大型分布式表格系统 Tera 在百度搜索引擎中的应用、以及 Tera 架构设计与实践的全攻略。

  Tera 在百度搜索引擎中的应用

在讲解 Tera 的应用之前,百度网页搜索基础架构技术经理齐志宏首先介绍了百度搜索架构,百度搜索引擎的作用是连接人与信息、连接人与服务,信息抓取、索引构建、检索系统构成了搜索引擎最经典的三大板块。

百度万亿量级数据库Tera架构应用、设计与实践全攻略

互联网上的信息是如何通过搜索引擎最终展示给用户的?首先,网页被搜索引擎发现,通过抓取进入搜索引擎;然后,有价值的网页经过筛选,进行正排计算和倒排计算,完成索引构建;最后,通过检索系统将最终的结果呈现给用户。

伴随互联网信息爆发式的增长,百度搜索架构也在逐渐向实时化方向演进,在介绍完搜索架构之后,齐志宏从链接存储、索引筛选、用户行为分析三个场景切入,详细讲解了 Tera 在实时搜索架构中的应用。

齐志宏先为大家解释什么是 Tera:一种大型分布式表格存储系统,具有高性能、可伸缩等存储特点,最初的设计是为了管理万亿量级的超链和网页信息。Tera 在架构演进中到底扮演了怎样的核心角色呢?

首先来看存储链接。百度推出的 Spider 3.0 系统是基于 Tera 的实时架构,以 Tera 为核心,承载了链接库、网页库的存储,将原有基于 MapReduce 的批量计算转变为基于 Tera 的实时计算,实现每秒亿级的数据随机读写、每天处理万亿量级的链接操作,信息抓取模块(即 Spider)进入了实时处理时代。

百度万亿量级数据库Tera架构应用、设计与实践全攻略

第二个是索引筛选。索引筛选的核心作用是让有价值的信息进入索引。Tera 架构作为数据存储中心,存储了包含网页库、去重库、结果库在内的所有中间数据和最终结果,通过流式计算的方式完成页面特征拼接、页面价值计算、网页去重以及索引排序等核心操作的实时化改造。网页从抓取到筛选完成的整个过程,实现了从天级变到分钟级甚至秒级的飞跃。

百度万亿量级数据库Tera架构应用、设计与实践全攻略

最后一个是用户行为分析。用户行为分析在搜索效果改进和搜索引擎的评价等方面,都具有重要价值。基于 Tera 的实时用户行为数据流,将用户数据的时效性推向新高度。实时数据产出的延迟可降至秒级,突发时效性识别、用户意图分析、产品迭代评估等多个维度均可实时获取用户数据,进行实时分析,对时效性和用户体验有很大的提升。

百度万亿量级数据库Tera架构应用、设计与实践全攻略

总体上,Tera 支撑了着搜索引擎大规模的实时数据读写,将批量、全量计算转变为增量、实时的数据计算,极大的提升了搜索引擎的实时数据处理能力,Tera 是百度搜索引擎从批量处理迈向实时计算的架构基础。

  Tera 大型分布式表格系统的设计与实践

Tera 完成了百度搜索向万亿级数据实时搜索的跃进,成为炙手可热的数据库系统,那么,如何做好 Tera 架构的设计与实践成为开发者最为关心的问题。百度网页搜索基础架构资深工程师郑然在演讲过程中,围绕背景、数据模型、架构与设计、高可用实践以及性能优化等方面,详细讲解了 Tera 设计和实践过程。

郑然表示,百度搜索引擎面临三大业务特点:

  1. 数据量大,PB 到百 PB 这样的量级;

  2. 离线处理过程中,以站点等前缀方式访问数据是普遍的需求;

  3. 数据类型不固定。

这样的业务特点决定着 Tera 设计和实践的过程。

  Tera 设计的数据模型

Tera 的数据模型有以下几个特点,首先它是 Key-Value 模型,再深入一层,它是典型的 BigTable 模型,同时,一个非常重要的特点就是全局有序。这几个特点结合在一起,就是 Tera 数据模型的设计目标。

百度万亿量级数据库Tera架构应用、设计与实践全攻略

  Tera 设计的系统架构

Tera 系统主要由 Tabletserver、Master 和 ClientSDK 三部分构成, 数据持久化到底层的分布式文件系统中。其中 Tabletserver 是核心服务器,承载着所有的数据管理与访问;Master 是系统的仲裁者,负责表格的创建、Schema 更新与负载均衡;ClientSDK 包含供管理员使用的命令行工具 Teracli 和给用户使用的 SDK。

表格被按 RowKey 全局排序,并横向切分成多个 Tablet,每个 Tablet 负责服务 RowKey 的一个区间,表格又被纵向且分为多个 LocalityGroup,一个 Tablet 的多个 LocalityGroup 在物理上单独存储,可以选择不同的存储介质,用以优化访问效率。

  Tera 的高可用实践

Tera 的高可用性比较关键,直接影响整个系统的服务质量,其实现方式包括两个方面:Tablet Server 可用性以及负载均衡。

  • Tablet Server 的可用性:1)Tablet Server 向 ZooKeeper 注册,利用 ZooKeeper 检测 Tablet Server 的存活;2)Tablet Server 挂掉之后,Master 收到 ZooKeeper 通知,进行 Tablet 迁移。具体迁移过程,会把挂掉的 Tablet Server 节点迁移到 Kick 节点上,当 Tablet Server 发现自己出现在 Kick 节点下面,自行退出。

  • 负载均衡:负载均衡会直接影响整个集群的可用性,所以负载均衡更本质上来说是实现高可用的技术手段。影响 Tera 负载均衡的因素相对较少,主要在 SSD 容量、随机读和随机写这三个方面。针对上述影响因素, Tera 从两个层面来进行负载均衡策略的设计。首先平衡各个 Tablet Server 读请求 Pending 的数据量, 同时利用历史值来平滑负载短时间内抖动的影响 ; 其次根据 SSD 容量平衡各个 Tablet 的数据大小。

  • 转载请注明出处。


    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章