【Flink图计算源码解析】开篇:Flink图计算总览_hxcaifly的博客-CSDN博客_flink 图计算


本站和网页 https://blog.csdn.net/hxcaifly/article/details/86147736 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

【Flink图计算源码解析】开篇:Flink图计算总览_hxcaifly的博客-CSDN博客_flink 图计算
【Flink图计算源码解析】开篇:Flink图计算总览
hxcaifly
于 2019-01-09 13:41:41 发布
5587
收藏
分类专栏:
Flink
Flink原理和应用
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hxcaifly/article/details/86147736
版权
Flink
同时被 2 个专栏收录
31 篇文章
8 订阅
订阅专栏
Flink原理和应用
29 篇文章
16 订阅
订阅专栏
文章目录
1. 图计算的作用2. 本专题的写作目的3. Flink Gelly引擎总览3.1. Gelly的源码结构1. Graph的存储数据结构2. 图的类别3. 图的验证以及指标4. 图的生成器5. Library6.图的迭代计算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. 后记
路漫漫其修远兮,吾将上下而求索。知识的探索是充满挑战和乐趣的。知识的认识也是不断慢慢加深的。 笔者写此专栏,对于理解错误的知识,希望同仁能够积极指出,我们要相信开源和分享的力量。
hxcaifly
关注
关注
点赞
收藏
打赏
评论
【Flink图计算源码解析】开篇:Flink图计算总览
文章目录1. 图计算的作用2. 本专题的写作目的3. Flink Gelly引擎总览3.1. Gelly的源码结构1. Graph的存储数据结构2. 图的分类3. 图的验证以及指标4. 图的生成器5. Library6.图的迭代操作7. examples案例4. 后记1. 图计算的作用哲学上说事物之间普遍存在联系的,通常来说可以将事物看作图的顶点,事物间的联系看作图的边,典型的场景:对应于...
复制链接
扫一扫
专栏目录
gelly-streaming, 一个面向 Apache Flink的实验图形.zip
09-18
gelly-streaming, 一个面向 Apache Flink的实验图形 Gelly流一个用于单通道图流分析的experiemental API,在 上进行。图流模型在unbounded图流的基础上,实现了一种基于加权分布图的在线处理图统计。集集。一次算法和图形 Windows 等方法。 我们的工作构建在
Flink系列之Flink流式计算引擎基础理论
最新发布
luoyepiaoxue2014的博客
12-01
231
Flink系列之Flink流式计算引擎基础理论
评论 2
您还未登录,请先
登录
后发表或查看评论
【Flink图计算源码解析】:Flink图的存储数据结构
hxcaifly的博客
01-10
2006
承接上篇:https://blog.csdn.net/hxcaifly/article/details/86147736
1.图的基本组成
图由边和顶点构成:
Edge: 边。每条边是Tuple3<K,K,V>的数据结构,保存了边的开始顶点Id,边的目的顶点Id和边的值。
Vertex: 顶点。每个顶点是Tuple2&
Github打不开怎么办,教你分分钟搞定
xuehuiquzhenxi的博客
09-27
2763
首先打开自己的浏览器 选择 设置->系统->打开您计算机的代理设置(如下图以google为例)将手动设置代理下的”使用代理服务器“为关闭,就可以了。然后跳转到电脑设置界面 (也可以直接打开此界面)
wire:Clojure声明式计算图
05-02
金属丝
描述
一个小的Clojure库,用于将函数显式地连接到声明性计算图中。
这种方法与有一些相似之处。 与数据流编程不同,该库仅提供一种组合纯函数的方法,它不提供数据流变量或尝试解决任何与并发相关的问题。 默认情况下,它不提供任何备注,缓存,并行计算,部分评估或React式编程。
该库的灵感来自使用公式的形式,既可以手写形式也可以通过电子表格给出。 由于多种原因,使用它们可能会很棘手:
所有变量/单元格都具有全局范围
了解家属/家属可能很困难
报告/调试计算中的中间值可能会导致笨拙的代码重组
很难知道如何最好地构建代码
调用相关函数会导致重复计算
大的让块不组成
通过使用声明性图使计算的工作流程显式,它有助于解决许多这些问题:
在图的范围内,图的任何其他部分都可以访问值
依赖关系的流程非常清晰,可以轻松查看
执行图的结果只是所有值的映射,这有助于报告和调试中间值
编写为图的图可
Flink实战二 Flink的基本架构和原理
cenjianteng的博客
08-10
3479
组件栈
API & Libraries层
基于流处理的:CEP(复杂事件处理库)、SQL&Table库
基于批处理的:FlinkML(机器学习库)、GElly(图处理库)等
API层: DataStream API(流计算)、DataSet API(批计算)
Core层
支持分布式Stream作业的执行、JobGraph到ExecutionGraph的映射转换、任务...
Flink教程(01)- Flink知识图谱
阿甘兄
03-03
1616
文章目录01 引言02 Flink 知识结构2.1 Flink介绍2.2 环境准备2.3 Flink编程模型2.4 DataStream API2.5 Flink状态管理和容错2.6 DataSet API2.7 Table API & SQL2.8 Flink组件栈2.9 Flink部署与应用2.10 Flink监控与性能优化03 Flink 知识图谱04 文末
01 引言
最近因为工作需要用到了Flink,所以博主开了《Flink教程》专栏来记录Flink的笔记。
在学习Flink之前,我们必须
Flink生态系列-图计算篇
枫叶的落寞的博客
05-07
905
敬请期待。。。
常用图算法实现--Flink
crazy_scott的博客
01-03
1576
使用Flink实现PageRank、强连通分量、单源最短路径、二分图匹配…
PageRank
主要参考官网的example
算法流程
每次计算当前每个网页的转移概率,计算下一时刻到达每个网页的概率并加入随机跳转
数据准备
pages.txt
准备一些顶点,例如1-15
links.txt
准备一些连接边(也就是链接数):
1 2
1 15
2 3
2 4
2 5
2 6
2 7
3 13
4 2...
flink实战--flink原理解析
阿华田的博客
09-30
1万+
Flink出现的背景
我们知道目前流处理的主要流行的计算引擎有,Storm,SparkStreaming。但是这个两个计算引擎都有自己的局限性。Storm实现了低延迟,但是目前还没有实现高吞吐,也不能在故障发生的时候准确的处理计算状态(将数据从一个事件保存到另一个事件的,这些保留下来的是数据较计算状态),同时也不能实现exactly-once。SparkStreaming通过微批处理方法............
Flink执行图
qq_43118086的博客
07-27
376
Flink 中的执行图可以分成四层:StreamGraph -> JobGraph ->ExecutionGraph-> 物理执行图
①StreamGraph:是根据用户通过Stream API编写的代码生成的最初的图,用来表示程序的拓扑结构。
②JobGraph:StreamGraph经过优化后生成了JobGraph,提交给JobManager 的数据结构。主要的优化为将多个符合条件的节点 chain 在一起作为一个节点
③ExecutionGraph:JobManager 根据 Job
使用Apache Flink进行分布式流和图形处理
danpu0978的博客
04-24
530
Apache Flink是一个顶级Apache项目,它允许统一分布式流和批处理。 Apache Flink的核心是流数据流引擎,该引擎为数据流上的分布式计算提供数据分发,通信和容错能力。
8月27日,湾区Apache Flink聚会活动由MapR主持。 这次,主要主题是使用Apache Flink进行分布式有状态流和图形分析。 我们很幸运地接待了来自瑞典的三位特别嘉宾,他们是来自几个致力...
Flink学习3-API介绍
迷路剑客个人博客
09-29
4148
Flink学习3-API介绍
0x00 系列文章目录
Flink系列1-基础概念
Flink系列2-安装和启动
Flink系列3-API介绍
0x01 摘要
本文主要是介绍Flink的不同层次(level)API抽象,学习怎么通过API高效处理有状态性的计算无界和有界的数据流。
0x02 基本概念
在Flink流式处理框架中,有几个很重要的概念即streams,state,time。 下面我...
Flink从入门到真香(Flink介绍)
oMaFei的博客
11-05
976
关于概念的东西,其实官网说的很全,对于个人理解就是,flink、spark等等大数据处理平台就是把原来需要我们自己实现的功能,全部框架封装好,像是跨机器的大规模计算、内存/cpu等等资源管理、状态管理(锁还有恢复机制等等)框架全部封装好了,作为开发来说就只需要关心自己要实现的业务就可以了
以下内容来自官网,从3个方面介绍Flink:
架构
Apache Flink 是一个框架和分布式处理引擎,用于...
Flink
修行的博客
08-14
1万+
Flink
一、简介
Flink核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布、数据通信以及容错机制等功能。基于流执行引擎,Flink提供了诸多更高抽象层的API以便用户编写分布式任务:
​DataSet API, 对静态数据进行批处理操作,将静态数据抽象成分布式的数据集,用户可以方便地使用Flink提供的各种操作符对分布式数据集进行处理,支持Java、Scala和Pyt...
Spark 和 Flink 全方面对比(谁是下一代大数据流计算引擎?)
热门推荐
JasonLee实时计算
12-18
4万+
最近也是有很多同学问我spark和flink到底谁好,应该怎么选择,这也是近年来被问的最多的问题,也是经常被拿来比较的,今天就简单的做一个对比,我没有要挑起spark和flink之间的战争,社区间取长补短也好,互相抄袭也罢,我尽量站在一个公平的角度对待他们.下面会从多个方面对两者进行分析(当然有不全面),希望对大家有所帮助.篇幅较长,望大家耐心阅读.
Spark简介
Spark的历史比较悠久,...
Gelly
http://www.54tianzhisheng.cn/
09-22
351
Gelly 是什么?
Gelly 是 Flink 的图 API 库,它包含了一组旨在简化 Flink 中图形分析应用程序开发的方法和实用程序。在 Gelly 中,可以使用类似于批处理 API 提供的高级函数来转换和修改图。Gelly 提供了创建、转换和修改图的方法以及图算法库。
如何使用 Gelly?
因为 Gelly 是 Flink 项目中库的一部分,它本身不在 Flink 的二进制包中,所以运...
[flink]#33_扩展库:Gelly
PigCircle
12-17
283
./bin/flink run examples/gelly/flink-gelly-examples_2.11-1.9.0.jar \ --algorithm GraphMetrics --order directed \ --input RMatGraph --type integer --scale 20 --simplify directed \ --output print
Gelly ...
flink 四层图概述
m0_46449152的博客
03-01
338
Intermediate / Inter mi di ei te/
四层图
一个 Flink 流式作业,从 Client 提交到 Flink 集群,到最后执行,总共会经历四种不同的状态。
总的来说:
1、Client 首先根据用户编写的代码生成 StreamGraph,然后把 StreamGraph 构建成 JobGraph 提
交给 Flink 集群主节点
2、然后启动的 JobMaster 在接收到 JobGraph 后,会对其进行并行化生成 ExecutionGraph 后调度
启动 Str
深入理解Apache Flink核心技术
CSDN 人工智能
02-18
4010
作者:李呈祥
作者简介:Intel BigData Team软件工程师,主要关注大数据计算框架与SQL引擎的性能优化,Apache Hive Committer,Apache Flink Contributor。
责任编辑:仲浩(zhonghao@csdn.net)
文章来源:《程序员》2月期
版权声明:本文为《程序员》原创文章,未经允许不得转载,订阅2016年《程...
Flink的计算方式
初心江湖路的博客
05-09
1489
首先看一张来自官网的Flink运行时架构图
看图说话,先总结下Flink计算引擎的几个抽象:
管理抽象:
JobManager (Master) 负责调度任务执行、负责指挥进行检查点、负责任务失败容错恢复等。
TaskManager (Worker) 负责具体任务的执行、缓冲和交换数据流等。
每个管理者都对应着独立的JVM进程。
执行抽象:
Task,本质上都回归到线程执行具体的task。
我们先不论资源管理方式。可以看到,资源被划分为细粒度的Slot。Flink Job也跟Spark Job一样,均以T
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:技术黑板
设计师:CSDN官方博客
返回首页
hxcaifly
CSDN认证博客专家
CSDN认证企业博客
码龄5年
暂无认证
111
原创
3万+
周排名
37万+
总排名
32万+
访问
等级
4230
积分
391
粉丝
290
获赞
152
评论
840
收藏
私信
关注
热门文章
【有监督分箱】方法一:卡方分箱
41693
【NLP技术】:NLP简单介绍
18284
【有监督分箱】方法二: Best-KS分箱
12652
如何解决数据不平衡问题
10247
Flink提交任务(总篇)——执行逻辑整体分析
9767
分类专栏
招聘
1篇
生活杂记
3篇
任务调度系统
4篇
JVM
15篇
Java设计模式
23篇
Flink原理和应用
29篇
Java多线程编程
9篇
Java网络编程
5篇
后台开发
8篇
Python
4篇
数据挖掘和机器学习
15篇
NLP
3篇
java
70篇
Flink
31篇
Hadoop
4篇
Spark
10篇
数据库
7篇
JVM
6篇
大数据平台
6篇
计算机基础知识
6篇
java网络编程
5篇
Scala
1篇
编译原理
生活
3篇
golang
1篇
Spring
5篇
spring boot
1篇
ElasticSearch
1篇
微服务
3篇
leetcode
1篇
存储
1篇
Web开发
1篇
最新评论
【任务调度系统第四篇】:Quartz的原理
稳定的穷:
解读的太好了,感觉必须学完spring源码看这个终于不废劲了
【Flink图计算源码解析】开篇:Flink图计算总览
canaryW:
如果对gelly感兴趣可以先从pregel论文看起,整明白了分布式图计算的逻辑然后到github看看能不能contribute
【Flink图计算源码解析】开篇:Flink图计算总览
JZL要努力啊:
你好,作为研究生,对flink感兴趣,希望能对其做些研究,请问前辈有什么建议吗?
【任务调度系统第二篇】:XXL Job源码分析
excusme:
说的springboot怎么例子用的是还是spring的xml
[Flink原理介绍第四篇】:Flink的Checkpoint和Savepoint介绍
晴初1997:
牛的
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
蚂蚁金服消费金融风险管理技术团队期待你的加入
【Web开发】:HTTP响应状态码总结
【存储】:《Column-Stores vs. Row-Stores》读后感
2020年1篇
2019年94篇
2018年84篇
目录
目录
分类专栏
招聘
1篇
生活杂记
3篇
任务调度系统
4篇
JVM
15篇
Java设计模式
23篇
Flink原理和应用
29篇
Java多线程编程
9篇
Java网络编程
5篇
后台开发
8篇
Python
4篇
数据挖掘和机器学习
15篇
NLP
3篇
java
70篇
Flink
31篇
Hadoop
4篇
Spark
10篇
数据库
7篇
JVM
6篇
大数据平台
6篇
计算机基础知识
6篇
java网络编程
5篇
Scala
1篇
编译原理
生活
3篇
golang
1篇
Spring
5篇
spring boot
1篇
ElasticSearch
1篇
微服务
3篇
leetcode
1篇
存储
1篇
Web开发
1篇
目录
评论 2
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
hxcaifly
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值