Flink
乘风如水
知识的对立面不是无知,而是不去思考。
展开
-
Flink中Slot概念理解
Flink中slot数量代表了所有最高能支持的subtask数量。也就是整个任务的最高并发度,但是并不代表一个线程的概念,内部也是可以启动很多线程的。原创 2020-12-04 18:20:29 · 1956 阅读 · 3 评论 -
记一次Flink任务Full gc的问题排查
最近发现flink任务vc_lark_rtc_event_job_new_test会每隔一两天会造成上游topic消费积压,后来发现是因为full gc(Full GC(Ergonomics)通过TM中的gc.log.0.current日志文件查看)频繁导致cpu飙升,造成数据处理不过来造成积压,查看Dtop监控可以看到然后进入到tm中,如下图:点击webshell,...原创 2020-03-29 18:29:25 · 5394 阅读 · 3 评论 -
flink深入研究(12) DataStream类中keyBy函数调用流程
这里再贴一下相关代码:// 连接socket获取输入的数据 DataStreamSource<String> text = env.socketTextStream("localhost", port, "\n"); // 计算数据 DataStream<WordWithCount> windowCount = text.flatMap(new Flat...原创 2020-01-31 15:59:14 · 3630 阅读 · 0 评论 -
flink深入研究(11) DataStream类中flatMap函数调用流程
flatMap算子和map有些相似,输入都是数据流中的每个元素,与之不同的是,flatMap的输出可以是零个、一个或多个元素,它的输出元素放在了Collector类对象中,接下来我们进入到代码中来进行分析,我们使用示例如下:// 计算数据DataStream<WordWithCount> windowCount = text.flatMap(new FlatMapFunctio...原创 2020-01-20 09:44:12 · 2868 阅读 · 2 评论 -
flink深入研究(10) env.socketTextStream("localhost", port, "\n")调用流程02
上篇我们讲解类一部分数据源operator的生成,下面继续从addSource开始讲解,代码如下:/** * Ads a data source with a custom type information thus opening a * {@link DataStream}. Only in very special cases does the user need to *...原创 2020-01-09 08:40:10 · 1739 阅读 · 0 评论 -
flink深入研究(09) env.socketTextStream("localhost", port, "\n")调用流程01
数据源有多种:1、基于集合:有界数据集,更偏向于本地测试用2、基于文件:适合监听文件修改并读取其内容3、基于 Socket:监听主机的 host port,从 Socket 中获取数据4、自定义 addSource:大多数的场景数据都是无界的,会源源不断的过来。比如去消费 Kafka 某个 topic 上的数据,这时候就需要用到这个 addSource,可能因为用的比较多的原因吧,...原创 2020-01-01 12:24:14 · 3756 阅读 · 0 评论 -
flink深入研究(08) flink的StreamExecutionEnvironment.execute()函数调用过程02
上一篇我们讲到了ClosureCleaner的clean函数,这一篇我们继续往下分析,在clean函数中又调用了另外一个clean函数clean(func, level, checkSerializable, Collections.newSetFromMap(new IdentityHashMap<>()));代码如下:private static void clean(Obj...原创 2019-12-22 15:23:54 · 2328 阅读 · 0 评论 -
flink深入研究(07) flink的StreamExecutionEnvironment.execute()函数调用过程01
今天我们开始分析Flink中第一个流程图StreamGraph的生成,StreamGraph 相关的代码主要在org.apache.flink.streaming.api.graph包中。构造StreamGraph的入口函数是StreamGraphGenerator.generate(env, transformations)。该函数会由触发程序执行的方法StreamExecutionEnv...原创 2019-12-21 22:01:59 · 2079 阅读 · 0 评论 -
flink深入研究(06) flink的程序启动过程---01 flink的Graph
真正开始运行代码的是execute函数,这个函数会根据环境上下文采取不同的行为,这个我们后面会详细讲解,我们先来看看flink的架构,下图是结构图flink架构图当 Flink 集群启动后,首先会启动一个 JobManger 和一个或多个的 TaskManager。由 Client 提交任务给 JobManager,JobManager 再调度任务到各个 TaskManager 去执行,然后 ...原创 2019-12-19 09:18:33 · 671 阅读 · 0 评论 -
flink深入研究(05) 算子operator
flink的整个数据处理流程是由一个个operator组成的,数据从源头开始传递给一个个operator进行链式处理,每一个处理逻辑就是一个operator,一个operator包含一个输入、一个处理逻辑、一个输出,operator是在TaskManager的slot中执行的,一个slot就是一个线程,一个operator只能在一个slot中执行,一个slot中可以运行多个operator(同一个...原创 2019-12-17 08:47:55 · 1727 阅读 · 0 评论 -
flink深入研究(04) flink的启动方式
Flink可以在单台机器上运行,甚至是单个Java虚拟机(Java Virtual Machine)。这种机制使得用户可以在本地测试或者调试Flink程序。Flink的启动方式总共有三种部署方式,local、standalone、Yarn。local方式:该方式是在Java虚拟机上运行Flink程序,或者是在正在运行程序的Java虚拟机上,像我们在IDE上直接运行就是采用的local方式,...原创 2019-12-14 08:29:02 · 2095 阅读 · 1 评论 -
flink深入研究(03) flink运行环境的获取(下)
上篇我们讲到了createStreamExecutionEnvironment函数,我们这里再贴一下代码:private static StreamExecutionEnvironment createStreamExecutionEnvironment() { // because the streaming project depends on "flink-clients" (an...原创 2019-12-08 09:43:14 · 1068 阅读 · 0 评论 -
flink深入研究(02) flink运行环境的获取(上)
// 获取运行环境StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();这行代码会返回一个可用的执行环境,是flink程序执行的上下文,记录了相关配,如并行度等,并提供了一系列方法,如输入流的读入方法,运行整个程序的execute方法等,对于分步式流处理程序来说,flatM...原创 2019-12-04 08:35:19 · 1479 阅读 · 0 评论 -
flink深入研究(01) flink本地部署
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。此外,Flink的运行时本身也支持迭代算法的执行(来自百度百科的定义)。说白了就是flink是一个开源的分布式、高性能的流式处理框架,用于实时处理海量数据。在详细讲...原创 2019-11-28 08:39:09 · 339 阅读 · 0 评论 -
Flink说明文档介绍---分布式运行环境
1、任务与操作链分布式执行时,Flink将操作子任务按照相应的连接顺序放入到任务中,每一个任务都在单独的线程中执行,将多个操作连接到一个任务中是非常有用的优化:它减少了线程与线程之间传输与缓冲的开销,并且在降低延迟的同时增加了吞吐量。连接行为是可以配置的,详细请见连接文档。下图中示例数据流有5个子任务,因此有5个并行线程。2、Job Managers, Task Managers,...翻译 2018-08-21 18:58:23 · 363 阅读 · 0 评论 -
Flink说明文档介绍---数据流编程模型
文章内容是通过相应的链接地址翻译过来的抽象等级程序和数据流并行数据流窗口时间有状态的操作针对检查点的容错批处理流下一步Flink提供不同级别的抽象来开发流/批处理应用程序。接下来我们针对上面的每一个部分进行分析。1、抽象等级Stateful Stream Processing:是最低级别的抽象,它通过Process Function嵌套到Da...翻译 2018-08-21 11:38:37 · 697 阅读 · 0 评论