Spark任务输出追踪器MapOutputTracker详解

spark高级数据分析实战---随机森林实现 **package** mllib.tree **import** org.apache.log4j.{Level, Logger} **import** org.apache.spark.mllib.evaluation.MulticlassMetrics **import** org.apache.spark.mllib.linalg.Vectors **import** org.apache.spark.mllib.regression.LabeledPoint **import** org.apa 阅读详情
一.什么是shuffle

MapOutputTrancker用于跟踪map任务的输出状态,此状态便于reduce任务定位到map输出结果所在的节点地址,进而获取中间输出结果,每个map任务或者reduce任务,都会有其唯一的标识,分别为mapid和reduceid,每个reduce任务的输入可能是多个map任务的输出,因为reduce可能会到多个map任务所在的节点上去拉取Block,这一过程叫做shuffle,每次shuffle的过程都有其唯一的标识shuffleid.

二.MapOutputTrancker的创建方式

在Driver端和Executor端启动的同时,都会创建MapOutputTrancker的实例,不同的是Driver端创建的是MapOutputTranckerMaster,Executor端创建的是MapOutputTranckerWoker。

  • Driver端启动时会创建MapOutputTranckerMaster,之后创建MapOutputTranckerMasterEndpoint,并且注册到Dispatcher中,端点名称为MapOutputTrancker。

  • Executor端创建MapOutputTranckerWorker,不仅会和Driver端一样,注册端点信息等,而且会从远端Driver获取之前在NettyRpcEnv的Dispatcher中注册好的MapOutputTranckerMasterEndpoint的引用。

三.MapOutputTrancker的属性
  • trackerEndpoint:持有Driver端上MapOutputTranckerMasterEndpoint的引用Ref
  • mapStatuses:用于维护各个map任务输出的状态,类型为Map[Int,Array[MapStatus]],key为shuffleid,Array存储着各
Spark Shuffle源码分析系列之MapOutputTracker MapOutputTrackerspark环境的主要组件之一,其功能有三方面,首先DAGScheduler使用MapOutputTrackerMaster来管理各个ShuffleMapTask的输出数据[MapStatus],另外根据各ShuffleMapTask结果的统计信息来进行尽可能的本地化Scheduler;其次ShuffleMapStage使用MapOutputTrackerMaster来判断是否要进行ShuffleMapTask的计算;最后ShuffleReduce任务用来获取从哪些exec. 阅读详情

相关推荐

spark源码分析- shuffle read

Spark会将job划分为多个Stage,每个job会由多个ShuffleMapStage和一个ResultStage组成,然后每个Stage会由多个Task组成,Task数量和每个Stage的Partition的数量相同。每个Task任务由单独的线程执行,不同Stage的Task之间需要进行数据流动,并且下游Stage的Task会依赖上游Stage的多个Task,所以该过程需要将数据写入磁盘,并...

Shie_3的博客 862

MapOutputTracker

# MapOutputTracker map任务输出跟踪器 源码清单和我的理解注释 初始化变量 /** Set to the MapOutputTrackerMasterEndpoint living on the driver. */ //创建RpcEndpoint的引用,RpcEndpoint是rpc的一个端点,在收到特定消息会触发特定的函数 var trackerEndpoint: Rp...

铁扇纶巾 466

spark学习-35-Spark的Map任务输出跟踪器MapOutputTracker

1。在sparkEnv的初始化中有这样一段代码来初始化Map任务输出跟踪器MapOutputTracker   mapOutputTracker用于跟踪map阶段任务输出状态,此状态便于reduce阶段任务获取地址以及中间输出结果。每个map任务或者 reduce任务都会有唯一的标识。分别为mapId和reduceId.每个reduce任务的输入可能是多个map任务输出,reduce会到各个ma

九师兄 4610

spark-core_20: MapOutputTrackerMaster、MapOutputTrackerMapOutputTrackerMasterEndpoint等源码分析

