写点什么

云小课|MRS 基础原理之 Flink 组件介绍

  • 2023-02-21
    中国香港
  • 本文字数:2557 字

    阅读完需:约 8 分钟

云小课|MRS基础原理之Flink组件介绍

本文分享自华为云社区《【云小课】EI第44课 MRS基础原理之Flink组件介绍》,作者:阅识风云 。



阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说)、深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云。更多精彩内容请单击此处


Flink 是一个批处理和流处理结合的统一计算框架,其核心是一个提供了数据分发以及并行化计算的流数据处理引擎。它的最大亮点是流处理,是业界最顶级的开源流处理引擎。


Flink 最适合的应用场景是低时延的数据处理(Data Processing)场景:高并发 pipeline 处理数据,时延毫秒级,且兼具可靠性。



本课程为您介绍华为云 MapReduce 服务中 Flink 服务的基本原理介绍并展示如何通过 MRS 集群客户端提交 Flink 作业。


图 1 Flink 技术栈


Flink 重点构建如下特性:


  • DataStream

  • Checkpoint

  • 窗口

  • Job Pipeline

  • 配置表

Flink 结构


Flink 结构如下图所示。


图 2 Flink 结构


Flink 整个系统包含三个部分:


  • Client

Flink Client 主要给用户提供向 Flink 系统提交用户任务(流式作业)的能力。


  • TaskManager

Flink 系统的业务执行节点,执行具体的用户任务。TaskManager 可以有多个,各个 TaskManager 都平等。


  • JobManager

Flink 系统的管理节点,管理所有的 TaskManager,并决策用户任务在哪些 Taskmanager 执行。JobManager 在 HA 模式下可以有多个,但只有一个主 JobManager。

MRS Flink 关键特性


  • 流式处理

高吞吐、高性能、低时延的实时流处理引擎,能够提供 ms 级时延处理能力。


  • 丰富的状态管理


流处理应用需要在一定时间内存储所接收到的事件或中间结果,以供后续某个时间点访问并进行后续处理。Flink 提供了丰富的状态管理相关的特性支持,其中包括:


丰富的 State Backend:State Backend 负责管理应用程序的状态,并根据需要进行 Checkpoint。Flink 提供了不同 State Backend,State 可以存储在内存上或 RocksDB 等上,并支持异步以及增量的 Checkpoint 机制。


精确一次语义:Flink 的 Checkpoint 和故障恢复能力保证了任务在故障发生前后的应用状态一致性,为某些特定的存储支持了事务型输出的功能,即使在发生故障的情况下,也能够保证精确一次的输出。


  • 丰富的时间语义支持


时间是流处理应用的重要组成部分,对于实时流处理应用来说,基于时间语义的窗口聚合、检测、匹配等运算是非常常见的。Flink 提供了丰富的时间语义支持。


Event-time:使用事件本身自带的时间戳进行计算,使乱序到达或延迟到达的事件处理变得更加简单。


Watermark 支持:Flink 引入 Watermark 概念,用以衡量事件时间的发展。Watermark 也为平衡处理时延和数据完整性提供了灵活的保障。当处理带有 Watermark 的事件流时,在计算完成之后仍然有相关数据到达时,Flink 提供了多种处理选项,如将数据重定向(side output)或更新之前完成的计算结果。


Processing-time 和 Ingestion-time 支持。


高度灵活的流式窗口支持:Flink 能够支持时间窗口、计数窗口、会话窗口,以及数据驱动的自定义窗口,可以通过灵活的触发条件定制,实现复杂的流式计算模式。


  • 容错机制


分布式系统,单个 task 或节点的崩溃或故障,往往会导致整个任务的失败。Flink 提供了任务级别的容错机制,保证任务在异常发生时不会丢失用户数据,并且能够自动恢复。


Checkpoint:Flink 基于 Checkpoint 实现容错,用户可以自定义对整个任务的 Checkpoint 策略,当任务出现失败时,可以将任务恢复到最近一次 Checkpoint 的状态,从数据源重发快照之后的数据。


Savepoint:一个 Savepoint 就是应用状态的一致性快照,Savepoint 与 Checkpoint 机制相似,但 Savepoint 需要手动触发,Savepoint 保证了任务在升级或迁移时,不丢失掉当前流应用的状态信息,便于任何时间点的任务暂停和恢复。


  • Flink SQL


Table API 和 SQL 借助了 Apache Calcite 来进行查询的解析,校验以及优化,可以与 DataStream 和 DataSet API 无缝集成,并支持用户自定义的标量函数,聚合函数以及表值函数。简化数据分析、ETL 等应用的定义。下面代码实例展示了如何使用 Flink SQL 语句定义一个会话点击量的计数应用。


SELECT userId, COUNT(*)
FROM clicks
GROUP BY SESSION(clicktime, INTERVAL '30' MINUTE), userId
复制代码


  • CEP in SQL


Flink 允许用户在 SQL 中表示 CEP(Complex Event Processing)查询结果以用于模式匹配,并在 Flink 上对事件流进行评估。


CEP SQL 通过 MATCH_RECOGNIZE 的 SQL 语法实现。MATCH_RECOGNIZE 子句自 Oracle Database 12c 起由 Oracle SQL 支持,用于在 SQL 中表示事件模式匹配。CEP SQL 使用举例如下:


SELECT T.aid, T.bid, T.cid
FROM MyTable
MATCH_RECOGNIZE (
PARTITION BY userid
ORDER BY proctime
MEASURES
A.id AS aid,
B.id AS bid,
C.id AS cid
PATTERN (A B C)
DEFINE
A AS name = 'a',
B AS name = 'b',
C AS name = 'c'
) AS T
复制代码

如何使用 Flink 客户端


购买一个包含 Flink 组件的 MRS 集群,MRS 集群的创建可参考创建集群,例如购买一个 MRS 3.1.0 集群,未开启了 Kerberos 认证。


1、集群正常运行后,安装集群客户端,例如安装目录为“/opt/hadoopclient”。Flink 客户端的安装可以参考安装客户端


2、以客户端安装用户,登录安装客户端的节点。


3、执行以下命令,切换到客户端安装目录。


cd /opt/hadoopclient
复制代码


source bigdata_env
复制代码


4、运行 wordcount 作业。


  • 方式 1:执行如下命令启动 session,并在 session 中提交作业。

    yarn-session.sh -nm "session-name"flink run /opt/hadoopclient/Flink/flink/examples/streaming/WordCount.jar

  • 方式 2:执行如下命令在 Yarn 上提交单个作业。

    flink run -m yarn-cluster /opt/hadoopclient/Flink/flink/examples/streaming/WordCount.jar


5、作业提交成功后,客户端界面显示类似如下。


图 3 在 Yarn 上提交作业成功


图 4 启动 session 成功


图 5 在 session 中提交作业成功


6、使用运行用户登录 MRS 集群的 FusionInsight Manager 界面,单击“集群 > 服务 > Yarn”,单击“ResourceManager WebUI”后的链接,进入 Yarn 服务的原生页面,找到对应作业的 application,单击 application 名称,进入到作业详情页面。


若作业尚未结束,可单击“Tracking URL”链接进入到 Flink 的原生页面,查看作业的运行信息。


若作业已运行结束,对于在 session 中提交的作业,可以单击“Tracking URL”链接登录 Flink 原生页面查看作业信息。


application




好了,本期云小课就介绍到这里,快去体验 MapReduce(MRS)更多功能吧!猛戳这里


点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 3
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
云小课|MRS基础原理之Flink组件介绍_大数据_华为云开发者联盟_InfoQ写作社区