高吞吐、低延迟、高性能的开源计算方案——Flink

高吞吐、低延迟、高性能的开源计算方案——FlinkFlink简介现有的开源计算方案,会把流处理和批处理作为两种不同的应用类型:流处理一般需要支持低延迟(毫秒级的延迟)、Exactly-once保

大家好,欢迎来到IT知识分享网。

Flink简介

现有的开源计算方案,会把流处理和批处理作为两种不同的应用类型:流处理一般需要支持低延迟(毫秒级的延迟)、Exactly-once保证(数据只消费一次),而批处理需要支持高吞吐、高效处理。

Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,提供支持流处理和批处理两种类型应用的功能,其中流处理输入数据流是无解的;批处理被作为一宗特殊的流处理,只是他的输入数据流被定义为有界的。

Flink组件栈

Deploy部署层

  1. Local(本地单JVM进程部署,主要用于本地调试)
  2. Cluster(集群部署方式)
  • Standalone
  • YARN:

生产环境常用模式,YARN是一种新的Hadoop资源管理器,可为上层应用提供统一的资源管理和调度,在集群的利用率、资源统一管理和数据共享等方面带来便捷。

高吞吐、低延迟、高性能的开源计算方案——Flink

  • Cloud(GCE/EC2)

Core核心层

Runtime层提供了支持flink计算的全部核心实现,比如:支持分布式流处理、jobGraph到ExecutionGraph的映射、调度等等,为上层API提供基础服务

API接口层

  • DataStream API:提供给面向流处理的接口
  • DataSet API:面向批处理的接口

Libraries

该层是flink自身提供的、满足特定应用场景的应用框架

  • CEP(事件处理模型)
  • Table(提供类似SQL的操作)
  • FlinkML(机器学习库)
  • Gelly(图像处理)

Flink优势

  • 支持高吞吐、低延迟、高性能的流处理
  • 支持高度灵活的窗口操作(滑动窗口、滚动窗口、session窗口)
  • 支持有状态计算的Exactly-once语义
  • 提供DataStream API和DataSet API

Apache

Flink

SparkStreaming

Storm

架构

架构介于Spark和Storm之间、主从结构与Spark相似、数据流可以被标识为一个有向图

主从模式、每个batch处理都依赖主、可以理解为时间维度上的Spark DAG(有向无环图) ,也就是时间维度很小的批处理Micro-Batch

主从模式、切高度依赖于Zookeeper,Zookeeper

保存了Storm集群的重要信息。处理过程中对主的依赖不大

容错

基于Chandy-Lamport分布式快照的CheckPoint机制

容错粒度:Medium

WAL(预写日志)与RDD血统机制

容错粒度:High

Records ACK

容错粒度:Medium

处理模型与延时

单条事件处理

亚秒级低延迟

一个事件窗口内的所有事件

秒级高延迟

每次传入的一个事件

亚秒级低延迟

数据处理保证

exactly-once

exactly-once

at least once

Flink基础概念

  • Flink程序的基础构建模块是流(Stream)和转换(transformations)
  • 每一个数据流起始于一个或多个source,并终止于一个或多个sink
高吞吐、低延迟、高性能的开源计算方案——Flink

高吞吐、低延迟、高性能的开源计算方案——Flink

时间窗口

  • 流上的聚合需要由窗口来划定范围,比如“计算过去的5分钟”或者最后100个元素的和“
  • 窗口通常被区分为不同的类型,比如滚动窗口(没有重叠),滑动窗口(有重叠)、会话窗口(由不活动的时隙所打断)
高吞吐、低延迟、高性能的开源计算方案——Flink

Flink分布式运行环境

基础架构

  • Flink是基于Matster-Slave风格的主从架构
  • Flink集群启动时,会启动一个JobManager进程、至少一个TaskManager进程

架构示意图

高吞吐、低延迟、高性能的开源计算方案——Flink

JobManager

  • Flink系统的协调者,负责接收Flink job,调度祖成Job的多个Task的执行
  • 手机Job的状态信息,并管理Flink集群中从节点TaskManager

TaskManager

  • 实际负责执行计算的Worker,在其上执行Flink Job的一组Task
  • 负责管理其所在节点上的资源信息,如内存、磁盘、网络,在启动的时候讲资源的状态想JobManager汇报

Client

  • 用户提交一个Flink程序时,会首先创建一个Client、该Client首先会对用户提交的Flink程序进行预处理,并提交到Flink集群
  • Client会将用户提交的Flink程序组装成一个JobGraph,并且是以JobGraph的形式提交的

Flink下载和安装

官网下载地址:Downloads | Apache Flink

选择相关版本进行下载,解压缩后的目录结构:

高吞吐、低延迟、高性能的开源计算方案——Flink

直接运行start-cluster.sh启动Flink。

Flink提供了界面管理,默认端口是8081,可以通过flink-conf.yaml进行配置。

高吞吐、低延迟、高性能的开源计算方案——Flink

Flink 开发环境搭建和入门

Flink官方提供的快速生成本地Flink开发的Maven工程:Index of /qsbt-quickstart.sh

Flink常用算子简介

算子是在转换过程中的概念,可以理解成算法的实现

  • DataSet API
高吞吐、低延迟、高性能的开源计算方案——Flink

  • DataStream API
高吞吐、低延迟、高性能的开源计算方案——Flink

高吞吐、低延迟、高性能的开源计算方案——Flink

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/62573.html

(0)
上一篇 2024-05-17 08:33
下一篇 2024-05-17 11:33

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信