Skip to content

A repository for the OSH team project by Team "This Lynx"("芝士猞猁" in Chinese).

License

Notifications You must be signed in to change notification settings

OSH-2023/This-Lynx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jul 12, 2023
9cfc689 · Jul 12, 2023
Jul 7, 2023
Jun 10, 2023
Jul 11, 2023
Jul 12, 2023
Jul 11, 2023
May 11, 2023
Mar 8, 2023
Jul 10, 2023
Jul 7, 2023

Repository files navigation

This-Lynx

OSH-2023 team project repo, our chinese team name is "芝士猞猁".

 ________ __       __          __                                  
|        \  \     |  \        |  \                                 
 \▓▓▓▓▓▓▓▓ ▓▓____  \▓▓ _______| ▓▓      __    __ _______  __    __ 
   | ▓▓  | ▓▓    \|  \/       \ ▓▓     |  \  |  \       \|  \  /  \
   | ▓▓  | ▓▓▓▓▓▓▓\ ▓▓  ▓▓▓▓▓▓▓ ▓▓     | ▓▓  | ▓▓ ▓▓▓▓▓▓▓\\▓▓\/  ▓▓
   | ▓▓  | ▓▓  | ▓▓ ▓▓\▓▓    \| ▓▓     | ▓▓  | ▓▓ ▓▓  | ▓▓ >▓▓  ▓▓ 
   | ▓▓  | ▓▓  | ▓▓ ▓▓_\▓▓▓▓▓▓\ ▓▓_____| ▓▓__/ ▓▓ ▓▓  | ▓▓/  ▓▓▓▓\ 
   | ▓▓  | ▓▓  | ▓▓ ▓▓       ▓▓ ▓▓     \\▓▓    ▓▓ ▓▓  | ▓▓  ▓▓ \▓▓\
    \▓▓   \▓▓   \▓▓\▓▓\▓▓▓▓▓▓▓ \▓▓▓▓▓▓▓▓_\▓▓▓▓▓▓▓\▓▓   \▓▓\▓▓   \▓▓
                                       |  \__| ▓▓                  
                                        \▓▓    ▓▓                  
                                         \▓▓▓▓▓▓                   

🐱 Topic

基于Rust语言对Apache Spark性能瓶颈的优化

😻 Members

😸 Overview

本项目以印度开发者rajasekarv开发的vega项目为基础,使用Rust语言(nightly版本)重构分布式计算框架Spark,实现其核心功能并进行性能上的优化。

原作者的项目已停止更新2年,项目中存在大量未完成部分,且已无法在当前版本的rust-nightly下通过编译。本小组对该项目进行了维护,修正了部分代码,提升了容错性和运行效率,增加了与HDFS、Prometheus等的接口。目前vega已可以完成基本的分布式计算操作,并在许多任务上实现了相对Spark的较大性能提升。

项目仓库Repository

用户手册GuideBook

😼 Discussion Progress

