Flink之旅
Posted Nathon的学习笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink之旅相关的知识,希望对你有一定的参考价值。
Flink作为新一代的大数据计算处理框架,业界也有越来越多的人开始投产。当前最新的Flink版本已经到了1.6.1,在我们发觉spark迅猛发展同时,不得不给Flink的崛起点赞。
Flink 是一个针对流数据和批数据的分布式处理引擎。对 Flink 而言,主要运用场景就是流数据,批数据只是流数据的一个极限特例而已。换言之,Flink 会把所有任务当成流来处理,这也是其最大的特点,而spark本质上还只是微批处理,利用短批次来模仿流式的效果,其时延上跟真正的流式处理还是有差异。所以,spark作为准实时的代表,而Flink是真正意义上的实时。
下面来看看,在集群上Flink的一个Demo。我的环境是hadoop3.1+flink1.6.1+scala2.12.5.
Flink的集群上最简单配置只需flink-conf.yaml文件,将对应节点的信息写入到rpc.address即可。主节点上会有Standalonesession进程,两个从节点会有TaskManager进程。
接下来,看看Flink的实时数据处理。我在主节点上监听端口9999,nc -lk 9999.
并且将计算的jar包准备好,例如SocketWindowWordcount.从界面上可以看到当前正在运行的job。
此时在监听主节点上输入任意数据,可以在从节点上的日志里面找到统计结果,具体在哪个从节点上找到对应结果的日志,可以通过界面job里面的详细信息看到:
从结果中看出,当第一批数据传输完后,结果会统计出来有3个flink,1个spark;当第二批数据传输后,才会有3个spark,1个hive等。所以这里体现了flink架构上又一个特点,Exactly-once。换言之,算子可能会被重复调度多次(异常情况发生),但无论被重复执行多少遍,都保证一份输入有且仅有一次产出可以被下游获取到。这样能做到不丢不重也不能保证算子不被重算,但可以保证下游收到的数据一定是不丢不重的。
以上是关于Flink之旅的主要内容,如果未能解决你的问题,请参考以下文章