We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
我们知道, Flink + Pravega 是现代大数据流计算领域的最佳搭档:
以 Apache Flink 作为计算引擎,通过统一的模型/API来统一批处理和流处理。以 Pavega 作为存储引擎,为流式数据存储提供统一的抽象,使得对历史和实时数据有一致的访问方式。两者统一形成了从存储到计算的闭环,能够同时应对高吞吐的历史数据和低延时的实时数据。同时 Pravega 团队还开发了 Flink-Pravega Connector,为计算和存储的整套流水线提供 Exactly-Once 的语义。
Pravega 的架构设计如下图所示, 其采用分层存储:
Tier1 的存储通常部署在 Pravega 集群内部,主要是提供对低延迟,短期的热数据的存储。在每个 Segment Store 结点都有 Cache 以加快数据读取速率,Pravega 使用Apache Bookeeper 来保证低延迟的日志存储服务。
Long-term 的存储通常部署在 Pravega 集群外部,主要是提供对流数据的长期存储,即冷数据的存储。不仅支持 HDFS,NFS,还会支持企业级的存储如 Dell EMC的 ECS,Isilon 等产品。
然而, 和其他的 '消息队列' 产品类似, 对于冷数据的读取, Pravega 也同样具有读取性能慢的痛点, 这使得在使用 Flink 进行历史数据分析的场景下, 无法和实时流数据的处理速度相媲美.
因此, 我们团队计划优化 Pravega 读取冷数据, 为 Flink 而加速!
设计思路核心: SSD - 4KB 对齐
SSD 4kb 对齐是读写文件优化的重要手段, 举个例子:
SSD就好比一个大仓库,里面由很多小“房间”组成,每个房间的容量都是一样的(4KB的倍数)。每个房间放入货物(文件)的次数是有限制的(10万次)并且每个房间只能放一种货物。货物的放入和拿出是由管理员(操作系统)来协调解决的。但是无论货物有多大,管理员都会把这些货物分成好多块放入房间。每块的大小都是一样的
因此, 核心思路就是:
主要改进点在 Pravega-flink-connector 中:
当 flink 要将序列化后的数据推入到 Pravega 中时, 可以对数据进行规整, 对于缓冲块不满 4kb 的, 就让其 4kb 对齐填充:
例如:
int position = writeBuffer.position(); int mod = position % Constants._4kb; if (mod != 0) { writeBuffer.position(position + Constants._4kb - mod); }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
一 背景
我们知道, Flink + Pravega 是现代大数据流计算领域的最佳搭档:
以 Apache Flink 作为计算引擎,通过统一的模型/API来统一批处理和流处理。以 Pavega 作为存储引擎,为流式数据存储提供统一的抽象,使得对历史和实时数据有一致的访问方式。两者统一形成了从存储到计算的闭环,能够同时应对高吞吐的历史数据和低延时的实时数据。同时 Pravega 团队还开发了 Flink-Pravega Connector,为计算和存储的整套流水线提供 Exactly-Once 的语义。
Pravega 的架构设计如下图所示, 其采用分层存储:
Tier1 的存储通常部署在 Pravega 集群内部,主要是提供对低延迟,短期的热数据的存储。在每个 Segment Store 结点都有 Cache 以加快数据读取速率,Pravega 使用Apache Bookeeper 来保证低延迟的日志存储服务。
Long-term 的存储通常部署在 Pravega 集群外部,主要是提供对流数据的长期存储,即冷数据的存储。不仅支持 HDFS,NFS,还会支持企业级的存储如 Dell EMC的 ECS,Isilon 等产品。
二 目标
然而, 和其他的 '消息队列' 产品类似, 对于冷数据的读取, Pravega 也同样具有读取性能慢的痛点, 这使得在使用 Flink 进行历史数据分析的场景下, 无法和实时流数据的处理速度相媲美.
因此, 我们团队计划优化 Pravega 读取冷数据, 为 Flink 而加速!
三 实施方案
1.核心思路
设计思路核心: SSD - 4KB 对齐
SSD 4kb 对齐是读写文件优化的重要手段, 举个例子:
SSD就好比一个大仓库,里面由很多小“房间”组成,每个房间的容量都是一样的(4KB的倍数)。每个房间放入货物(文件)的次数是有限制的(10万次)并且每个房间只能放一种货物。货物的放入和拿出是由管理员(操作系统)来协调解决的。但是无论货物有多大,管理员都会把这些货物分成好多块放入房间。每块的大小都是一样的
![image-20211214203846051](https://camo.githubusercontent.com/50b64441621336eb01de8fb3282e7c2cd5ffb7bf824ce6dcf8b98a5ba763f492/68747470733a2f2f67697465652e636f6d2f7a697375752f6d79706963747572652f7261772f6d61737465722f696d6167652d32303231313231343230333834363035312e706e67)
因此, 核心思路就是:
2.设计方案
主要改进点在 Pravega-flink-connector 中:
当 flink 要将序列化后的数据推入到 Pravega 中时, 可以对数据进行规整, 对于缓冲块不满 4kb 的, 就让其 4kb 对齐填充:
例如:
四 成员介绍
The text was updated successfully, but these errors were encountered: