Flink BLOB架构

Flink中支持的BLOB文件类型

  • jar包

      被user classloader使用的jar包
  • 高负荷RPC消息
      1. RPC消息长度超出了akka.framesize的大小
      2. 在HA摸式中,利用底层分布式文件系统分发单个高负荷RPC消息,比如: TaskDeploymentDescriptor,给多个接受对象。
      3. 失败导致重新部署过程中复用RPC消息
  • TaskManager的日志文件
      为了在web ui上展示taskmanager的日志

按存储特性又分为两类

  • PERMANENT_BLOB

      生命周期和job的生命周期一致,并且是可恢复的。会上传到BlobStore分布式文件系统中。
  • TRANSIENT_BLOB
      生命周期由用户自行管理,并且是不可恢复的。不会上传到BlobStore分布式文件系统中。

架构图

BlobStore

BLOB底层存储,支持多种实现`HDFS`,`S3`,`FTP`等,HA中使用BlobStore进行文件的恢复。

BlobServer

* 提供了基于jobId和BlobKey进行文件上传和下载的方法?
* 本地文件系统的读写,基于`<path>/<jobId>/<BlobKey>`目录结构
* HA 分布式文件系统的读写,基于`<path>/<jobId>/<BlobKey>`目录结构
* 负责本地文件系统和分布式文件系统的清理工作
* 先存储到本地文件系统中,然后如果需要的话再存储到分布式文件系统中
* 下载请求优先使用本地文件系统中的文件
* 进行HA恢复中,下载分布式系统中的文件到本地文件系统中

BlobClient

* 基于jobId和BlobKey对BlobServer中的文件进行本地文件缓存
* 本地文件的读写,基于`<path>/<jobId>/<BlobKey>`目录结构
* 优先使用本地文件系统中的文件,然后尝试从HA分布式文件中获取,最后才尝试从BlobServer中下载
* 负责本地文件系统的清理工作

LibraryCacheManager

桥接task的classloader和缓存的库文件,其`registerJob`,`registerTask`会构建并缓存job,task运行需要的classloader

示例解析:standalone模式中的jar包管理

原文地址:https://www.cnblogs.com/andyhe/p/9762013.html

时间: 2024-11-22 16:20:46

Flink BLOB架构的相关文章

Flink系统架构

原文链接:一文弄懂Flink基础理论 Flink分布式程序包含2个主要的进程:JobManager和TaskManager.当程序运行时,不同的进程就会参与其中,包括Jobmanager.TaskManager和JobClient. 当 Flink 集群启动后,首先会启动一个 JobManger 和一个或多个的 TaskManager.由 Client 提交任务给 JobManager,JobManager 再调度任务到各个 TaskManager 去执行,然后 TaskManager 将心跳和

Flink一般架构和处理模型

本文翻译自General Architecture and Process Model --------------------------------------------------------------------- 一.处理过程 当Flink系统启动时,首先启动JobManager和一至多个TaskManager.JobManager负责协调Flink系统,TaskManager则是执行并行程序的worker.当系统以本地形式启动时,一个JobManager和一个TaskManage

Flink 概述 基本架构

1.Flink 概述 1.1 流处理技术的演变 在开源世界里,Apache Storm 项目是流处理的先锋.Storm 最早由 Nathan Marz 和创业公司 BackType 的一个团队开发,后来才被 Apache 基金会接纳.Storm 提供 了低延迟的流处理,但是它为实时性付出了一些代价:很难实现高吞吐,并且其正 确性没能达到通常所需的水平,换句话说,它并不能保证 exactly-once,即便是它能 够保证的正确性级别,其开销也相当大. 在低延迟和高吞吐的流处理系统中维持良好的容错性

Flink入门(二)——Flink架构介绍

1.基本组件栈 了解Spark的朋友会发现Flink的架构和Spark是非常类似的,在整个软件架构体系中,同样遵循着分层的架构设计理念,在降低系统耦合度的同时,也为上层用户构建Flink应用提供了丰富且友好的接口. https://mmbiz.qpic.cn/mmbiz_png/mqibsuEhdUyIVKMN1mHneQiantTzuhJYqwSD0k9gn8RCcJZHeD19KxcLj8ydCUr9KuepDWu6fk2J47oKx6dyQlfQ/640?wx_fmt=png&wxfrom

Flink源码分析

windowing https://github.com/apache/flink/tree/master/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/windowing KeyGroupStreamPartitioner https://github.com/apache/flink/blob/master/flink-streaming-java/src/main/java/org/apache/flin

新一代大数据处理引擎 Apache Flink

https://www.ibm.com/developerworks/cn/opensource/os-cn-apache-flink/index.html 大数据计算引擎的发展 这几年大数据的飞速发展,出现了很多热门的开源社区,其中著名的有 Hadoop.Storm,以及后来的 Spark,他们都有着各自专注的应用场景.Spark 掀开了内存计算的先河,也以内存为赌注,赢得了内存计算的飞速发展.Spark 的火热或多或少的掩盖了其他分布式计算的系统身影.就像 Flink,也就在这个时候默默的发

pointer of checkpoint in FlinK

https://ci.apache.org/projects/flink/flink-docs-release-1.1/apis/streaming/savepoints.html https://info.lightbend.com/rs/558-NCX-702/images/preview-apache-flink.pdf https://github.com/apache/flink/blob/master/flink-runtime/src/main/java/org/apache/fl

《从0到1学习Flink》—— Flink 中几种 Time 详解

前言 Flink 在流程序中支持不同的 Time 概念,就比如有 Processing Time.Event Time 和 Ingestion Time. 下面我们一起来看看这几个 Time: Processing Time Processing Time 是指事件被处理时机器的系统时间. 当流程序在 Processing Time 上运行时,所有基于时间的操作(如时间窗口)将使用当时机器的系统时间.每小时 Processing Time 窗口将包括在系统时钟指示整个小时之间到达特定操作的所有事

深度剖析阿里巴巴对Apache Flink的优化与改进

本文主要从两个层面深度剖析:阿里巴巴对Flink究竟做了哪些优化? 取之开源,用之开源 一.SQL层 为了能够真正做到用户根据自己的业务逻辑开发一套代码,能够同时运行在多种不同的场景,Flink首先需要给用户提供一个统一的API.在经过一番调研之后,阿里巴巴实时计算认为SQL是一个非常适合的选择.在批处理领域,SQL已经经历了几十年的考验,是公认的经典.在流计算领域,近年来也不断有流表二象性.流是表的ChangeLog等理论出现.在这些理论基础之上,阿里巴巴提出了动态表的概念,使得流计算也可以像