基于MapReduce的分布式计算系统
摘要
以 2003年,Google 发表的三篇论文为标志的大数据时代,至今已过去近二十年时间,MapReduce 那篇论文虽然只有理论,并为公开底层软件实现。但这么多年过去,Hadoop,Spark 等框架早已实现论文中所描述的功能,甚至还有所改进。
本文以 MapReduce 为基础,实现了一套基于浏览器实现的分布式系统。加之如今 Chrome 对各个平台近乎完美的兼容性,实现了一次编写,处处运行的目标。同时得力于个人移动设备的普及,手机,平板,甚至是家用游戏机,智能电视。如果急需性能,还可以通过朋友圈的方式,号召朋友们使用自己的设备,在后台开启几个标签的方式,成为计算节点,加快整体计算速度。
在 BMR 系统下,用户甚至不需要学习 C++,JAVA 等传统分布式计算用到的语言;只需要会简单的 JS,即可完成分布式计算任务的开发,开发成本极低。本文对 BMR系统的设计,以及实现时做的取舍做了详细说明,对分布式计算平台的研究具有一定的指导意义。
关键词:MapReduce、分布式计算、高性能
MapReduce-based Distributed Computing System
Abstract
Intelligent In 2003, Google published three papers as a sign of the era of big data, nearly two decades have passed, MapReduce that paper, although only the theory, and for the public underlying software implementation. However, after so many years, Hadoop, Spark and other frameworks have already achieved the functions described in the paper, and even improved them.
This paper implements a browser-based distributed system based on MapReduce. With the near-perfect compatibility of Chrome with all platforms today, the goal of writing once and running everywhere is achieved. And thanks to the popularity of personal mobile devices, phones, tablets, and even home consoles and smart TVs. If performance is desperately needed, it is also possible to call on friends to use their own devices by opening several tabs in the background to become computing nodes and speed up the overall computing speed.
With the BMR system, users do not even need to learn C++, JAVA, and other languages traditionally used in distributed computing; they only need to know simple JS to develop distributed computing tasks, and the development cost is extremely low. This paper provides a detailed description of the design of the BMR system and the trade-offs made in its implementation, which is a guideline for the study of distributed computing platforms.
Keywords: MapReduce, distributed computing, high performance
目 录
摘要 I
Abstract II
目 录 III
第一章 引言 1
1.1 研究背景 1
1.2 研究现状 1
1.3 论文目标及内容 2
第二章 MapRedues相关技术介绍 4
2.1 分布式系统 4
2.1.1 什么是分布式系统 4
2.1.2 并行于分布式计算 4
2.1.3 分布式系统的架构 5
2.1.4 分布式系统的历史 6
2.1.5 分布式系统的应用 6
2.1.6 分布式系统的特点 7
2.2 函数式编程语言 7
2.2.1 函数式编程 7
2.2.2 lambda演算 8
2.2.3 函数式编程的优缺点 9
2.3 MapReduce 编程模型 11
2.3.1 介绍 11
2.3.2 运行流程 12
2.3.3 数据流 13
2.3.4 MapReduce的优缺点 14
第三章 基于MapReduce的计算框架设计和技术分析 16
3.1 开发工具链 16
3.1.1 Visual Studio Code 16
3.1.2 NPM 16
3.1.3 Chrome 16
3.1.4 系统的技术栈 16
3.2 系统的技术栈 17
3.2.1 前端技术栈 18
3.2.2 后端技术栈 19
3.3 系统的总体设计 20
3.3.1 总体架构 20
3.3.2 服务端模块划分 21
3.3.3 客户端模块划分 24
3.3.4 服务端客户端通信接口 26
3.4 服务端详细设计 30
3.4.1 执行代码组建模块 30
3.4.2 标记模块 31
3.4.3 运行状态模块 34
3.4.4 检查点模块 35
3.4.5 检测模块 36
3.5 客户端详情 37
3.5.1 JSON美化组件 37
3.5.2 Worker 38
第四章 框架的使用说明 39
4.1 运行环境 39
4.1.1 服务端 39
4.1.2 客户端 40
4.2 源码结构 41
4.2.1 服务端 41
4.2.2 客户端 42
4.3 使用流程 43
第五章 结论 45
5.1 论文总结工作 45
5.2 未来展望 46
参考文献 47
致谢 49