本文主要讨论 Apache Spark 的设计与实现,重点关注其设计思想、运行原理、实现架构及性能调优,附带讨论与 Hadoop MapReduce 在设计与实现上的区别。不喜欢将该文档称之为“源码分析”,因为本文的主要目的不是去解读实现代码,而是尽量有逻辑地,从设计与实现原理的角度,来理解 job 从产生到执行完成的整个过程,进而去理解整个系统。
讨论系统的设计与实现有很多方法,本文选择 问题驱动 的方式,一开始引入问题,然后分问题逐步深入。从一个典型的 job 例子入手,逐渐讨论 job 生成及执行过程中所需要的系统功能支持,然后有选择地深入讨论一些功能模块的设计原理与实现方式。也许这样的方式比一开始就分模块讨论更有主线。
本文档面向的是希望对 Spark 设计与实现机制,以及大数据分布式处理框架深入了解的 Geeks。
因为 Spark 社区很活跃,更新速度很快,本文档也会尽量保持同步,文档号的命名与 Spark 版本一致,只是多了一位,最后一位表示文档的版本号。
由于技术水平、实验条件、经验等限制,当前只讨论 Spark core standalone 版本中的核心功能,而不是全部功能。诚邀各位小伙伴们加入进来,丰富和完善文档。
关于学术方面的一些讨论可以参阅相关的论文以及 Matei 的博士论文,也可以看看我之前写的这篇 blog。
好久没有写这么完整的文档了,上次写还是三年前在学 Ng 的 ML 课程的时候,当年好有激情啊。这次的撰写花了 20+ days,从暑假写到现在,大部分时间花在 debug、画图和琢磨怎么写上,希望文档能对大家和自己都有所帮助。
本文档首先讨论 job 如何生成,然后讨论怎么执行,最后讨论系统相关的功能特性。具体内容如下:
Overview 总体介绍
Job logical plan 介绍 job 的逻辑执行图(数据依赖图)
Job physical plan 介绍 job 的物理执行图
Shuffle details 介绍 shuffle 过程
Architecture 介绍系统模块如何协调完成整个 job 的执行
Cache and Checkpoint 介绍 cache 和 checkpoint 功能
Broadcast 介绍 broadcast 功能
Job Scheduling 尚未撰写
Fault-tolerance 尚未撰写
可以直接点 md 文件查看。
喜欢看 pdf 版本的可以去 这里 下载。
如果使用 Mac OS X 的话,推荐下载 MacDown 后使用 github 主题去阅读这些文档。
写文档期间为了 debug 系统,自己设计了一些 examples,放在了 SparkLearning/src/internals 下。
本文主要讨论 Apache Spark 的设计与实现,重点关注其设计思想、运行原理、实现架构及性能调优,附带讨论与 Hadoop MapReduce 在设计与实现上的区别。不喜欢将该文档称之为“源码分析”,因为本文的主要目的不是去解读实现代码,而是尽量有逻辑地,从设计与实现原理的角度,来理解 job 从产生到执行完成的整个过程,进而去理解整个系统。 讨论系统的设计与实现有很多方法,本文选择 问题驱
apache spark Apache软件基金会 (ASF)高兴地宣布, Apache Spark已从Apache Incubator毕业,成为一个顶级项目(TLP) ,这表明该项目的稳定性。 Apache Spark是一个开放源代码群集计算框架,用于快速,灵活地进行大规模数据分析。 Spark一直是大数据之乡的话题,预计2014年将是Spark的一年。 根据Spark网站主页,引擎在内存中运行程
基于Spark的电商用户行为分析系统的设计与实现 项目架构 Flume–>Kafka–>Spark Streaming–>Mysql–>FineReport 10 数据可视化使用第三方软件FineReport支持 1. 数据采集:利用Java线程模拟行为数据写入被监控的文件 模拟电商网站用户行为数据(也可与阿里云天池开源数据集:真实的淘宝或天猫用户行为数据) user_id 用户ID,整数类型,序
本书的目标是以简明易懂的方式讲解 Redis 的内部运行机制, 通过阅读本书, 你可以了解到 Redis 从数据结构到服务器构造在内的几乎所有知识。
本书的目标是以简明易懂的方式讲解 Redis 的内部运行机制, 通过阅读本书, 你可以了解到 Redis 从数据结构到服务器构造在内的几乎所有知识。 为了保证内容的简洁性, 本书会尽量以高抽象层次的角度来观察 Redis , 并将代码的细节留给读者自己去考究。 如果读者只是对 Redis 的内部运作机制感兴趣, 但并不想深入代码, 那么只阅读本书就足够了。 另一方面, 对于需要深入研究 Redis
本书的目标是以简明易懂的方式讲解 Redis 的内部运行机制, 通过阅读本书, 你可以了解到 Redis 从数据结构到服务器构造在内的几乎所有知识。 为了保证内容的简洁性, 本书会尽量以高抽象层次的角度来观察 Redis , 并将代码的细节留给读者自己去考究。 如果读者只是对 Redis 的内部运作机制感兴趣, 但并不想深入代码, 那么只阅读本书就足够了。 另一方面, 对于需要深入研究 Redis
类ManagedChannel 在 Channel 的基础上提供生命周期管理的功能。 实际实现式就是添加了 shutdown()/shutdownNow() 方法用于关闭 Channel,isShutdown()/isTerminated() 方法用于检测 Channel 状态, 以及 awaitTermination() 方法用于等待关闭操作完成。 类定义 package io.grpc; pu
类定义 Channel 是一个 abstract class,位于package “io.grpc”, 在 grpc-core 这个jar包中。 package io.grpc; import javax.annotation.concurrent.ThreadSafe; @ThreadSafe public abstract class Channel { ...... } 通过 @Th
本文向大家介绍Android答题APP的设计与实现,包括了Android答题APP的设计与实现的使用技巧和注意事项,需要的朋友参考一下 还没有整理完,待续…… 学校开了Android课,最后让交一个大作业。正好拿来练练手,记录下思路。也希望能给有需要的朋友们一些帮助。恩,纯小白教程,大神们可以绕路了。 作业的题目是这样的: 考试APP系统: 1)要求有用户登陆功能:从远程服务器进行登陆验证。 2)