Flink+Alink,当大数据遇见机器学习!

以下内容节选自《Flink 实战派》一书!
 
 大数据技术和人工智能(机器学习)的结合,使利用数据价值的技术有了新的突破。
在通常情况下,大数据技术与机器学习是互相促进、相依相存的关系。
01
大数据和机器学习之间的关系
机器学习不仅需要合理、适用和先进的算法,还需要依赖足够好和足够多的数据。
大数据可以提高机器学习模型的精确性。
数据的数据量越多,质量越高,机器学习的效率和准确性就越高。机器学习是大数据分析的一个重要方向(方式)。
大数据技术深度结合人工智能将是未来发展的一个重要方向。
大数据实时计算框架 Flink 结合基于 Flink 的机器学习库 Alink,是目前非常优秀的“大数据+人工智能”解决方案。
- Flink 可以为 Alink 提供数据预处理、特征识别、样本计算和模型训练等基础功能。 
- Alink 基于 Flink,可以为 Flink 提供机器学习算法库。 
Flink 还可以和目前主流的人工智能框架(如 PyTorch、TensorFlow、Kubeflow)结合。
02
Flink 是什么?
业界认为,Flink 是最好的数据流计算引擎。
为了便于理解 Flink 是什么,下面以迭代的方法进行定义。
- Flink 是一个开源的分布式大数据处理引擎与计算框架。 
- Flink 是一个对无界数据流和有界数据流进行统一处理的、开源的分布式大数据处理引擎与计算框架。 
- Flink 是一个能进行有状态或无状态计算的、对无界数据流和有界数据流进行统一处理且开源的分布式大数据处理引擎与计算框架。 
Flink 可以进行的数据处理包括实时数据处理、特征工程、历史数据(有界数据)处理、连续数据管道应用、机器学习、图表分析、图计算、容错的数据流处理。
Flink 在大数据架构中的位置如下图所示。
 
 由上图可以看出,在大数据架构中,Flink 用于提供数据计算服务。
Flink 先获取数据源的数据,然后进行转换和计算等,最后输出计算结果。
03
Flink 的应用场景
Flink 的应用场景如下。
- 事件驱动:利用到来的事件触发计算、状态更新或其他外部动作。比如反欺诈、实时风险控制、异常检测、基于规则的报警、业务流程监控、Web 应用。 
- 数据分析:从原始数据中提取有价值的信息和指标。比如电信网络质量监控、移动应用中的产品更新及实验评估和分析、实时数据即席分析、大规模图分析。 
- 数据管道:数据管道和 ETL(提取、转换、加载)作业的用途相似,都可以转换、丰富数据,并将其从某个存储系统移动到另一个存储系统中。但数据管道是以持续流模式运行的,而非周期性触发。比如实时查询索引构建、持续 ETL 作业。 
04
认识 Alink
Alink 是阿里巴巴计算平台事业部 PAI 团队研发的基于 Flink 的机器学习框架。
Alink 于 2019 年 11 月正式开源。
Alink 提供了丰富的算法组件,是业界首个同时支持批/流算法的机器学习框架。
开发者利用 Alink 可以一键搭建覆盖数据处理、特征工程、模型训练、模型预测的算法模型开发的全流程。Alink 的名称取自相关名称(Alibaba、Algorithm、AI、Flink、Blink)的结合。
05
Flink 的整体架构
Flink 包含部署层、执行引擎层、核心 API 层和领域库层。下图是 Flink 1.11 版本架构所包含的组件。
 
 (1)部署层
Flink 支持本地(Local)模式、集群(Cluster)模式等。
(2)执行引擎层
执行引擎层是核心 API 的底层实现,位于最低层。执行引擎层提供了支持 Flink 计算的全部核心实现。
执行引擎层的主要功能如下。
- 分布式流处理。 
- 从作业图(JobGraph)到执行图(ExecutionGraph)的映射、调度等。 
- 为上层的 API 层提供基础服务。 
- 构建新的组件或算子。 
执行引擎层的特点包括以下几点:灵活性高,但开发比较复杂;表达性强,可以操作状态、Time 等。
(3)核心 API 层
核心 API 层主要对无界数据流和有界数据流进行处理,包括 DataStream API 和 DataSet API,以及实现了更加抽象但是表现力稍差的 Table API、SQL。
- DataStream API:用于处理无界数据,或者以流处理方式来处理有界数据。 
- DataSet API:用于对有界数据进行批处理。用户可以非常方便地使用 Flink 提供的各种算子对分布式数据集进行处理。DataStream API 和 DataSet API 是流处理应用程序和批处理应用程序的接口,程序在编译时生成作业图。在编译完成之后,Flink 的优化器会生成不同的执行计划。根据部署方式的不同,优化之后的作业图将被提交给执行器执行。 
- Table API、SQL:用于对结构化数据进行查询,将结构化数据抽象成关系表,然后通过其提供的类 SQL 语言的 DSL 对关系表进行各种查询。 
(4) 领域库层
Flink 还提供了用于特定领域的库,这些库通常被嵌入在 API 中,但不完全独立于 API。这些库也因此可以继承 API 的所有特性,并与其他库集成。
在 API 层之上构建的满足特定应用的实现计算框架(库),分别对应面向流处理和面向批处理这两类。
- 面向流处理支持:CEP(复杂事件处理)、基于 SQL-like 的操作(基于 Table 的关系操作)。 
- 面向批处理支持:FlinkML(机器学习库)、Alink(新开源的机器学习库)、Gelly(图计算)。 
▼
更多实战派,给你一样的精彩!
 
  
 ▊《Flink 实战派》
龙中华 著
- 版本较新:针对 Flink 1.11 版本和 Alink 1.2 版本。 
- 体例科学:采用“知识点+实例”的形式编写。 
- 实例丰富:47 个基础实例 + 1 个项目实例。 
- 跨界整合:①讲解了 4 种开发 Flink 应用程序的 API,即 DataSet API、DataStream API、Table API 和 SQL 相关知识;②讲解了状态处理器 API、复杂事件处理库,以及常用的消息中间件 Kafka;③讲解了大数据和人工智能的结合,以及机器学习框架 Alink。 
- 编排讲究:本书涉及的术语尽量做到有迹可循,每一个术语都尽可能在前面的章节中有所描述。章节递进关系清楚,内容顺序合理,从头到尾逻辑连贯。 












 
    
评论