flink

flink业务使用记录

让人想犯罪 __ 提交于 2020-04-06 05:07:40
flink业务使用记录 部署好flink集群,我的模式是flink on yarn 新建flink处理逻辑代码模块 将该模块打成可执行的jar放到整个项目中 在flink客户端执行提交作业操作 在flink管理页面上查看业务详情。 Flink窗口函数(Window Functions) 定义完窗口分配器后,我们还需要为每一个窗口指定我们需要执行的计算,这是窗口的责任,当系统决定一个窗口已经准备好执行之后,这个窗口函数将被用来处理窗口中的每一个元素(可能是分组的)。 请参考: https://ci.apache.org/projects/flink/flink-docs-release-1.3/dev/windows.html#triggers 来了解当一个窗口准备好之后,Flink是如何决定的。   window函数可以是 ReduceFunction , FoldFunction 或者 WindowFunction 中的一个。前面两个更高效一些(),因为在每个窗口中增量地对每一个到达的元素执行聚合操作。一个 WindowFunction 可以获取一个窗口中的所有元素的一个迭代以及哪个元素属于哪个窗口的额外元信息。   有 WindowFunction 的窗口化操作会比其他的操作效率要差一些,因为Flink内部在调用函数之前会将窗口中的所有元素都缓存起来。这个可以通过

Flink之Unio、coflatmap、CoGroup、Join以及Connect

