`
J-catTeam
  • 浏览: 9419 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

海量索引数据的集群分布

阅读更多
申明, 文章来自soso开发团队




索引数据的存储是搜索中很重要的一个环节,在数据量较小的情况下,如普通的中小网站,一般存在的 文档数在千万级以下,这个时候,可以简单的实现搜索系统,将所有的索引数据存放在一台机器上。而网页搜索引擎需要索引的数据重量到了上百亿上千亿的级别。 因此,需要成千上万台的机器来存放如此巨量的网页数据。那么如何将如此巨量的数据分布存放到这些机器上呢?
    较为简便直观的方法是每台机器上存放一定不相同的文档集合,每个机器对不重复的一部分网页文档建立索引。即按照文档分割的方式分布。按照文档分割的方 式,分布规则有几种:



    1) 简单按照docid取模,比如有N台 索引机器,则第i台机器处理的文档的集合为 dataset(i)={docid | docid%N=i},这样处理的好处有几个:

    i. 数据分布均匀,海量的数 据,取模基本可以保证每个机器上分布着数量相当,大小相当的网页文档索引。

    ii. docid定位方便,要 查找一个docid的数据在那个机器上,简单取模即可定位。

    iii.定位方便带来的一个直接 好处是文档数据更新方便,一个doc的数据始终在一个机器上,更新时标 记删除上面旧的数据,索引保存新的数据即可。

    最大的缺点则是扩容麻烦,当总数据量超过N台机器的最大装载量,需要扩容到N+1台 机器时,原来的数据分布被全部打散,数据在N+1台机器上需要全部重新 分布。



    2) 针对取模分布方式扩容不方 便的问题,引入了按照路由表分布。

    缩小数据集合的切分粒度,比如N台 机器,存放的数据集是mN个.定义一 张路由表,给出每个数据集存放在哪个机器上。当数据量增大时,数据集个数保持不变,而每个集合内的数据量增加。机器数从N增加到N+i, 则 每个机器上存放的数据集个数减少,变为mN/(N+i)。这时,让之前 的N台机器上各取出mi/(N+i)个数据集重新分布到新增的i台 机器上。然后只需要重新定义一张新的路由表,建立一个新的路由关系。

    这样的好处是,扩 容的时候,不需要对所有的数据做重新分布,只需要对需要变动的数据进行搬迁。一个要求是m需 要取到一个合理的数值,使得N+i=系统设计的最大机器时,每个机器上仍然能够保存接近均匀数目的数据集。



    3) 按照时间划分,根据预期每 天需要索引的数据量,计算出,每台机器能够承载的索引天数。第[iN,(i+1)N)天 内的数据放到第i台机器上。这样处理的好处是扩容方便,直接增加新的机 器用来存放新的索引,老的机器和数据不用动。缺点是docid定位不方 面,没有明显的规则快速计算出一个doc存在在哪个机器上。



    4) 按照doc的类型来划分。

    数据的类型可以有多种定义:比如按照来源类型(新闻,博客,论坛...),按 照数据的好坏(pr高低,是否重点网站)按照类型划分的好处是,可以根据检索请求,针对不同类型的数据做不同的检索处理。这种划分方式通 常和其它的划分方式复用。



    5)按照索引项来划分。倒排索引 的组织结构是一系列索引项到每个索引项存在的文档序列的映射。当数据量大到无法用单机来装载时,则可以按照索引项进行分割,不同的机器存放不同索引项的倒 排列表。 索引项分割的方式也可以有多种

    i.简单按照索引项ID取模

    ii.按照索引项的访问频度;访 问频度高的可以在多个机器上存放多套索引。

按照索引项来划分的缺点是,在检索时,如果一个检索串涉及到多个索引项的求交。而这多个索引项可 能分布到多个不同的机器,则需要将这几个索引项的倒排数据传输到一个集中的机器上进行求交处理。这将增加系统的复杂性和检索耗时。



    6)混合划分部署

    现实应用中,往往不是简单的使用上面的一种划分,而是将多种划分混合使用。比如先按照时间来做一层划分,分离出时新性数据和非时新性数据。对非时新性数 据再按照页面质量划分,按照数据类型划分,按照文档取模/路由划分,特 定的数据会再按照索引项来划分。



    以上是各种常见对索引数据在多机上分布的方式。前些年google开发了gfs, bigtable等分布式系统,来通过进行数据的分布式存储管理,并提供自适应的多副本容灾容错,平台扩容等功能。国内外各大 公司和开源组织也跟上开发类似的系统。其基本的原理也可以认为是采用了一种类似路由表的方式来对数据进行分布查找定位。当然,使用这样系统的好处是上层应 用在某种程度上,不需要关心数据与底层具体硬件位置的关联了。
分享到:
评论

相关推荐

    基于hadoop和hbase的分布式索引集群研究.pdf

    分布式搜索引擎的关键技术实现包括了数据爬取、预处理、倒排索引表的建立、中文分词和索引数据的存储等步骤。数据爬取可以利用Heritrix工具进行抓取和预处理。Heritrix是一个可拆卸和替换组件的平台架构,支持对链接...

    电信设备-海量数据信息索引系统和索引构建方法.zip

    3. **数据分布处理**:面对分布式存储的环境,索引系统需要支持并行计算和分布式索引构建,以充分利用集群资源。 4. **动态更新**:数据是不断变化的,索引系统需要能够实时或近乎实时地处理新数据的添加和旧数据的...

    海量数据处理方法

    海量数据处理是指基于海量数据上的存储、处理、操作,解决方案包括巧妙的算法搭配适合的数据结构,如 Bloom filter/Hash/bit-map/堆/数据库或倒排索引/trie 树,以及大而化小、分而治之的策略。根据数据处理的场景,...

    面向海量天文数据的分布式MySQL锥形检索研究.pdf

    本文主要介绍了一种针对海量天文数据的分布式MySQL锥形检索的研究方法,使用数据库中间件技术,通过分库分表的方式将数据存储到分布式数据库集群中,并通过动态索引工具建立伪球面索引,以此来满足锥形检索的需求。...

    海量数据处理分析方法

    总的来说,海量数据处理分析方法涉及数据库选择、程序优化、数据分区、索引建立、缓存管理、虚拟内存调整、分批处理等多个层面,这些技术和策略的综合运用是应对大数据时代的关键。通过不断学习和实践,工程师可以...

    应用分布式索引提高海量数据查询性能.pdf

    在分布式索引中,索引数据被分成多个分片,每个分片存储在不同的服务器上。分片策略可以是基于数据范围的分片,也可以是基于哈希值的分片。Solr是基于Lucene构建的一个开源的企业级搜索服务器,它支持分布式搜索并...

    海量数据的设计(十三讲)

    索引是加速数据检索的关键,对于海量数据尤为重要。这里会讨论B树、位图索引、分区索引等不同类型的索引,以及如何设计和优化索引来提升查询速度。 第五讲:海量数据之并行 并行计算是处理大数据不可或缺的技术,...

    如何处理海量数据

    在IT行业中,处理海量数据是一项挑战性的任务,它涉及到数据管理、系统资源的优化以及高效的数据处理策略。本文将深入探讨处理海量数据的关键知识点。 首先,数据量过大是处理海量数据面临的主要难题。数据可能包括...

    java处理海量数据的初步解决思路

    Java程序员可以轻松地编写MapReduce作业,利用集群资源处理大规模数据。 此外,Apache HBase是一个基于Hadoop的分布式NoSQL数据库,适用于实时查询。它与Java紧密集成,可以使用Java API进行数据操作。另一个选择是...

    海量数据处理

    海量数据处理相关 所谓海量数据处理,是指基于海量数据的存储、处理、和操作。正因为数据量太大,所以导致要么无 法在较短时间内迅速解决,要么无法一次性装入内存。 事实上,针对时间问题,可以采用巧妙的算法搭配...

    基于Hadoop的海量数据管理系统

    它能够将大数据集分布在多个节点上,确保即使部分节点故障,数据仍可被恢复。这种设计使得系统具有数据规模易扩展的特性,可以随着需求的增长轻松添加存储节点。 2. **MapReduce编程模型**:MapReduce是一种处理和...

    MySQL海量数据存储与优化(上).pdf

    MySQL海量数据存储与优化 MySQL是一种关系型数据库管理系统,广泛应用于各个行业,包括互联网、金融、电信等领域。随着数据量的增长,MySQL的性能优化变得越来越重要。本文将详细介绍MySQL的架构原理、存储机制、...

    海量数据处理面试题.pdf

    为了应对这些问题,人们开发了各种算法和数据结构,如Bloomfilter、Hash、bit-map、堆、数据库、倒排索引以及trie树等,这些可以被用来优化处理时间和空间的使用。 在单机处理方面,系统需要考虑的主要是CPU、内存...

    云计算框架的海量数据查询技术研究.pdf

    云计算框架的海量数据查询技术研究涉及的关键知识点主要包括云计算的基本概念、海量数据存储与查询技术、分布式计算框架Hadoop、NoSQL数据库尤其是HBase的相关知识,以及二级索引机制的设计与实现等。 首先,云计算...

    基于HBase的海量GIS数据分布式处理实践.pdf

    文章通过在HBase集群环境下使用真实GIS数据验证了上述方法,实验结果显示,提出的系统在海量数据存储和检索方面性能卓越,能够实现地理信息数据的高效存储和实时高速检索。 文章中的关键词包括大数据、HBase、栅格...

    海量数据的MySQL数据集

    在IT领域,数据库管理系统是数据存储和处理的核心,而MySQL作为一款开源、免费的关系型数据库管理系统,因其高效、稳定和易用的特点,在处理海量数据时备受青睐。标题提到的“海量数据的MySQL数据集”是一个专门针对...

    海量数据处理优化

    ### 海量数据处理优化知识点详解 #### 一、数据层架构 - **网站架构发展历程**:从最初的Perl、CGI、Oracle等技术发展至Java Servlets、EJB,再到现代架构,包括底层消息队列(MQ)、企业服务总线(ESB)、数据...

    海量数据搜索技术相关论文

    首先,海量数据搜索技术的基础是数据存储和索引。面对PB级别的数据,传统的数据库系统往往难以胜任。因此,分布式存储系统如Hadoop的HDFS(Hadoop Distributed File System)被广泛采用,它可以将大数据分散存储在多...

    基于Hadoop的分布式索引构建

    分布式索引构建是大数据处理领域中的一个重要环节,它允许在海量数据上提供快速的查询服务。Hadoop作为一个广泛使用的分布式计算框架,为构建分布式索引提供了有力支持。以下是关于基于Hadoop的分布式索引构建的详细...

Global site tag (gtag.js) - Google Analytics