flink

第 5 节 Flink on yarn的两种方式

余生长醉 提交于 2020-03-07 04:37:46
上篇: 第 4 节 Flink standalone集群安装部署 如图所示: 1、Flink on Yarn 的两种使用方式 第一种【yarn-session.sh(开辟资源)+flink run(提交任务)】 (1)修改etc/hadoop/yarn-site.xml //添加参数 < property > < name > yarn . nodemanager . vmem - check - enabled < / name > < value > false < / value > < / property > (2)修改后的文件,拷贝文件到其他机器上 [ root @Flink105 hadoop - 2.7 .2 ] # scp - rq etc / hadoop / yarn - site . xml flink106 : / opt / hadoop / module / hadoop - 2.7 .2 / etc / hadoop / [ root @Flink105 hadoop - 2.7 .2 ] # scp - rq etc / hadoop / yarn - site . xml flink107 : / opt / hadoop / module / hadoop - 2.7 .2 / etc / hadoop / (3)启动hadoop集群 [

Flink安装及使用

雨燕双飞 提交于 2020-03-06 12:00:46
1、官网下载Flink ## 官网地址 $ https://flink.apache.org/downloads.html ## 下载地址 $ wget http://mirror.bit.edu.cn/apache/flink/flink-1.9.2/flink-1.9.2-bin-scala_2.11.tgz 文件保存在/root/soft目录下 2、安装 $ cd /root/soft $ sudo tar -zxf flink-1.9.2-bin-scala_2.11.tgz 3、添加环境变量 $ vim /etc/profile export FLNK_HOME=/root/soft/flink-1.9.2 export PATH=$FLINK_HOME/bin:$PATH 4、启动Flink $ /root/soft/flink-1.9.2/bin $ ./start-cluster.sh $ jps 19489 jar 24595 StandaloneSessionClusterEntrypoint 25189 Jps 25039 TaskManagerRunner 可以通过观察logs目录下的日志来检测系统是否正在运行了 $ tail log/flink-*-standalonesession-*.log JobManager同时会在8081端口上启动一个web前端

flink 常见问题整理

邮差的信 提交于 2020-03-05 21:58:31
1. xml-apis 冲突问题 javax.xml.parsers.FactoryConfigurationError: Provider for class javax.xml.parsers.DocumentBuilderFactory cannot be created java.lang.RuntimeException: Provider for class javax.xml.parsers.DocumentBuilderFactory cannot be created flink如果要操作hdfs,需要一个hadoop-hdfs的包. 如果项目里面有用dom4j相关包,就会与之有冲突,出现如下错误. 06/05/2018 11:40:40 Job execution switched to status FAILING. javax.xml.parsers.FactoryConfigurationError: Provider for class javax.xml.parsers.DocumentBuilderFactory cannot be created at javax.xml.parsers.FactoryFinder.findServiceProvider(FactoryFinder.java:311) at javax.xml.parsers

Flink科普系列之State(状态)

二次信任 提交于 2020-03-04 18:06:20
今天我们给大家介绍一下flink中的state,什么是state呢?大家可以理解为我们在处理数据的时候,每一个数据我们都会相应的为其准备一个空间存储他的变化过程 1 状态的简介 在flink中,我们是把所有的数据都可以看做是有状态的,比如我们在一个数据流中,我们要对一个数据流进行单词计数统计,但是在这个过程中,如果程序突然中断或者一些其他原因导致了我们的程序出现了fail,那这个时候我们就看可以用状态来解决这种问题!使用状态配合Checkpoint来解决就可以完美的规避掉这种生产事故的产生了! 2 State的分类 State分为两类分别是:Keyed State和Operator State。在这之上,我们的状态又分为托管状态和原始状态,在我们实际工作中,大多数都是采用的托管状态, 2.1 Keyed State Keyed State的意思就是我们的数据都是按照key进行划分的,也就是相同的key状态都会保存在一起,也就是说 苹果都跟苹果放在一起,香蕉都和香蕉放在一起,方便管理和操作! 其中我们一共有以下几种储存数据的方式如下: ValueState:单值状态并且与key绑定,可以通过update进行更新,和value进行取值 ListState:可以把这个理解为我们把数据的状态都存放在一个list上,然后我们就可以使用list的方法啦,很是方便! ReducingState

