Skip to content
Jianjun Zhao edited this page Nov 11, 2024 · 5 revisions

欢迎来到 MorphStream Wiki

项目概述

Java CI with Maven

  • 本项目旨在构建一个可扩展的事务流处理引擎,能够在现代硬件上运行。它支持在流数据上直接执行 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 中的事务事件调度模块。

如何运行 MorphStream

  1. 系统规格:我们所有的实验都在以下环境中运行:

    组件 详情
    服务器 双插槽 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 和多版本状态
  2. 第三方库:确保安装并配置所有必要的依赖项,如下所示。

    • 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。
  3. 环境配置:所有环境配置都已提取到 global.sh 中,实际上,用户只需在运行所有实验之前设置 project_Dir

  4. 我们根据论文中的四个子部分对所有实验脚本进行了分类,您可以通过进入相关文件夹并运行脚本来复现每个子部分的结果。 在每个文件夹内,我们可以通过以下命令轻松运行每个实验。更详细的说明请查看 scripts/README.md

    cd $EXPERIMENT_FOLDER_PATH # 必须在相应文件夹内进行实验
    bash ${EXPERIMENT_SCRIPT}.sh # 例如,EXPERIMENT_SCRIPT=PerformanceComparison
    
Clone this wiki locally