你离开我真会死。 提交于 2020-04-05 23:07:41
Flink之Unio、coflatmap、CoGroup、Join以及Connect 问题导读 1.Flink 双数据流转换为单数据流操作有哪些? 2.cogroup, join和coflatmap各自完成什么事情? 3.cogroup, join和coflatmap区别是什么? Flink 双数据流转换为单数据流操作的运算有cogroup, join,coflatmap与union。下面为大家对比介绍下这4个运算的功能和用法。 Join:只输出条件匹配的元素对。 CoGroup: 除了输出匹配的元素对以外,未能匹配的元素也会输出。 CoFlatMap:没有匹配条件,不进行匹配,分别处理两个流的元素。在此基础上完全可以实现join和cogroup的功能,比他们使用上更加自由。 join实例代码如下: private static DataStream<PositionJoinModel> PositionTestJoin( DataStream<ZongShu> grades, DataStream<ZongShu> salaries, long windowSize) { DataStream<PositionJoinModel> apply =grades.join(salaries) //join的条件stream1中的某个字段和stream2中的字段值相等 .where

Flink 流处理API之二

本秂侑毒 提交于 2020-04-04 19:28:00
1、Transform 1.1 map val streamMap = stream.map { x => x * 2 } 1.2 flatmap flatMap的函数签名: def flatMap[A,B](as: List[A])(f: A ⇒ List[B]): List[B] 例如: flatMap(List(1,2,3))(i ⇒ List(i,i)) 结果是 List(1,1,2,2,3,3) 而 List("a b", "c d").flatMap(line ⇒ line.split(" ")) 结果是 List(a, b, c, d) val streamFlatMap = stream.flatMap{ x => x.split(" ") } 1.3 filter val streamFilter = stream.filter{ x => x == 1 } 1.4 keyby DataStream→ KeyedStream :逻辑地将一个流拆分成不相交的分区,每个分区包含具有相同key的元素,在内部以hash的形式实现的。 val streamKeyby = stream.keyBy(0) 1.5 滚动聚合算子(Rolling Aggregation) 这些算子可以针对KeyedStream的每一个支流做聚合。 sum() min() max() minBy()

实践指路明灯,源码剖析flink-metrics

自闭症网瘾萝莉.ら 提交于 2020-04-04 10:23:15
1. 通过上期的分享,我们对 Metrics 类库有了较深入的认识,并对指标监控的几个度量类型了如指掌。 本期,我们将走进当下最火的流式处理框架 flink 的源码,一同深入并学习一下别人家的代码。 2. 会当凌绝顶,一览众山小。先从全局了解个梗概,然后再采用剥洋葱的方式逐层去解密。 我本地的源码是 flink-1.8.1 版本,打开 源码,进入 flink-metrics 模块,发现很多以 flink-metrics-开头的系列模块。 映入眼帘的 flink-metrics 系列模块虽然很多,不用发愁。 其实主要分为指标监控基础核心模块( flink-metrics-core ),以及指标数据监控组件集成模块( flink-metrics-xxx )两大类。 2.1. flink-metrics-core 模块剖析。 开篇提到 Metrics 的几种度量类型,来看看 flink 是咋定义的? 打开指标监控基础核心模块 flink-metrics-core 看个梗概。 不出我们所料,flink 定义了 Metrics 监控中常见的几种度量规范(Meter、Gauge、Counter、Histogram),画个简易的类图再看的明白些。 不过为了便于管理和区分 Metric,于是就有了 MetricGroup 的定义,那么编码时可以直接与 MetricGroup 交互就可以啦。 到这

CDH6.2 配置flink服务

醉酒当歌 提交于 2020-04-03 16:20:24
希望把flink也集成到cm管理平台,方便日常维护,但是cdh6.3后才支持flink服务,不能为了集成flink升级cdh版本。 现有的cdh6.2平台,通过cm管理,无法直接添加flink服务,如下图显示,并没有flink选项。 ====================================== 解决方法: 通过以下链接,下载cdh中的flink。 https://archive.cloudera.com/csa/1.0.0.0/ 本次选择的是 FLINK-1.9.0-csa1.0.0.0-cdh6.3.0-el7.parcel FLINK-1.9.0-csa1.0.0.0-cdh6.3.0-el7.parcel.sha 在另外一个目录下载jar文件 FLINK-1.9.0-csa1.0.0.0-cdh6.3.0.jar 把下载的FLINK-1.9.0-csa1.0.0.0-cdh6.3.0.jar 上传到集群中host1节点的/opt/cloudera/csd目录下。 把下载后的文件传到host1节点的/opt/cloudera/parcel-repo目录下,在cm管理界面对加入的flink的parcel进行分配和激活. 对flink进行分配和激活 分别重启clouder-scm-server和cloudera-scm-agent服务 systemctl stop

Flink Kafka Connector 与 Exactly Once 剖析

限于喜欢 提交于 2020-03-30 14:33:50
Flink Kafka Connector 是 Flink 内置的 Kafka 连接器,它包含了从 Kafka Topic 读入数据的 Flink Kafka Consumer 以及向 Kafka Topic 写出数据的 Flink Kafka Producer,除此之外 Flink Kafa Connector 基于 Flink Checkpoint 机制提供了完善的容错能力。本文从 Flink Kafka Connector 的基本使用到 Kafka 在 Flink 中端到端的容错原理展开讨论。 1.Flink Kafka 的使用 在 Flink 中使用 Kafka Connector 时需要依赖 Kafka 的版本,Flink 针对不同的 Kafka 版本提供了对应的 Connector 实现。 1.1 版本依赖 既然 Flink 对不同版本的 Kafka 有不同实现,在使用时需要注意区分,根据使用环境引入正确的依赖关系。 <dependency> <groupId>org.apache.flink</groupId> <artifactId>${flink_kafka_connector_version}</artifactId> <version>${flink_version}</version> </dependency> 在上面的依赖配置中 ${flink

Flink SQL DDL

二次信任 提交于 2020-03-25 09:11:26
Flink 1.10版本支持SQL DDL的特性,本文章以从kafka消费数据,写入jdbc为例介绍整个流程。具体操作如下: 1.下载flink1.10的安装包并解压: https://www.apache.org/dist/flink/flink-1.10.0/flink-1.10.0-bin-scala_2.11.tgz 进入flink的lib目录,采用wget或是本地下载拷贝的方式下载依赖的connector ,需要的依赖有 flink-json-1.10.0.jar,flink-sql-connector-kafka_2.11-1.10.0.jar, flink-jdbc_2.11-1.10.0.jar, mysql-connector-java-5.1.48.jar 2.执行./bin/start-cluster.sh启动flink集群,启动成功后可以在 http://localhost:8081 访问到 Flink Web UI。 3.执行./bin/sql-client.sh embedded 启动 SQL CLI。便会看到松鼠欢迎的界面, 4.使用DDL建立数据源表 CREATE TABLE source_table ( id BIGINT, name STRING, score BIGINT ) WITH ( 'connector.type' = 'kafka',

使用idea开发flink报错

梦想与她 提交于 2020-03-20 07:20:12
使用idea开发flink报错,就是普通的读取文本内容,进行单词计数。scala版本是2.11.12,flink是1.8.1 报错信息如下: Exception in thread “main” java.lang.NoSuchMethodError: akka.actor.ActorSystemImpl.(Ljava/lang/String;Lcom/typesafe/config/Config;Ljava/lang/ClassLoader;Lscala/Option;Lscala/Option;Lakka/actor/setup/ActorSystemSetup;)V at akka.actor.RobustActorSystem.(RobustActorSystem.scala:41) at akka.actor.RobustActorSystem.internalApply(RobustActorSystem.scala:89) at akka.actor.RobustActorSystem.internalApply(RobustActorSystem.scala:89)atakka.actor.RobustActorSystem.apply(RobustActorSystem.scala:70) at akka.actor.RobustActorSystem

Flink总结-设置Jvm参数

佐手、 提交于 2020-03-17 08:32:24
jvm设置 http://www.360doc.com/content/12/1023/16/9615799_243296263.shtml 堆设置 -Xms :初始堆大小 -Xmx :最大堆大小 -XX:NewSize=n :设置年轻代大小 -XX:NewRatio=n: 设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRatio=n :年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5 -XX:MaxPermSize=n :设置持久代大小 收集器设置 -XX:+UseSerialGC :设置串行收集器 -XX:+UseParallelGC :设置并行收集器 -XX:+UseParalledlOldGC :设置并行年老代收集器 -XX:+UseConcMarkSweepGC :设置并发收集器 垃圾回收统计信息 -XX:+PrintHeapAtGC GC的heap详情 -XX:+PrintGCDetails GC详情 -XX:+PrintGCTimeStamps 打印GC时间信息 -XX:+PrintTenuringDistribution 打印年龄信息等 -XX:

Flink基础(一):什么是Flink

允我心安 提交于 2020-03-17 01:53:08
flink系列文章中,flink版本是1.9.0 什么是flink 引用官网的一句话:数据流上的有状态计算。 优势 Flink 提供了 State、Checkpoint、Time、Window 等,它们为 Flink 提供了容错性、实效性等优势。 部署方式 Local:直接在 IDE 中运行 Flink Job 时则会在本地启动一个 mini Flink 集群。 Standalone:在 Flink 目录下执行 bin/start-cluster.sh 脚本则会启动一个 Standalone 模式的集群。 YARN:YARN 是 Hadoop 集群的资源管理系统,它可以在群集上运行各种分布式应用程序,Flink 可与其他应用并行于 YARN 中。 Kubernetes:Kubernetes 是 Google 开源的容器集群管理系统,在 Docker 技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性,Flink 也支持部署在 Kubernetes 上,在 GitHub 看到有下面这种运行架构的。 作业提交架构流程 Job Client:Job Client 不是 Flink 程序执行的内部部分,但它是任务执行的起点。Job Client 负责接受用户的程序代码,然后创建数据流,将数据流提交给 Job