实时计算与SparkSteaming的对比

谁说我不能喝 提交于 2020-03-04 15:14:22
实时计算概述 实时计算 阿里云实时计算(Alibaba Cloud Realtime Compute)是一套基于Apache Flink构建的一站式、高性能实时大数据处理平台,广泛适应于流式数据处理、离线数据处理等场景,最重要的一点是免运维,可以为企业节省了大量的成本。 产品模式 阿里云的实时计算产品模式有Flink云原生版和独享模式。目前Flink云原生版支持部署于容器服务ACK提供的Kubernetes。独享模式是指在阿里云ECS上单独为用户创建的独立计算集群。单个用户独享计算集群的物理资源(网络、磁盘、CPU或内存等),与其它用户的资源完全独立。独享模式分为包年包月和按量付费两种方式。 Flink简介 Flink是开源的流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。它的特点是支持高吞吐、低延迟、高性能的流处理,支持带有事件时间的窗口(Window)操作,支持有状态计算的Exactly-once语义,支持基于轻量级分布式快照(Snapshot)实现的容错,同时支持Batch on Streaming处理和Streaming处理,Flink在JVM内部实现了自己的内存管理,支持迭代计算,支持程序自动优化,避免特定情况下Shuffle、排序等昂贵操作,中间结果有必要进行缓存。 Flink架构图 阿里云的程序提交主要从客户端进行提交。其中

Flink系列之1.10数据流编程模型

瘦欲@ 提交于 2020-03-04 00:07:50
前段时间刚出来的flink 1.10版本,大家满怀期待,热情高涨,这是flink社区迄今为止规模最大的一次版本升级,下面呢,我就主要从八个地方介绍下升级后的flink中的数据流编程模型。 1.抽象级别 Flink提供了四个级别的抽象来开发流/批处理应用程序。 最低级别的抽象仅提供状态流。它 通过Process Function嵌入到DataStream API中。它允许用户自由地处理一个或多个流中的事件,并使用一致的容错状态。此外,用户可以注册事件时间和处理时间回调,从而允许程序实现复杂的计算。 实际上,大多数应用程序不需要上述低级抽象,而是针对核心API进行编程, 例如DataStream API(有界/无界流)和DataSet API(有界数据集)。这些API提供了用于数据处理的通用构件,例如各种形式的用户指定的转换,联接,聚合,窗口,状态等。这些API中处理的数据类型以相应编程语言中的类表示。 低级别的Process Function与DataStream API集成在一起,从而可以仅对某些操作进行低级别抽象。该数据集API提供的有限数据集的其他原语,如循环/迭代。 该Table API是为中心的声明性DSL 表,其可被动态地改变的表(表示流时)。该Table API遵循(扩展)关系模型:表有一个模式连接(类似于在关系数据库中的表)和API提供可比的操作,如选择,项目,连接

Flink DataStream 关联维表实战

拟墨画扇 提交于 2020-03-03 21:03:46
上篇博客提到 Flink SQL 如何 Join 两个数据流,有读者反馈说如果不打算用 SQL 或者想自己实现底层操作,那么如何基于 DataStream API 来关联维表呢?实际上由于 Flink DataStream API 的灵活性,实现这个需求的方式是非常多样的,但是大部分用户很难在设计架构时就考虑得很全面,可能会走不少弯路。 针对于此,笔者根据工作经验以及社区资源整理了用 DataStream 实现 Join 维表的常见方式,并给每种的方式优劣和适用场景给出一点可作为参考的个人观点。 衡量指标 总体来讲,关联维表有三个基础的方式:实时数据库查找关联(Per-Record Reference Data Lookup)、预加载维表关联(Pre-Loading of Reference Data)和维表变更日志关联(Reference Data Change Stream),而根据实现上的优化可以衍生出多种关联方式,且这些优化还可以灵活组合产生不同效果(不过为了简单性这里不讨论同时应用多种优化的实现方式)。对于不同的关联方式,我们可以从以下 7 个关键指标来衡量(每个指标的得分将以 1-5 五档来表示): 实现简单性: 设计是否足够简单,易于迭代和维护。 吞吐量: 性能是否足够好。 维表数据的实时性: 维度表的更新是否可以立刻对作业可见。 数据库的负载:

