热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

大数据图数据库之数据分片

节选自《大数据日知录:架构与算法》十四章,书籍目录在此对于海量待挖掘数据,在分布式计算环境下,首先面临的问题就是如何将数据比较均匀地分配到不同的服务器上。对于非图数据来说,这个问题解决起来往往比较直观,因为记录之间独立无关联,所以对数据切

节选自《大数据日知录:架构与算法》十四章,书籍目录在此 对于海量待挖掘数据,在分布式计算环境下,首先面临的问题就是如何将数据比较均匀地分配到不同的服务器上。对于非图数据来说,这个问题解决起来往往比较直观,因为记录之间独立无关联,所以对数据切

节选自《大数据日知录:架构与算法》十四章,书籍目录在此

对于海量待挖掘数据,在分布式计算环境下,首先面临的问题就是如何将数据比较均匀地分配到不同的服务器上。对于非图数据来说,这个问题解决起来往往比较直观,因为记录之间独立无关联,所以对数据切分算法没有特别约束,只要机器负载尽可能均衡即可。由于图数据记录之间的强耦合性,如果数据分片不合理,不仅会造成机器之间负载不均衡,还会大量增加机器之间的网络通信(见图14-5),再考虑到图挖掘算法往往具有多轮迭代运行的特性,这样会明显放大数据切片不合理的影响,严重拖慢系统整体的运行效率,所以合理切分图数据对于离线挖掘类型图应用的运行效率来说非常重要,但是这也是至今尚未得到很好解决的一个潜在问题。

对于图数据的切片来说,怎样才是一个合理或者是好的切片方式?其判断标准应该是什么?就像上面的例子所示,衡量图数据切片是否合理主要考虑两个因素:机器负载均衡以及网络通信总量。如果单独考虑机器负载均衡,那么最好是将图数据尽可能平均地分配到各个服务器上,但是这样不能保证网络通信总量是尽可能少的(参考图14-5右端切割方式,负载比较均衡,但是网络通信较多);如果单独考虑网络通信,那么可以将密集连通子图的所有节点尽可能放到同一台机器上,这样就有效地减少了网络通信量,但是这样很难做到机器之间的负载均衡,某个较大的密集连通子图会导致某台机器高负载。所以,合理的切片方式需要在这两个因素之间找到一个较稳妥的均衡点,以期系统整体性能最优。

\

下面介绍两类从不同出发点切割图数据的方法,并分别介绍典型的具体切分算法及其对应的数学分析,首先需要强调一点:在选择具体的切分算法时并非越复杂的算法越可能在实际系统中被采纳,读者可以思考其中的道理,在后面会给出解答。

14.3.1 切边法(Edge-Cut)

现在面临的问题是:给定一个巨大的图数据和p台机器,如何将其切割成p份子图?解决这个图切割问题有两种不同的思路。

切边法代表了最常见的一种思路,切割线只能穿过连接图节点的边,通过对边的切割将完整的图划分为p个子图。图14-6代表将7个节点的图分发到3台机器上,左端展示了切边法方式,图节点的编号代表节点被分发到的机器编号。

\

通过切边法切割后的图数据,任意一个图节点只会被分发到一台机器,但是被切割开的边数据会在两台机器中都保存,而且被切割开的边在图计算的时候意味着机器间的远程通信。很明显,系统付出的额外存储开销和通信开销取决于被切割开的边的数量,图切割时通过的边越多,则系统需额外承载的存储开销和通信开销越高。

前文有述,衡量图数据分片合理与否有两个考虑因素:负载均衡和机器通信量,所以对于切边法来说,所有具体的切割算法追求的目标不外是:如何在尽可能均衡地将图节点分配到集群中的不同机器上这一约束下,来获得最小化切割边数量。

\

即在每台机器被分发到的节点尽可能均匀的条件约束下,求切割边最少的方法。其中,|V|/p代表所有的节点被p台机器均分所得数值,l≥1代表不平衡调节因子,通过调节l的大小可以控制节点分配的均匀度,当其值为1时,要求完全均分,其值越大,允许的不均衡程度越高。

