![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spark源码
文章平均质量分 77
大冰的小屋
这个作者很懒,什么都没留下…
展开
-
Spark Shuffle服务和客户端
BlockTransferServiceSpark是分布式部署的,每个Task最终都运行在不同的机器节点上。map任务的输出结果直接存储到map任务所在的机器的存储体系中,reduce任务很可能不在同一台机器上运行,所以需要远程下载map任务的中间输出。ShuffleClient不仅将shuffle文件上传到其他Executor或者下载到本地的客户端,也提供了可以被其他Executor访问的shuf原创 2016-09-11 09:11:46 · 3012 阅读 · 0 评论 -
Spark任务提交与执行之RDD的创建、转换及DAG构建
在这里通过使用wordcount例子来学习Spark是如何进行任务的提交与执行。本次先进行RDD的创建、转换以及DAG的构建进行学习。 整个wordcount的代码可以简单如下实现:sc.textFile("/library/wordcount/input").flatMap(_.split(" ")).map(word => (word, 1)).reduceByKey(_ + _).colle原创 2016-09-25 16:29:21 · 2820 阅读 · 0 评论 -
BlockManager
Spark为了避免Hadoop读写磁盘的I/O操作成为性能瓶颈,优先将配置信息、中间计算结果等数据存入内存,极大的提高了系统的执行效率。1. 块管理器BlockManager块管理器BlockManager是Spark存储体系中的核心组件。Driver 和 Executor都会创建BlockManager。其主构造器如下:/** * Manager running on every node (d原创 2016-09-22 06:47:43 · 3042 阅读 · 0 评论 -
ExternalBlockStore
ExternalBlockStore作为存储Block文件的外部管理器,其实际是封装了TachyonBlockManager。这样做可以更好的解耦合,方便以后加入新的第三方的管理器。ExternalBlockStore创建TachyonBlockManager代码如下:/** * Stores BlockManager blocks on ExternalBlockStore. * We cap原创 2016-09-22 07:04:51 · 840 阅读 · 0 评论 -
SparkContext主要组成部分
1. 基本说明SparkContext是应用程序的提交执行的前提。先来看一下SparkContext的注释:/** * Main entry point for Spark functionality. A SparkContext represents the connection to a Spark * cluster, and can be used to create RDDs, ac原创 2016-09-07 08:21:00 · 7099 阅读 · 2 评论 -
SparkConf
SparkConf的注释:/** * Configuration for a Spark application. Used to set various Spark parameters as key-value pairs. * * Most of the time, you would create a SparkConf object with `new SparkConf()`, w原创 2016-08-25 08:49:39 · 2212 阅读 · 0 评论 -
内存存储 MemoryStore
MemoryStroe负责将没有序列化的Java对象数组或者序列化的ByteBuffer存储到内存中。 1. entries : 存储Block数据的Map,key 为 BlockId,value 为 MemoryEntry,并能根据存储的先后顺序访问; private val entries = new LinkedHashMap[BlockId, MemoryEntry](32, 0.75f原创 2016-09-15 06:34:39 · 3547 阅读 · 0 评论 -
磁盘存储DiskStore
当MemoryStore没有足够的空间时,就会使用DiskStore将块存入磁盘。DiskStore继承自BlockStore,实现了getBytes、putBytes、putArray、putIterator等方法。val minMemoryMapBytes = blockManager.conf.getSizeAsBytes("spark.storage.memoryMapThreshold",原创 2016-09-14 06:49:00 · 1595 阅读 · 0 评论 -
BlockManagerMaster对BlockManager的管理
BlockManagerMaster是在SparkEnv中创建的,负责对Block的管理和协调,具体操作依赖于BlockManagerMasterEndpoint。Drive和Executor处理BlockManagerMaster的方式不同: val blockManagerMaster = new BlockManagerMaster(registerOrLookupEndpoint(原创 2016-09-12 06:50:50 · 4067 阅读 · 0 评论 -
磁盘块管理器DiskBlockManager
BlockManager管理和维护了逻辑上的Block和存储在Disk上的物理的Block的映射。默认情况下,一个逻辑的Block会根据它的BlockId生成的名字映射到一个物理上的文件。但是,也可以使用mapBlockToFileSegment方法映射到一个文件的一段区域。 这些物理文件会被hash到由spark.local.dir(或者通过SPARK_LOCAL_DIRS来设置)上的不同目录中原创 2016-09-13 07:19:06 · 2372 阅读 · 0 评论 -
SparkEnv
SparkEnv是Spark的执行环境对象,其中包括与众多Executor执行相关的对象。在local模式下Driver会创建Executor,local-cluster部署模式或者Standalone部署模式下Worker另起的CoarseGrainedExecutorBackend进程中也会创建Executor,所以SparkEnv存在于Driver或者CoarseGrainedExecutor原创 2016-09-08 06:47:18 · 2551 阅读 · 0 评论