日期 主题 内容 记录 备注
3-11 首次讨论 讨论并提出了若干可选的选题方向 3-11First
3-18 调研结果讨论 确定了选题大方向,考虑分布式系统相关选题 3-18Pre
3-26 正式立项 围绕选题调研了相关项目与论文 3-26FormalTopic
4-2 选题最终方案 挑选出了若干具体选题,并在老师帮助下最终确定选题:基于Rust优化Spark性能瓶颈 4-2TopicFinal 老师参会讨论
4-9 可行性方案分工 确定了Spark相关内容的调研与分工 4-9FeasibilityDivision
4-13 可行性报告讨论 继续交流Spark相关内容,进一步细化分工 4-13FeasibilityDiscussion
4-16 可行性报告讨论 继续交流Spark相关内容,讨论技术路线和理论技术依据 4-16FeasibilityDiscussion2
4-22 可行性报告讨论 继续交流Spark相关内容,综合各方面因素,确定在vega基础上实现rust版的spark 4-22FeasibilityDiscussion3
5-5 中期汇报 分享各自项目进度,汇总中期报告 5-5MidtermDiscussion
5-7 尝试vega 尝试将修改vega使之能够正常运行与部署 5-7TryVega
5-11 定位vega分工 确定了对vega进行代码调研与修改的分工 5-11LocateVega
5-14 讨论尝试 尝试SSH和TCP尝试,为多机部署vega做准备 5-14VegaDis
5-18 阅读代码,尝试双机连接 讨论了阅读vega代码的收获,理清运行逻辑,并尝试双机部署vega
5-21 阅读代码,尝试多机连接 讨论了阅读vega代码的收获,大致确定可修改的代码位置,并尝试多机部署vega
5-28 阅读代码 讨论了阅读vega代码的收获,并尝试对其中部分代码进行修改
6-2 讨论Lab4的分工 讨论lab4分工,进一步尝试对vega部分代码进行修改 6-2Lab4
6-8 完成Lab4的剩余部分 完成lab4,进一步尝试对vega部分代码进行修改 6-8Lab4
6-11 讨论接下来的工作 期末考前最后一次例会,进一步尝试对vega部分代码进行修改,并讨论考后的项目规划 6-11Job
7-4 考试周后继续完善项目 期末考试后的第一次例会,讨论了项目进展,多点发力、全速推进 7-4
7-5 继续完善项目 shuffle方面的优化基本完成,编写了多个benchmark 7-5
7-6 基本完成大部分工作 hdfs与容错基本完成,性能监控初步配置成功 7-6
7-7 收尾工作与结题报告开工 各项工作基本顺利完成,进入收尾阶段,报告撰写正式开工 7-7
7-8 工作收尾与完成结题报告草稿 各项工作完成,报告草稿撰写完成大半 7-8

😺 Research Progress

小组在调研阶段广泛查询各种资料,多方收集信息,确定了包括优化Spark在内的多个选题。在与老师充分沟通过后,考虑小组成员的爱好,最终确定了用Rust语言优化Spark的选题。

关于项目的具体实现,也有2个方向:一是在Spark的基础上用Rust重构部分代码;二是基于项目vega进行改进(事实上,vega正是我们选题的灵感来源)。在调研阶段,这两个方向都困难重重。将Rust加入Spark中需要面临Scala语言和Rust互相调用的难题,由于Scala是运行在JVM上的,要和Rust相互调用显然非常困难。而vega已多年未更新,甚至无法通过编译,在调研初期小组成员Rust运用尚不熟练的情况下,无法知晓该项目的实际运行效率与完成情况。最终本小组在讨论后选择了后者。

项目调研报告见research_report

😺 Basis of Project

Spark采用在JVM上运行的Scala语言编写。虽然带有运行时环境具有方便内存管理等优势,但同时也会拖累其性能。Rust作为一门系统编程语言,具有极高的运行效率(接近C++)的同时还可以保证内存安全性。非常适合用来优化Spark。

另外,由于是在vega的基础上进行优化,而vega在调度、容错和接口等方面均存在明显不足,可以通过增添组件和合理修改原有的代码对其进行改进。

项目可行性报告见feasibility_report

😺 Summary of Project

在这次项目中,我们遇到了重重障碍,比如Rust语言难以掌握,vega项目文档缺失,各种配置问题等等,但我们前期小步快跑后期大步流星,还是顺利地解决了这些问题。

最终,我们在vega的基础上,实现了shuffle的优化,增加了容错机制,加入了HDFS分布式文件系统与性能监控模块等。我们还编写了多个benchmark来对我们的优化效果进行了测试。

整个过程中,我们小组成员相互协作,共同解决了各种问题,收获颇丰。

项目结题报告见final_report

About

A repository for the OSH team project by Team "This Lynx"("芝士猞猁" in Chinese).

Resources

License

Stars

Watchers

Forks

Packages

No packages published