从上述形式化描述可以看出,lamda约等于1的时候,这个问题本质上是一个图切割中的均衡p路分区(Balanced p-way Partitioning)问题,解决这个问题有很多相关研究(有兴趣的读者可以阅读本章参考文献[4]),但是由于图切割算法的时间复杂度较高,基本不太适合处理大规模数据,所以在真实的大规模数据场景下很少被采用。

在实际的图计算系统中,经常使用的策略是节点随机均分法,即通过哈希函数将节点均分到集群的各个机器中,并不仔细考虑边切割情况。Pregel和GraphLab都采用了这种策略。这种方法的优点是快速、简单且易实现,但是从定理14.1可以证明这种方法会将图中绝大多数的边都切开。

由定理14.1可知,假设集群包含10台机器,则被切割的边比例大约为90%,即90%的边会被切开,而如果包含100台机器,则99%的边会被切开。可见,这种切分方式是效率很低的一种。

14.3.2 切点法(Vertex-Cut)

切点法代表另外一种切割图的不同思路。与切边法不同,切点法在切割图的时候,切割线只能通过图节点而非边,被切割线切割的图节点可能同时出现在多个被切割后的子图中。图14-6右侧是切点法示意图,从图中可看出,图中心的节点被切割成三份,也就是意味着这个节点会同时出现在被切割后的三个子图中。

与切边法正好相反,切点法切割后的图中,每条边只会被分发到一台机器上,不会重复存储,但是被切割的节点会被重复存储在多台机器中,因此,同样存在额外存储开销。另外,如此切割带来的问题是:图算法在迭代过程中往往会不断更新图节点的值,因为某个节点可能存储在多台机器中,也即存在数据多副本问题,所以必须解决图节点值数据的一致性问题。对这个问题,在后面讲解PowerGraph系统时,会给出一种典型的解决方案。

那么,既然切点法图中的边都没有被切割,机器之间是否就无须通信开销了呢?事实并非如此,在维护被切割的图节点值数据一致性时仍然会产生通信开销。所以,对于切点法来说,所有具体算法追求的合理切分目标是:如何在尽可能均匀地将边数据分发到集群的机器中这个约束条件下,最小化被切割开的图节点数目。

\即在每台机器被分发到的边尽可能均匀的条件约束下,求平均副本数最少的方法。其中,|E|/p代表所有边被p台机器均分所得数值,l≥1代表不平衡调节因子,通过调节l的大小可以控制边分配的均匀度,当其值为1时,要求完全均分,其值越大,允许的不均衡程度越高。

同样,由于采用复杂图切割算法的时间复杂度太高,所以实际系统中最常用的还是边随机均分
\
现实世界中的大多数图的边分布都遵循power law法则,理论和实践已经证明,对于遵循这一法则的图数据来说,属于切点法的边随机均分法要比切边法里的节点随机均分法强,其计算效率要高出至少一个数量级。所以总体而言,对于一般情形的图数据,采取切点法要明显优于切边法。

请思考:为何不是越复杂、有效的切分算法越受欢迎?

解答:一般来说,图挖掘算法分为两个阶段。

阶段一:集中式图数据切分与分发;阶段二:分布式图计算。

如果采用复杂的图切割算法,则系统负载均衡好,机器间通信量较少,所以第二阶段运行的效率高,但是采用复杂算法不仅开发成本高,在第一阶段付出的时间成本也很高,甚至因此付出的时间成本要高于在第二阶段产生的效率收益,所以选择何种切分算法也需要有全局的效率权衡。


推荐阅读
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • 护墙_搭建LVS负载均衡NAT和DR模式
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了搭建LVS负载均衡NAT和DR模式相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • Nginx Buffer 机制引发的下载故障
    Nginx ... [详细]
  • 14亿人的大项目,腾讯云数据库拿下!
    全国人 ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
author-avatar
米粒多可爱几_642
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有