大数据/spark/源码
文章平均质量分 78
莫言静好、
这个作者很懒,什么都没留下…
展开
-
Spark源码分析之Master启动和通信机制
Master主要就是用于管理集群,负责资源的调度什么的。它继承了ThreadSafeRpcEndpoint和LeaderElectable,由于继承ThreadSafeRpcEndpoint,所以Master就可以作为一个RpcEndpoint;继承LeaderElectable之后,就可以参见选举原创 2017-11-09 09:35:18 · 883 阅读 · 0 评论 -
Spark源码分析之Sort-Based Shuffle读写流程
一 概述我们知道Spark Shuffle机制总共有三种:# 未优化的Hash Shuffle:每一个ShuffleMapTask都会为每一个ReducerTask创建一个单独的文件,总的文件数是S * R,不仅文件数量很多,造成频繁的磁盘和网络I/O,而且内存负担也很大,GC频繁,经常出现OOM。# 优化后Hash Shuffle:改进后的Shuffle,启用consolidatio原创 2017-11-10 21:04:15 · 993 阅读 · 0 评论 -
Spark源码分析之Task
一 TaskRunner 运行taskoverride defrun(): Unit = { val threadMXBean= ManagementFactory.getThreadMXBean // 构建task内存管理器 val taskMemoryManager= new TaskMemoryManager(env.memoryManager,原创 2017-11-10 21:04:43 · 410 阅读 · 0 评论 -
Spark源码分析之BlockManagerMaster
主要负责整个应用程序在运行期间block元数据的管理和维护,以及向从节点发送指令执行命令。一 核心属性RpcEndpointRef: driverEndpointBlockManagerMasterEndpoint通信终端Boolean isDriver: 是否在Driver 二 重要方法2.1 从driver通信终端删除一个executordefremoveExe原创 2017-11-10 21:05:17 · 623 阅读 · 0 评论 -
Spark源码分析之BlockManager
BlockManager是对外提供的统一访问block的接口,在Master和Slave上都有一个实例,他提供读写数据的方法,并且根据不同StorageLevel调用不同的BlockStore来读写数据。在应用程序启动的时候,SparkContext会创建Driver端的SpakEnv,在该SparkEnv中实例化BlockManager和BlockManagerMaster,在其内部创建消息原创 2017-11-10 21:05:53 · 929 阅读 · 0 评论 -
Spark源码分析之BlockManager通信机制
Spark源码分析之BlockManager通信机制原创 2017-11-10 21:06:18 · 523 阅读 · 0 评论 -
Spark源码分析之DiskBlockMangaer分析
Spark源码分析之DiskBlockMangaer分析原创 2017-11-10 21:06:36 · 257 阅读 · 0 评论 -
Spark源码分析之MemoryManager
Spark源码分析之MemoryManager原创 2017-11-11 10:19:05 · 442 阅读 · 0 评论 -
Spark源码分析之BlockStore
Spark源码分析之BlockStore原创 2017-11-11 10:19:21 · 493 阅读 · 0 评论 -
Spark源码分析之cahce原理分析
Task运行的时候是要去获取Parent 的RDD对应的Partition的数据的,即它会调用RDD的iterator方法把对应的Partition的数据集给遍历出来,然后写入存储,这个存储可能是磁盘或者内存,取决于StorageLevel是什么。 如果当前RDD的StorageLevel不为空,则表示已经存持久化了,我们可以直接在内存中获取,而不是去计算Parent RDD。如果没有St原创 2017-11-11 10:19:41 · 522 阅读 · 0 评论 -
Spark源码分析之HashShuffle读写流程
Spark源码分析之HashShuffle读写流程原创 2017-11-10 21:02:59 · 497 阅读 · 0 评论 -
Spark源码分析之Executor分析
Executor是在worker启动的一个进程,用于执行task任务。我们知道CoarseGrainedSchedulerBackend在启动之后,会创建Driver终端,然后会立即向Driver发送RegisterExecutor消息,注册成功之后,会向CoarseGrainedSchedulerBackend返回一个RegisteredExecutor消息然后会创建一个Executor对象原创 2017-11-10 21:02:34 · 604 阅读 · 0 评论 -
Spark源码分析之SchedulerBackend分析
TaskScheduler是一个接口,DAGScheduler在提交TaskSet给底层调度器的时候是面向接口TaskScheduler。TaskSchduler的核心任务是提交Taskset到集群运算并汇报结果原创 2017-11-10 21:02:17 · 945 阅读 · 0 评论 -
Spark源码分析之Master主备切换机制
Master作为Spark standalone模式的核心,如果Master出现异常,那么集群就不能正常工作。所以Spark会从Standby中选择一个节点作为Master.原创 2017-11-09 09:38:46 · 1024 阅读 · 0 评论 -
Spark源码分析之Master资源调度算法原理
Master是通过schedule方法进行资源调度,告知worker启动executor等。原创 2017-11-09 09:41:53 · 814 阅读 · 0 评论 -
Spark源码分析之Master状态改变处理机制原理
一Master故障挥着宕机,可能触发新的Master选举当重新选择Leader的时候,会进行集群的恢复,在恢复的过程中,就会向Worker和AppClient发送MasterChanged消息。private def beginRecovery(storedApps: Seq[ApplicationInfo], storedDrivers: Seq[DriverInfo], sto原创 2017-11-09 09:44:18 · 524 阅读 · 0 评论 -
Spark源码分析之Master注册机制原理
一 Worker向Master注册1.1 Worker启动,调用registerWithMaster,向Master注册当worker启动的时候,会调用registerWithMaster方法# 注册状态置为false# 尝试向所有master注册# 后台线程定时调度,发送ReregisterWithMaster请求,如果之前已经注册成功,则下一次来注册,则啥也不做原创 2017-11-09 09:47:30 · 801 阅读 · 0 评论 -
Spark源码分析之SparkContext
SparkContext是用户和Spark集群交互的唯一入口,它的主要是有两个:#可以用来创建RDD,累加器和广播变量#初始化应用程序所需要的核心组件,为应用程序准备运行环境 只可以有一个SparkContext实例运行在一个JVM中,所以在创建SparkContext的时候之前,确保之前的SparkContext已经关闭了,即调用stop方法停止当前JVM中唯一运行的Sp原创 2017-11-09 09:49:06 · 762 阅读 · 0 评论 -
Spark源码分析之Job触发原理
一 Job的执行流程1.1 从数据源加载数据,数据源可以是本地数据文件和HDFS文件,也可以你是内存里的数据结构或者HBase等,创建初始的RDD1.2 对RDD进行一系列的transformation操作,每一个transformation可能产生一个或者多个RDD1.3 对最后的final RDD进行action操作,触发job操作,将最后每一个分区计算后得到结果1.4 对原创 2017-11-09 09:51:36 · 619 阅读 · 0 评论 -
Spark源码分析之DAGScheduler以及stage的划分
Spark源码分析之DAGScheduler以及stage的划分原创 2017-11-09 09:54:56 · 948 阅读 · 0 评论 -
Spark源码分析之TaskSetManager分析
Spark源码分析之TaskSetManager分析原创 2017-11-09 09:56:40 · 1308 阅读 · 0 评论 -
Spark源码分析之Worker启动通信机制
Worker是spark的工作节点,主要负责接受Master指令,启动或者杀掉Executor,Driver等;汇报Driver或者Executor状态到Master;发送心跳请求到Master等等原创 2017-11-09 09:32:56 · 700 阅读 · 0 评论 -
Spark源码分析之Checkpoint机制
对于一个复杂的RDD,我们如果担心某些关键的,会在后面反复使用的RDD,可能会因为节点的故障,导致持久化数据的丢失,就可以针对该RDD启动checkpoint机制,实现容错和高可用。原创 2017-11-11 10:20:20 · 703 阅读 · 0 评论