Flink

举报
武师叔 发表于 2022/09/29 16:37:47 2022/09/29
【摘要】 theme: condensed-night-purple Flink携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情目前唯一同时支持高吞吐、低延迟、高性能的分布式流式数据处理框架。像Apache Spark也只能兼顾高吞吐和高性能特性,主要因为在Spark Streaming流式计算中无法做到低延迟保障。优势支持事件事件概念。支持有状态计算,...

theme: condensed-night-purple

Flink

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情


目前唯一同时支持高吞吐、低延迟、高性能的分布式流式数据处理框架。像Apache Spark也只能兼顾高吞吐和高性能特性,主要因为在Spark Streaming流式计算中无法做到低延迟保障。

优势

  1. 支持事件事件概念。
  2. 支持有状态计算,保持了事件原本产生的时序性,避免网络传输带来的影响。
  3. 支持高度灵活的窗口操作,Flink将窗口分为Time、Count、Session以及Data-driven等类型的窗口操作,可以灵活的处罚条件定制化来达到对复杂的流传输模式的支持。
  4. 基于轻量级分布式快照实现容错,将大型计算任务的流程拆解成小的计算过程,分布到并行节点上处理。并通过 Checkpoints 将执行过程中的状态信息进行持久化存储,可以自动恢复出现异常的任务。
  5. 基于 JVM 实现独立的内存管理。

运行环境

  • JDK 版本必须在 1.8 及以上
  • Maven 版本必须在 3.0.4 及以上
  • Hadoop 环境支持 hadoop 2.4、2.6、2.7、2.8 等主要版本

Flink 支持使用 Java/Scala 开发,以下示例代码全部使用 Java .

基本组件

  1. Flink 架构体系基本上分三层(自顶向下):

    • API & Libraries 层: 提供支撑流计算和批计算的接口,,同时在此基础上抽象出不同的应用类型的组件库。
    • Runtime 核心层:Flink分布式计算框架的核心实现层,负责分布式作业的执行、映射转换、任务调度等。将 DataStream 和 DataSet 转成同意的可执行的 Task Operator 。
    • 物理部署层:目前Flink支持本地、集群、云、容器部署,Flink通过盖层能够支持不同平台的部署,用户可以根据需要选择使用对应的部署模式。
  2. Flink 基本架构

    • Client 客户端:负责将任务提交到集群,与JobManager构建Akka连接,然后将任务提交到JobManager,通过和JobManager之间进行交互获取任务执行状态。
    • JobManager:负责整个Flink集群任务的调度以及资源的管理
    • TaskManager:相当于整个集群的Slave节点,负责具体的任务执行和对应任务在每个节点上的资源申请与管理。

编程模型

  1. BasicTypeInfo 数据类型:支持任意 Java 原生基本类型或 String 类型。
// 直接获取
DataSource<String> inputStream= environment.fromElements("1", "2", "3", "4", "5", "6");

// 从集合获取
ArrayList<String> list = new ArrayList<>(list2);
DataSource<String> inputStream= environment.fromCollection(list);Copy to clipboardErrorCopied
  1. TupleTypeInfo 数据类型:标识 Tuple 类型数据。
DataSource<Tuple2> inputStreamTuple = environment.fromElements(new Tuple2("fangpc", 1), new Tuple2("fangpengcheng", 2));Copy to clipboardErrorCopied
  1. PojoTypeInfo 数据类型:描述任意的 POJOs ,字段类型必须是上述基础类型,拥有默认构造方法和 getter/setter 方法
var personStream = environment.fromElements(new Person("fangpc", 24), new Person("fangpengcheng", 25));Copy to clipboardErrorCopied
  1. Value 数据类型:实现了org.apache.flink.types.Value,其中包括 read() 和 write() 两个方法完成序列化和反序列化操作,有着比较高效的性能。Flink 提供的内建 Value 类型有 IntValue、DoubleValue、StringValue 等。

  2. 特殊数据类型:

    • Scala中的List、Map、Either、Option、Try数据类型
    • Java中Either
    • Hadoop的Writable数据类型
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。