1,在SparkEnv.create()初始化了MapOutputTrackerMaster(记录ShuffleMapTask输出信息)val mapOutputTracker = if (isDriver) {  /* MapOutputTrackerMaster属于driver,这里使用TimeStampedHashMap来跟踪 map的输出信息,也可以将旧信息进行清除    * 一、MapO...

luyllyl的博客 2694

spark源码-shuffle原理分析-3-MapOutputTracker

spark源码、shuffle原理分析、MapOutputTracker

m0_37817767的博客 2010

Spark 源码分析 -- Stage

理解stage, 关键就是理解Narrow Dependency和Wide Dependency, 可能还是觉得比较难理解 关键在于是否需要shuffle, 不需要shuffle是可以随意并发的, 所以stage的边界就是需要shuffle的地方, 如下图很清楚 并且Stage分为两种, shuffle map stage, in which case its tasks' r...

weixin_30725467的博客 125

深入理解SparkEnv

SparkEnv.scala注释 SparkEnv.scala private[spark] def createDriverEnv( conf: SparkConf, isLocal: Boolean, ... // 每个executor中的core的数量 numCores: Int, ... create( ...

小朋友2滴偷偷的在写博客 738

大规模数据处理中拒绝连接错误分析处理

1、处理的数据有几百个G,把数据处理成按照手机号计算1万多个特征 ;2、数据处理环境:     spark-2.0.2;    --executor-memory 40g --total-executor-cores 120 --driver-memory 40g  3、报的错误org.apache.spark.shuffle.MetadataFetchFailedException: Missi...

大师兄你家猴跑啦的博客 4640

Spark执行环境——map任务输出跟踪器

mapOutputTracker用于跟踪map任务输出状态,此状态便于reduce任务定位map输出结果所在的节点地址,进而获取中间输出结果。每个map任务或者reduce任务都会有其唯一标识,分别为mapId和reduceId。每个reduce任务的输入可能是多个map任务输出,reduce会到各个map任务所在的节点上拉取Block,这一过程叫做Shuffle。每次Shuffle都有唯一的...

LINBE_blazers的博客 1473

Spark的数据输入、数据计算、数据输出

PySpark的编程,主要氛围三大步骤:1)数据输入、2)数据处理计算、3)数据输出1)数据输入:通过SparkContext对象,晚上数据输入2)数据处理计算:输入数据后得到RDD对象,对RDD对象进行迭代计算3)数据输出:最终通过RDD对象的成员方法,完成数据输出工作。

weixin_52053631的博客 853

Spark——(文件输入与输出,算子综合应用)

数据读取:textFile(String)。可指定单个文件,支持通配符。这样对于大量的小文件读取效率并不高,应该使用 wholeTextFiles。数据保存:saveAsTextFile(String)。

qq_43408367的博客 605

Spark RDD

1

weixin_55988146的博客 601

Spark-MapOutputTracker 源码解析

Spark-MapOutputTracker 源码解析MapOutputTrackerMasterMapOutputTrackerWorkerabstract MapOutputTrackerclass ShuffleStatus MapOutputTracker 一共有2种类型,一个是MapOutputTrackerMaster,另一个是MapOutputTrackerWorker。 MapOu...

u010374412的博客 570

Spark MapOutputTracker原理

本文主要对Spark MapOutputTracker的架构、原理进行了分析

落枫寒的博客 2472

Spark config配置项 一览

Spark config配置项 一览env配置 env配置 SPARK_PRINT_LAUNCH_COMMAND -> true 表示在spark-submit 提交job的时候是否打印LaunchCommand

u010374412的博客 5351

SparkStreaming 消费阿里云日志服务,出现消费中断的情况,跑着跑着就不消费了...

日志信息 WARN metadata.Hive: No partition is generated by dynamic partitioning WriteAheadLogBasedStoreResult Futures timed out after 这边是表在HDFS中的路径,可以看出,有数据时,会有.hive_stagexxxx 这样的文件, 无数据进来就没有,这时候Streami...

Apache_Jerry的博客 2151

Spark:遇到问题汇总

问题一:Map output statuses were bytes which exceeds spark.akka.frameSize   17/10/12 00:15:38 INFO spark.MapOutputTrackerMasterActor: Asked to send map output locations for shuffle 1 to spark...

不花的花和尚的博客 648

Hadoop学习之shuffle过程最详细讲解

hadoop1.x和hadoop2.x的区别: Hadoop1.x版本: 内核主要由Hdfs和Mapreduce两个系统组成,其中Mapreduce是一个离线分布式计算框架,由一个JobTracker和多个TaskTracker组成。 JobTracker的主要作用:JobTracker是框架的中心,接收任务,计算资源,分配资源,分配任务,与DataNode进行交流等功能。决策程序失败时 重...

大数据指北 9474
上一篇: 原理解析 | 深入了解 Apache Flink 的网络协议栈
下一篇: 决策树与随机森林及其在SparkMllib中的使用
叫我不矜持
博客等级 码龄8年 29粉丝 169原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值