没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
大数据技术之 Flink
—————————————————————————————
大数据技术之 Flink
第一章 Flink 简介
1.1 初识 Flink
Flink 起 源于 Stratosphere 项目,Stratosphere 是 在 2010~2014 年由 3 所地处柏林
的大学和 欧洲的 一些其 他的大 学共同进 行的 研究项目 ,2014 年 4 月 Stratosphere 的
代 码 被 复 制 并 捐 赠 给 了 Apache 软 件 基 金 会 , 参 加 这 个 孵 化 项 目 的 初 始 成 员 是
Stratosphere 系 统的核心 开发人 员,2014 年 12 月,Flink 一跃成为 Apache 软件基金
会的顶级 项目。
在德语中,Flink 一词表示快速和灵巧,项目采用一只松鼠的彩色图案作为 logo,
这不仅是因为松鼠具有快速和灵巧的特点,还因为柏林的松鼠有一种迷人的红棕色,
而 Flink 的松鼠 logo 拥 有可爱的 尾巴, 尾巴的颜色与 Apache 软件基金 会的 logo 颜
色相呼应 ,也就 是说, 这是一 只 Apache 风格的松 鼠。
Flink Logo
Flink 项 目的理念 是:“ Apache Flink 是为分布 式、高 性能、随时可 用以及准 确
的流处理 应用程 序打造 的开源 流处理框 架”。
Apache Flink 是一个框 架和 分布式处 理引擎 ,用于 对无界 和有界数 据流 进行有
状态计算。Flink 被设 计在 所有常见的集群 环境中运行,以内 存执行速度和任 意规模
来执行计 算。
大数据技术之 Flink
—————————————————————————————
1.2 Flink 的重要特点
1.2.1 事件驱动型(Event-driven)
事件驱 动 型应用 是一类具 有状 态的 应用 ,它 从一 个或 多个 事件 流提 取数 据,并
根据到来 的事件 触发计 算、状 态更新或 其他 外部动作 。比较 典型的就是以 kafka 为
代表的消 息队列 几乎都 是事件 驱动型应 用。
与之不同 的就是 SparkStreaming 微批 次,如图 :
事件驱动 型:
1.2.2 流与批的世界观
批处理 的 特点是 有界、持 久、 大量 ,非 常适 合需 要访 问全 套记 录才 能完 成的计
算工作, 一般用 于离线 统计。
流处理的特点是无界、实时, 无需针对整个数据集执行操作,而是对通过系统
传输的每 个数据 项执行 操作, 一般用于 实时 统计。
大数据技术之 Flink
—————————————————————————————
在 spark 的 世界观中,一 切都是由 批次组成的, 离线数 据是一个 大批 次, 而实
时数据是 由一个 一个无 限的小 批次组成 的。
而在 flink 的世界观中,一切都是由流组成的,离线数据是有界限的流,实时数
据是一个 没有界 限的流 ,这就 是所谓的 有界 流和无界 流。
无界数 据 流:无 界数据流 有一 个开 始但 是没 有结 束, 它们 不会 在生 成时 终止并
提供数据,必须连续处理无界流,也就是说必须在获取后立即处理 event。对于无界
数据流 我 们无法 等待所有 数据 都到 达, 因为 输入 是无 界的 ,并 且在 任何 时间点都 不
会完成。处理无界数据通常要求以特定顺序(例如事件发生的顺序)获取 event,以
便能够推 断结果 完整性 。
有界数 据 流:有 界数据流 有明 确定 义的 开始 和结 束, 可以 在执 行任 何计 算之前
通过获 取 所有数 据来处理 有界 流, 处理 有界 流不 需要 有序 获取 ,因 为可 以始终对 有
界数据集 进行排 序,有 界流的 处理也称 为批 处理。
这种以流 为世界 观的架 构,获 得的最大 好处 就是具有 极低的 延迟。
1.2.3 分层 api
最底层级 的抽象 仅仅提 供了有 状态流, 它将 通过过程 函数( Process Function)
被嵌入到 DataStream API 中。底层过程函数(Process Function) 与 DataStream API
相集成 , 使其可 以对某些 特定 的操 作进 行底 层的 抽象 ,它 允许 用户 可以 自由地处 理
来自一 个 或多个 数据流的 事件 ,并 使用 一致 的容 错的 状态 。除 此之 外, 用户可以 注
册事件时 间并处 理时间 回调, 从而使程 序可 以处理复 杂的计 算。
实际上,大多数应用并不需要上述的底层抽象,而是针对核心 API(Core APIs)
进行编程 ,比如 DataStream API( 有界或 无界流 数据)以 及 DataSet API(有界数 据
集)。这 些 API 为数据处理 提供了通用的 构建模 块,比如 由用 户定 义的 多种形式 的
大数据技术之 Flink
—————————————————————————————
转换(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 API
交互密切 ,同时 SQL 查询可以 直接在 Table API 定义的表上 执行。
目前 Flink 作为 批处理还 不是主流 ,不 如 Spark 成熟,所以 DataSet 使用 的并不
是很多。Flink Table API 和 Flink SQL 大多都由各大厂商自己定制。所以 我们主要
学习 DataStream API 的 使用。实际上 Flink 作为 最接近 Google DataFlow 模型的实 现
,是流 批统一的 观点 ,所以基 本上使用 DataStream 就 可以了 。
Flink 几 大模块
Flink Table & SQL
Flink Gelly(图计算 )
Flink CEP(复 杂事件 处理)
大数据技术之 Flink
—————————————————————————————
第二章 快速上手
2.1 搭建 maven 工程 FlinkTutorial
2.1.1 pom 文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jinghang.flink</
groupId><artifactId>FlinkTutorial</
artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-scala_2.11</artifactId>
<version>1.7.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.flink/flink-streaming-scala -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-scala_2.11</artifactId>
<version>1.7.2</version>
</dependency>
</dependencies>
剩余99页未读,继续阅读
Parker_1314
- 粉丝: 17
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0