![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
flink
tydhot
gogogo
展开
-
flink CompactingHashTable源码解析
CompactingHashTable是使用flink管理内存的hash表。这个table被设计分为两个部分,一部分是hash索引,用来定位数据的具体位置,而另一部分则是被分区的内存buffer用来存储具体的内存数据。private final ArrayList<MemorySegment> availableMemory;availableMemory为当前fl...原创 2020-03-15 11:42:40 · 236 阅读 · 0 评论 -
一个简单的Kafka Flink Rabbitmq Demo
https://github.com/tydhot/Kafka-Flink-Rabbitmq-Demo原创 2019-02-11 01:31:34 · 1946 阅读 · 0 评论 -
flink中akka的使用 以jobClient提交任务为例子
在flink中,集群内部的组件之间通过akka来互相通信,其中采用了akka中的actor模型。当需要提交一个可用的任务交由jobManager来处理并分配资源时,将会在ClusterClinet中的run()方法中,交由jobClient通过submitJobAndWait()方法去提交相应的jobGraph给jobManager。public JobExecutionResult r...原创 2019-02-09 15:31:52 · 1263 阅读 · 1 评论 -
flink streamGraph生成jobGraph
当需要通过streamGraph生成jobGraph的时候,通过StreamingJobGraphGenerator的createJobGraph()方法来生成。public static JobGraph createJobGraph(StreamGraph streamGraph, @Nullable JobID jobID) { return new StreamingJobGr...原创 2019-02-08 09:51:47 · 1505 阅读 · 0 评论 -
flink streamGraph生成
当完成DataStream的配置后,调用其中环境上下文StreamExecutionEnvironment的getStreamGrahph()方法即可生成关于该DataStream的streamGraph。@Internalpublic StreamGraph getStreamGraph() { if (transformations.size() <= 0) { ...原创 2019-02-07 02:25:12 · 483 阅读 · 0 评论 -
flink Datastream组装
transformation是flink中stream的静态对象,通过组装包含sink和source的transformation根据定义的代码可以组成stream的静态拓扑图,如下所示:* Source Source* + +* | |* v ...原创 2019-02-05 10:37:51 · 469 阅读 · 0 评论 -
flink source和sink
flink中的source作为整个stream中的入口,而sink作为整个stream的终点。 SourceFunction为所有flink中source的根接口,其定义了run()方法和cancel()方法。在SourceFunction中的run()方法用以作为source向整个stream发出数据,并用以控制数据的进入。在大部分的source中,会在run()方法中对数据的发...原创 2019-02-04 08:23:48 · 8949 阅读 · 1 评论 -
flink中的HybirdmemorySegment
Flink使用MemorySegment来管理内存,同时也是flink中内存的抽象。MemorySegment的实现也分为HeapMemorySegment和HybirdMemorySegment。其中,HeapMemorySegment实现很简单,数据通过其内部的byte[]数组来实现。 HybirdmemorySegment既可以使用堆内内存,也可以使用堆外内存。如何来确认使用...原创 2018-11-19 00:22:25 · 901 阅读 · 0 评论 -
flink的内存管理器MemoryManager
Flink中通过MemoryManager来管理内存。在MemoryManager中,根据要管理的内存的总量和和每个内存页的大小得到内存页的数量生成相应大小数量的内存页来作为可以使用的内存。public MemoryManager(long memorySize, int numberOfSlots, int pageSize, MemoryType ...原创 2018-11-20 22:32:29 · 2336 阅读 · 0 评论 -
flink的MemorySegment
Flink中MemorySegment用来管理内存,其是一个抽象类,具体实现有HeapMemorySegment和HybirdMemorySegment。protected static final long BYTE_ARRAY_BASE_OFFSET = UNSAFE.arrayBaseOffset(byte[].class);BYTE_ARRAY_BASE_OFFSET是byte数...原创 2018-11-22 01:28:57 · 1073 阅读 · 0 评论 -
flink int序列化
Flink中int的存储并不是直接通过int来存储,而是通过IntValue来存储,这样在内存中只需要存储4个字节大小的数据就可以保证单个int数据的存储。private int value;在IntValue中用value字段来保存所需要的int字段。 在IntValue中值得一提的是copyNormaliedKey()方法。@Overridepublic void c...原创 2018-12-04 02:25:41 · 430 阅读 · 0 评论 -
flink 任务执行类的加载
执行具体任务的TaskManager在要执行向相应的具体的任务之前,都是通过submitTask()方法得到具体所要执行的任务的。在submitTask()中,部署的任务信息并不包含具体所要执行的目标任务类jar包。 所要任务的抽象是Task类。其实现了Runnnable接口,自然提供了run()方法可提供给线程进行调用。在其构造方法中,以自身为target作为Thread构造函数的参...原创 2018-12-08 18:19:37 · 3174 阅读 · 0 评论 -
flink网络缓冲池
Flink的网络缓冲池NetworkBufferPool。构造方法需要两个参数,申请的MemorySegment个数和单个MemorySegment的大小,两者乘积是整个内存缓冲池的总容量。内部存储结构是一个队列,未分配的MemorySegment存储在队列当中,当被分配时会从内存中取出。try { this.availableMemorySegments = new Arra...原创 2018-12-18 00:09:55 · 1148 阅读 · 0 评论