flink-简介以及安装

简介

在这里插入图片描述

简介

pache flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink被设计在素有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。flink诞生很早,2010年,但是2015年才开始爆发热度,在flink被apache提升为顶级项目后,阿里实时计算团队决定在阿里内部建立一个flink的分支blink,并对flink进行大量的修改和完善,让其适应阿里巴巴这种超大规模的业务场景。
Blink由2016年上线,服务于阿里集团内部搜索、推荐、广告和蚂蚁等大量核心实时业务。于2019年1月Blink正式开源,目前阿里70%的技术部门都有使用该版本,
Blink比起flink的优势就是对SQL语法的更完善的支持以及执行sql的性能提升

重要特点

事件驱动型(Event-driven)

事件驱动型应用是一类具有状态的应用,它从一个或者多个事件流提取数据,并根据到来的事件触发计算、状态更新或者其他外部动作。比较典型的就是以kafka为代表的消息队列几乎都是事件驱动形应用。
与之不同的就是SparkStreaming微批次,如图:
在这里插入图片描述
事件驱动型
在这里插入图片描述

流与批

批处理的特点是有界、持久、大量,非常适合需要访问全套记录才能完成的计算工作,一般用于离线统计。
流处理的特点是无界、实时,无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作,一般用于实时统计
在spark的世界观中,一切由批次组成,离线数据是一个大批次,而实时数据是由一个一个无限的小批次组成的。
而在flink的世界观中,一切都是由流组成的,离线数据是有界限的流,实时数据是一个没有界限的流,这就是所谓的有限流和无限流。
这种以流为世界观的架构,获得的最大好处就是具有极低的延迟。

分层api

在这里插入图片描述
最底层级别的抽象仅仅提供了有状态流,它将通过过程函数(Process Function)被嵌入到DataStream API中。底层过程函数(Process Function)与DataStream API相集成,使其可以对某些特定的操作进行底层的抽象,它允许用户可以自由地处理来自一个或者多个数据流的事件,并使用一直的容错的状态。除此之外用户可以注册事件事件并处理时间回调,从而使得程序可以处理复杂的计算。
实际上,大多数应用并不需要上述的底层抽象,而是针对核心api(Core APIS)进行编程,比如有dataStream API(有界或者无界流数据)以及datasetapi(有界数据集)。

这些API为数据处理提供了通用的构建模块,比如由用户定义的多种形式的转换(transformations),连接(joins),聚合(aggregations),窗口操作(windows)等等。DataSet API 为有界数据集提供了额外的支持,例如循环与迭代。这些API处理的数据类型以类(classes)的形式由各自的编程语言所表示。
Table API 是以表为中心的声明式编程,其中表可能会动态变化(在表达流数据时)。Table API遵循(扩展的)关系模型:表有二维数据结构(schema)(类似于关系数据库中的表),同时API提供可比较的操作,例如select、project、join、group-by、aggregate等。Table API程序声明式地定义了什么逻辑操作应该执行,而不是准确地确定这些操作代码的看上去如何 。 尽管Table API可以通过多种类型的用户自定义函数(UDF)进行扩展,其仍不如核心API更具表达能力,但是使用起来却更加简洁(代码量更少)。除此之外,Table API程序在执行之前会经过内置优化器进行优化。

你可以在表和datastream/dataset之间无缝切换,以允许程序将Table api与datastream以及dataset混合使用。
flink提供的最高层的抽象是sql。这一层抽象在语法和表达能力上和table api类似,但是是以sql查询表达式的形式表现持续。sql抽象与table sql交互密切,同时sql查询可以直接在table api直接定义的表上执行

安装

解压
flink-1.7.0-bin-hadoop27-scala_2.11.tgz
单机启动
ps:windows下的超过1.9版本的flink没有提供start-all.cmd,如果有需要在windows下跑flink的童鞋请在旧版本拷贝cmd到新版本的就可以了。
在这里插入图片描述
然后我们登陆这个ip的8081
在这里插入图片描述

wordcount

新建一个xsheel窗口
yum install -y nc
nc -lk 9999永久监听TCP端口9999
再开一个命令页面
./bin/flink run examples/streaming/SocketWindowWordCount.jar --port 9999启动wordcount
再开一个页面
进入flink下面的log文件夹,找到flink-xx-taskexecutor-xx.out,用tail -f查看,如下图,现在我在1窗口实时输入单词
二窗口就实时打印结果
在这里插入图片描述

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页