第二章 flink基本概念 - 编程模型

flink框架优势

在分布式计算框架中,需要处理分散在多台机器上的海量数据,对于大数据开发人员面临最大的挑战就是代码的编写、部署、调度、容错等。Flink在实时计算方面,提供流一个抽象的集即DataStream / DataSet,开发者只要调用统一的编程API,传入具体的计算逻辑,不必太多关心底层的细节,就可以完成各种复杂的计算了,并且可以实现快速部署、资源调度、任务容错等,大大的提高了开发效率。

编程模型

  1. 需要创建任务运行环境 StreamExecutionEnvironment,后续所有的计算拓扑都是需要基于这个环境来添加变换的。

  2. 有了环境之后就需要有需要计算的数据集合了: 调用相应的Source算子创建原始的DataStream,Source算子可以支持有限数据源(文件,数据库表),也可以支持无限数据源(kafka,session ,mq)。

  3. 之后就可以对数据源读到的数据一条一条的做转换清洗了: 调用零到多次Transformation(转换算子),每调用一次Transformation都会生成一个新的DataStream。 这些转换包含(map,reduce,window,etc.)。

  4. 最后将转换好的数据落盘:调用Sink算子创建需要写入的地方(外部存储,标准输出等)。

  5. 上面的过程结束后程序就形成一个Data Flow Graph(数据流图)。

  6. 由于flink是懒加载的一个框架, 我们还需要调用刚开始创建的运行环境StreamExecutionEnvironment的execute方法,这样启动之后就会把这个数据流图提交给JobManager,经过优化后生成包含有具体计算逻辑的Task实例,然后调度到TaskManager的slot中开始计算。

编程模型.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。