-
Notifications
You must be signed in to change notification settings - Fork 7
Jianjun Zhao edited this page Nov 11, 2024
·
5 revisions
- 切换到 English Page
- 本项目旨在构建一个可扩展的事务流处理引擎,能够在现代硬件上运行。它支持在流数据上直接执行 ACID 事务。该项目与 Data Artisans 的 Flink StreamingLedger 有类似的愿景,但 MorphStream 更加强调通过现代多核处理器提升系统性能。
- MorphStream 是基于我们之前的 TStream(ICDE'20)工作的基础上构建的,但做了重大改动:代码库是独立的。
- 该代码库仍在积极开发中,并将推出更多功能。欢迎您的贡献,如果您有兴趣参与项目,请 fork 并提交 PR。如果您有任何问题,请随时提交 issue 或发送邮件给我:shuhao_zhang AT hust.edu.cn
- [Under Review] Jianjun Zhao, Yancan Mao, Zhonghao Yang, Haikun Liu and Shuhao Zhang. Scalable Window-based Transactional Stream Processing with Non-deterministic State Access.
- [VLDBJ] Zhang, S., Soto, J. & Markl, V. A survey on transactional stream processing. The VLDB Journal 33, 451–479 (2024)
- [ICDE] Jianjun Zhao*, Haikun Liu, Shuhao Zhang, Zhuohui Duan, Xiaofei Liao, Hai Jin, Yu Zhang. Fast Parallel Recovery for Transactional Stream Processing on Multicores, ICDE, 2024
- [ICDE] Siqi Xiang*, Zhonghao Yang*, Shuhao Zhang, Jianjun Zhao, Yancan Mao. MorphStream: Scalable Processing of Transactions over Streams, ICDE (Demo), 2024
- [SIGMOD] Yancan Mao and Jianjun Zhao and Shuhao Zhang and Haikun Liu and Volker Markl. MorphStream: Adaptive Scheduling for Scalable Transactional Stream Processing on Multicores, SIGMOD, 2023
- [ICDE] Shuhao Zhang, Yingjun Wu, Feng Zhang, Bingsheng He. Towards Concurrent Stateful Stream Processing on Multicore Processors, ICDE, 2020
- [SIGMOD] Shuhao Zhang, Jiong He, Chi Zhou (Amelie), Bingsheng He. BriskStream: Scaling Stream Processing on Multicore Architectures, SIGMOD, 2019 (code: https://github.com/Xtra-Computing/briskstream)
- [ICDE] Shuhao Zhang, Bingsheng He, Daniel Dahlmeier, Amelie Chi Zhou, Thomas Heinze. Revisiting the design of data stream processing systems on multi-core processors, ICDE, 2017 (code: https://github.com/ShuhaoZhangTony/ProfilingStudy)
-
affinity
包含用于在多核架构中将线程绑定到对应 CPU 的库。 -
application
包含基于 MorphStream 编程 API 实现的所有实验工作负载。 -
common
包含整个项目的常用工具变量/函数。 -
scripts
包含所有实验脚本,用于复现我们的实验。 -
state-engine
包含 MorphStream 中的状态管理模块。 -
stream-engine
包含 MorphStream 中的事务事件调度模块。
-
系统规格:我们所有的实验都在以下环境中运行:
组件 详情 服务器 双插槽 Intel Xeon Gold 6248R 服务器,配备 384 GB DRAM 操作系统 Ubuntu 每个插槽核心数 24 核,3.00GHz L3 缓存 35.75MB NUMA 使用单插槽以隔离 NUMA 的影响 核心绑定 每个线程绑定到一个核心,使用 1 到 24 个核心来评估可扩展性 操作系统内核 Linux 4.15.0-118-generic JDK 版本 JDK 1.8.0_301 JVM 配置 -Xmx 和 -Xms 设置为 300 GB 垃圾回收器 G1GC,配置为不清除临时对象,如已处理的 TPG 和多版本状态 -
第三方库:确保安装并配置所有必要的依赖项,如下所示。
- wget:
sudo apt install wget -y
- make/cmake/gcc/g++:
sudo apt install make cmake gcc g++ -y
- JDK 1.8.x
- Maven 3.8.6:
sudo apt install maven -y
-
Intel Vtune:配置 Vtune 路径为
/opt/intel/oneapi/vtune/latest/bin64/vtune
,并设置/proc/sys/kernel/perf_event_paranoid
为 0。
- wget:
-
环境配置:所有环境配置都已提取到
global.sh
中,实际上,用户只需在运行所有实验之前设置project_Dir
。 -
我们根据论文中的四个子部分对所有实验脚本进行了分类,您可以通过进入相关文件夹并运行脚本来复现每个子部分的结果。 在每个文件夹内,我们可以通过以下命令轻松运行每个实验。更详细的说明请查看
scripts/README.md
。cd $EXPERIMENT_FOLDER_PATH # 必须在相应文件夹内进行实验 bash ${EXPERIMENT_SCRIPT}.sh # 例如,EXPERIMENT_SCRIPT=PerformanceComparison