【Flink图计算源码解析】开篇:Flink图计算总览
文章目录
- 1. 图计算的作用
- 2. 本专题的写作目的
- 3. Flink Gelly引擎总览
- 3.1. Gelly的源码结构
- 1. Graph的存储数据结构
- 2. 图的类别
- 3. 图的验证以及指标
- 4. 图的生成器
- 5. Library
- 6.图的迭代计算
- 7. examples案例
- 4. 后记
1. 图计算的作用
哲学上说事物之间普遍存在联系的,通常来说可以将事物看作图的顶点,事物间的联系看作图的边,典型的场景:
- 对应于学术界的文献来说,每篇论文可以看作顶点,文献之间的引用关系可以看作边。
- 对应于互联网来说,web页面可以看作顶点,页面之间的超链接关系可以看作边。
- 对应于社交网络来说用户可以看作顶点,用户之间建立的关系可以看作边,关系的类别可以看作权重。
- 对应于大型电商来说,用户和商品可以看作顶点(二部图),它们之间的购买关系可以看作边,购买次数可以看作权重。则抽象出来的图数据就构成了研究和商用的基础。
可以探究很多有趣的问题如:“权威节点(中心)”,“小圈子”,“世界上任意两个人之间的人脉距离”,“消息是如何传播的”等。而将这些有意思的现象用到商业领域,则底层的运算常常是图相关的算法。例如图的最短路径算法可以做好友推荐,计算关系紧密程度;最小连通图可以识别洗钱或虚假交易;Key person可以找到意见领袖,防止客户流失的群体效应;对图做PageRank可以做传播影响力分析,找出问题的中心,做搜索引擎的网页排名。所以图的场景在生活中无处不在。
图计算就是研究在大规模图数据下,如何高效计算,存储和管理图数据等相关问题的领域。
相比之下,Spark的图引擎GraphX发展要完善点。Flink的图计算引擎Gelly发展时间相对要晚点,所以目前的功能还没有Spark那么全面。但是Flink作为一个流计算理论如此完美的数据计算框架,在发展图计算的道路上有独到的优势,相信在不久的未来,Flink的Gelly引擎一定还会发展得越来越好。
2. 本专题的写作目的
目前市场上有关Flink Gelly的资料还比较少,所以对于认清目前Flink已有的图计算相关工作很不利。笔者对Flink的研究有较浓的兴趣, 所以工作之余,主要从研究源码和研读图计算相关论文出发,对Flink的Gelly模块做了一番较全面的认识。
其实,也不仅仅是兴趣啦,因为工作场景里有相关的图应用,主要是挖掘出人员关系,建立关系图谱等。这种场景更加迫使我要加强对图理论和应用的学习。
所以在此,想把自己在Flink图计算方面的学习心得积累下来,一方面作为巩固自己的知识体系吧;一方面,我很相信分享的力量,希望在分享过程中交流心得,相得益彰,互相弥补。
3. Flink Gelly引擎总览
我相信,目前Flink Gelly已有的功能肯定是在实际应用场景中激发出来的。虽然我现在还完全摸不清Flink的Gelly整体发展脉络,但是我会尽量结合自己的理解,以我们容易理解的角度去分析Gelly的源码结构,对于一些较复杂的知识点,我会结合Flink提供的参考论文来做解读。
3.1. Gelly的源码结构
图1. Flink Gelly模块知识架构图
整体代码架构如图1所示。我们从下面往上面看,简单地介绍下各层将要讲解的内容。
1. Graph的存储数据结构
把生活中抽象的图模型转化为计算机语言可以理解和存储的数据结构,这一步是基础。较优的图存储方式对我们后续对图开展相关计算将影响深远。
2. 图的类别
从大类来看,根据图是否有方向,可以将图分为有向图(directed Graph)和无向图(undirected Graph)。这两类图的数据结构以及操作方式,将会在源码上做深入地对比和分析。
3. 图的验证以及指标
从最开始读取进来的图数据源出发,有必要先对图数据的有效性做一些校验,那么Graph的validation模块就是提供相关的校验功能。
任何数据结构是有其特定的量化衡量指标的。比如数组有长度等指标,链表有容量等指标。那么对于图,由顶点和边组成的一种较特殊的数据结构,其自然有自己的量化指标,这一块在Graph的metrics模块将做深入的分析。
图的asm模块,介绍的是对图进行标注的方法。比如标出图的所有顶点的度,出度和入度等。然后还定义了一些跟图相关的转移函数等。
4. 图的生成器
图从细类来看是有很多类别的,比如:
- 空图(EmptyGraph):就是不含边的图
- 完全图(CompleteGraph) : 也就是两两顶点都互相联通的图。
- 循环图(CycleGraph)
- 星型图(StarGraph)
等等。
这些图将构成图的大家族。所以这部分主要是提供了不同细类图的生成器。
另外源码重点提供了一种图的相关代码模块 ,这就是二部图(biparite)。
5. Library
这个模块重点定义了一些工具依赖包。具体来说就是图的一些最常见的算法实现。
比如:图的聚类算法,图的顶点连接性算法,图的相似度算法等等。
6.图的迭代计算
这部分重点介绍一种图的迭代操作模式,简称gsa操作。实际上就是定义了一种图的迭代操作范式。这种范式具体由三步(gather,scatter和apply)组成。
然后还实现了两种基于BSP(Bulk Synchronous Parallel)模式的图迭代计算方法:pregel和spargel。这两种方法主要是从不同的视角来实现对图的迭代计算。
7. examples案例
最后会结合源码里提供的实际案例,来讲解具体的Gelly用法,这样会进一步加深我们对图的认识。、
4. 后记
路漫漫其修远兮,吾将上下而求索。知识的探索是充满挑战和乐趣的。知识的认识也是不断慢慢加深的。 笔者写此专栏,对于理解错误的知识,希望同仁能够积极指出,我们要相信开源和分享的力量。
【Flink图计算源码解析】开篇:Flink图计算总览相关推荐
- 量化指标公式源码_量化指标副图指标 源码 通达信 贴图 无未来
好股票软件下载网(www.goodgupiao.com)提示:您正在下载的是:量化指标副图指标 源码 通达信 贴图 无未来 这个量化指标,是我逃顶用的,今天拿出来献给大家 N:=34;M:=3; 28 ...
- Seatunnel提交任务到Flink集群源码解析
一:首先查看seatunnel提交任务到flink集群的时候的shell脚本start-seatunnel-flink-13-connector-v2.sh,查看最后会调用一个类FlinkStarte ...
- PHP简洁小猫咪图床源码 带12个图床接口
源码介绍 一款永久免费的图床程序,包含三楼图床.芥子图床.B站图床.QQ图床.百度图床.京东图床.58图床.头条图床.笔迹图床.本地图床.小猫咪图床.搜狗图床多种图床接口. 源码截图 特别说明:源码内 ...
- 好看的简图动态背景图床源码 多接口聚合图床
介绍: 这款源码还是比较帅气的,自带图片鉴h功能,支持多个接口通道,上传网站根目录解压即可使用! 网盘下载地址: http://kekewangLuo.cc/2HGt1QL2OVf0 图片:
- [源码解析] 当 Java Stream 遇见 Flink
[源码解析] 当 Java Stream 遇见 Flink 文章目录 [源码解析] 当 Java Stream 遇见 Flink 0x00 摘要 0x01 领域 1.1 Flink 1.2 Java ...
- [源码解析] 深度学习流水线并行 PipeDream(6)--- 1F1B策略
[源码解析] 深度学习流水线并行 PipeDream(6)- 1F1B策略 文章目录 [源码解析] 深度学习流水线并行 PipeDream(6)--- 1F1B策略 0x00 摘要 0x01 流水线比 ...
- [源码解析] 深度学习流水线并行 PipeDream(3)--- 转换模型
[源码解析] 深度学习流水线并行 PipeDream(3)- 转换模型 文章目录 [源码解析] 深度学习流水线并行 PipeDream(3)--- 转换模型 0x00 摘要 0x01 前言 1.1 改 ...
- [源码解析] PyTorch 流水线并行实现 (1)--基础知识
[源码解析] PyTorch 流水线并行实现 (1)–基础知识 文章目录 [源码解析] PyTorch 流水线并行实现 (1)--基础知识 0x00 摘要 0x01 历史 1.1 GPipe 1.2 ...
- [源码解析] PyTorch 分布式(2) ----- DataParallel(上)
[源码解析] PyTorch 分布式(2) ----- DataParallel(上) 文章目录 [源码解析] PyTorch 分布式(2) ----- DataParallel(上) 0x00 摘要 ...
最新文章
- R语言ggplot2可视化:使用gganimate包和gapminder包为生成的动画文件gif设置尺寸、分辨率
- Windows Tensorflow GPU安装
- 卡方检验 python
- HTTP缓存原理介绍
- vlookup两个条件匹配_vlookup,你还是只会基础的单条件查找?
- WSE2.0中X509安全令牌的使用
- SAP License:CO相关知识点
- 博客园首页新随笔联系管理订阅订阅随笔- 610 文章- 0 评论- 83 阅读- 144万 Calendar时间获取天,周,月,季度,年度时间段
- Tri_integral Summer Training 9 总结
- 使用tcpdump抓包工具来捕捉三次握手和四次挥手
- greenDAO系列7--关系
- 用Python绘制了若干张词云图,惊艳了所有人
- APMCon2017 | 一大波技术大神来袭,你要的性能优化干货这里全都有
- SRC漏洞提交平台和应急响应中心
- 红透半边天的VR(虚拟现实)产业
- 学习记录 动态规划实时更新
- [转] 绝对实用!60款免费软件逐个点评下载
- 上门汽车保养预约小程序
- Cglib和jdk动态代理
- 深入理解css3 3d变换
热门文章
- CNCC2020_贾志豪_Automated Discovery of Machine Learning Optimizations
- 市场调研报告-全球与中国社交媒体竞赛软件市场现状及未来发展趋势
- openGauss开源2周年,破解数据库生态痛点
- Codeforces Round #836 (Div. 2) E.Tick, Tock(在线:带权并查集/离线:dfs判环)
- 禁用nouveau后黑屏_在Windows中禁用自适应亮度以修复黑屏问题
- react打包 APP
- 杰里之MT8852A/B蓝牙测试仪 EDR【篇】
- 字符型常量与数字转换
- 什么是Windows NT?
- WSW中文分词解决方案