作为一个高性能的主流中间件,flink有以下特点。

我们看到flink的组成大概分为了四层。从下到上依次是:
大数据和机器学习有着千丝万缕的关系。一般的场景如下:

解释一下,开始我们有一堆原始数据,大量海量。模型训练就是一组公式,应用于这批数据上,最后分析出一个模型,也就是啥样的数据是啥样的特征得到一组特征。就是模型。
然后后面我们又来了一堆新数据,此时我们就能把之前训练好的模型拿出来应用上去,看看我们这些新的数据在这一组特征下是个啥结果,得到预测结果,模型就相当于前人的经验,拿经验来匹配后面的数据,预测他们的结果。有点抽象是吧,下面看个例子。
举个例子,我们现在有一大堆邮件,里面有垃圾邮件也有非垃圾邮件。然后我们在这堆数据上加一个算法,比如遍历,比如排序什么的、最后按照这个算法训练这堆数据,得到一个模型,模型里面存放着垃圾邮件的特征值和非垃圾邮件的特征值,后面我们又得到一堆邮件数据,然后我们根据前面大量数据汇算出来的特征值来匹配一下这些新数据那些是垃圾,那些是非垃圾。这就是一个预测结果,当然了预测结果可能有误差。
下图是flink的一个生态发展图组成。

中间部分主要内容在上面Flink核心组成中已经提到了。就是flink自己本身,其余的就是左侧的输入部分和右侧的输出部分。
输入Connectors(左侧部分)
这部分是外界数据进入flink的接入方式,包括流处理和批处理两种。
流处理方式:包含Kafka(消息队列)、AWS kinesis(实时数据流服务)、RabbitMQ(消息队列)、NIFI(数据管道)、Twitter(API)
批处理方式:包含HDFS(分布式文件系统)、HBase(分布式列式数据库)、Amazon S3(文件系统)、MapR FS(文件系统)、ALLuxio(基于内存分布式文件系统)
以上都能作为数据接入方,把数据接入到flink。
输出Connectors(右侧部分)
flink处理完数据之后的输出也可以输出,包括以下几种。
流处理方式:包含Kafka(消息队列)、AWS kinesis(实时数据流服务)、RabbitMQ(消息队列)、NIFI(数据管道)、Cassandra(NOSQL数据库)、ElasticSearch(全文检索)、HDFS rolling file(滚动文件)
批处理方式:包含HBase(分布式列式数据库)、HDFS(分布式文件系统)
可见不管是输出输入,flink都是支持批处理和流处理的,因为中间的flink自己就支持批处理和流处理,所以接入和输出都是支持的。