Flink 的 BLOB(Binary Large Object)存储机制介绍

打印 上一主题 下一主题

主题 1914|帖子 1914|积分 5742

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Flink 的 BLOB(Binary Large Object)存储是其分布式架构中的核心组件,主要用于管理作业依靠的二进制大文件(如用户上传的 JAR 包、RPC 消息、日志等),并在集群节点间高效分发这些文件。以下是 Flink BLOB 存储的具体介绍:

一、BLOB 存储的核心组件


  • BlobServer

    • 功能:运行在 JobManager 上,负责吸取、存储和分发 BLOB 文件(如用户提交的 JAR 包)。
    • 存储机制:文件按 <jobId>/<blobKey> 的目录结构存储在本地磁盘(默认路径为 /tmp),并支持高可用(HA)场景下同步到分布式存储(如 HDFS)。
    • 清理策略:通过引用计数和分阶段清理机制管理文件生命周期。作业进入终极状态(完成/取消)时,其 BLOB 目录会被立刻删除;临时文件则在引用计数归零后延迟清理。

  • BlobClient

    • 作用:客户端工具,提供上传/下载接口,与 BlobServer 通信。例如,用户提交作业时通过 BlobClient 上传 JAR 文件到 BlobServer。

  • BlobCache

    • 功能:运行在 TaskManager 上,缓存从 BlobServer 下载的 BLOB 文件,减少重复下载开销。
    • 本地存储:同样按 <jobId>/<blobKey> 结构缓存文件,支持从 HA 存储或 BlobServer 直接下载。
    • 清理机制:依靠引用计数,TaskManager 关闭时会清理所有本地缓存文件。

  • LibraryCacheManager

    • 桥梁作用:毗连 Task 的 ClassLoader 和 BlobCache,动态加载作业所需的依靠(如 JAR 文件)。


二、BLOB 的生命周期管理



  • 引用计数:每个 BLOB 文件从首次被检索时开始计数,引用归零后进入分阶段清理队列,延迟 blob.retention.interval 秒后删除。
  • 分阶段清理:通过两个清理列表(“立刻删除”和“下次删除”)制止因临时任务失败导致文件过早清理。未被引用的文件至少保留 blob.retention.interval 秒,最多保留两倍时间。
  • 高可用场景:HA 存储中的 BLOB 文件在规复时从分布式存储下载到本地,非 HA 文件则可重新天生。

三、文件传输流程


  • 上传流程

    • 用户通过 BlobClient 上传文件到 BlobServer,文件先写入本地,再异步同步到 HA 存储(如设置)。

  • 下载流程

    • TaskManager 的 BlobCache 优先从本地缓存读取文件,若未命中则从 HA 存储或 BlobServer 下载,并通过校验和验证文件完备性。


四、设置与调优


  • 关键参数

    • blob.storage.directory:指定 BLOB 存储路径(如 /opt/flink/blobs),需确保目录有写入权限。
    • blob.server.port:BlobServer 监听端口(默认 6124),需制止冲突。
    • blob.retention.interval:控制文件保留时间(默认 1 小时)。

  • 高可用设置

    • 若使用 HDFS 作为 HA 存储,需设置 high-availability.storageDir 并确保 BlobServer 能访问。


五、常见问题与办理


  • 毗连失败

    • 错误如 Could not connect to BlobServer 可能因网络、端口或权限问题导致。需查抄 JobManager 地点、防火墙规则及 blob.server.port 设置。

  • 文件清理非常

    • 若残留文件占用空间,可手动清理 /tmp/blobStore-* 并重启集群。

  • 权限问题

    • 自定义存储目录需赋予 Flink 进程用户所有权(如 chown -R flink:flink /opt/flink/blobs)。


六、应用场景



  • 作业依靠分发:如 FlinkCDC 通过 BlobServer 分发毗连器 JAR 包。
  • 状态规复:Checkpoint 元数据可能通过 BLOB 存储长期化。
  • RPC 消息处置惩罚:过大的 RPC 消息可卸载到 BLOB 存储以减轻内存压力。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我爱普洱茶

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表