基于flink的Mapreduce嵌入式开发

眉间皱痕 提交于 2020-03-03 06:06:32
Flink与Apache Hadoop MapReduce接口兼容,因此允许重用Hadoop MapReduce实现的代码。 本文简述实际项目中Mapreduce在flink中的应用,task结构如下: 1.引入依赖 < dependency > < groupId > org . apache . flink < / groupId > < artifactId > flink - streaming - java_2 . 11 < / artifactId > < version > $ { project . version } < / version > < / dependency > 2.task写法 public class CarrierTask { public static void main ( String [ ] args ) { final ParameterTool params = ParameterTool . fromArgs ( args ) ; // 设置环境变量 final ExecutionEnvironment env = ExecutionEnvironment . getExecutionEnvironment ( ) ; // 设置全局参数 env . getConfig ( ) . setGlobalJobParameters

Flink怎么去控制window

梦想与她 提交于 2020-03-02 15:07:00
window分类 Flink的DataStream API提供了基于Count Window,Time Window和Session Window。三者其实就是计算的单位不同, TimeWindow TimeWindow是基于时间的,能够在一定时间内,收集到一定的数据,从而触发Window的操作。常见的有Sliding Time Window和Tumbling Time Window 👌Sliding Time Window 中文翻译过来就是滑动时间窗口。它在Flink里面需要两个参数,就是每个多久计算多大Window的事件。下面这个图sliding size是2也就是每隔多久,而window size是窗口Window大小,从而理解长每个2个事件单位就生成一个窗口,每个窗口大小为3个时间单位,因为2<3,所以就会有重复计算的某个时间点的内容,这主要是因为滑动窗口它滑过去的时候会有重叠的内容 . timeWindow ( Time . seconds ( 2 ) , Time . seconds ( 1 ) ) //这个就是每隔1秒,生成一个2秒大小的window 👌Tumbling Time Window 中文翻译过来就是滚动时间窗口,这个是滚动的,我们平常用轮子去滚动地面的时候,是不会有重复经过的路的,它一定是一直往前的。那么Tumbling Time

Flink 1.10 新特性研究

会有一股神秘感。 提交于 2020-03-02 10:27:25
Flink 1.10 release 文档描述了一些比较重要的点,比如配置、操作、依赖、1.9 版本和 1.10 版本之间的区别,如果你准备将 Flink 升级到 1.10 版本,建议仔细看完下面的内容。 集群和部署 •文件系统需要通过插件的方式加载•Flink 客户端根据配置的类加载策略加载,parent-first 和 child-first 两种方式•允许在所有的 TaskManager 上均匀地分布任务,需要在 flink-conf.yaml 配置文件中配置 cluster.evenly-spread-out-slots: true 参数•高可用存储目录做了修改,在 HA_STORAGE_DIR/HA_CLUSTER_ID 下, HA_STORAGE_DIR 路径通过 high-availability.storageDir 参数配置, HA_CLUSTER_ID 路径通过 high-availability.cluster-id 参数配置•当使用 -yarnship 命令参数时,资源目录和 jar 文件会被添加到 classpath 中•移除了 --yn/--yarncontainer 命令参数•移除了 --yst/--yarnstreaming 命令参数•Flink Mesos 会拒绝掉所有的过期请求•重构了 Flink 的调度程序,其目标是使调度策略在未来可以定制