Hash-based Shuffle内幕彻底解密
1 Hash Shuffle彻底解密2 Shuffle Pluggable解密3 Sorted Shuffle解密4 Shuffle性能优化
/*** Choose a partitioner to use for a cogroup-like operation between a number of RDDs.*选择一个分区使用一个群就像一批RDDS之间操作。* If any of the RDDs already has a partitioner, choose that one.** Otherwise, we use a default HashPartitioner. For the number of partitions, if* spark.default.parallelism is set, then we'll use the value from SparkContext* defaultParallelism, otherwise we'll use the max number of upstream partitions.** Unless spark.default.parallelism is set, the number of partitions will be the* same as the number of partitions in the largest upstream RDD, as this should* be least likely to cause out-of-memory errors.** We use two method parameters (rdd, others) to enforce callers passing at least 1 RDD.*/def defaultPartitioner(rdd: RDD[_], others: RDD[_]*): Partitioner = {val bySize = (Seq(rdd) ++ others).sortBy(_.partitions.size).reversefor (r <- bySize if r.partitioner.isDefined && r.partitioner.get.numPartitions > 0) {return r.partitioner.get}if (rdd.context.conf.contains("spark.default.parallelism")) {new HashPartitioner(rdd.context.defaultParallelism)} else {new HashPartitioner(bySize.head.partitions.size)}}
}
val shortShuffleMgrNames = Map("hash" -> "org.apache.spark.shuffle.hash.HashShuffleManager","sort" -> "org.apache.spark.shuffle.sort.SortShuffleManager","tungsten-sort" -> "org.apache.spark.shuffle.sort.SortShuffleManager")val shuffleMgrName = conf.get("spark.shuffle.manager", "sort")val shuffleMgrClass = shortShuffleMgrNames.getOrElse(shuffleMgrName.toLowerCase, shuffleMgrName)val shuffleManager = instantiateClass[ShuffleManager](shuffleMgrClass)val useLegacyMemoryManager = conf.getBoolean("spark.memory.useLegacyMode", false)val memoryManager: MemoryManager =if (useLegacyMemoryManager) {new StaticMemoryManager(conf, numUsableCores)} else {UnifiedMemoryManager(conf, numUsableCores)}
DT大数据梦工厂
新浪微博:www.weibo.com/ilovepains/
微信公众号:DT_Spark
博客:http://.blog.sina.com.cn/ilovepains
TEL:18610086859
Email:18610086859@vip.126.com
Hash-based Shuffle内幕彻底解密相关推荐
- spark Hash Shuffle内幕彻底解密
本博文的主要内容: 1.Hash Shuffle彻底解密 2.Shuffle Pluggable解密 3.Sorted Shuffle解密 4.Shuffle性能优化 一:到底什么是Shuffle? ...
- spark shuffle 内幕彻底解密
一:到底什么是Shuffle? Shuffle中文翻译为"洗牌",需要Shuffle的关键性原因是某种具有共同特征的数据需要最终汇聚到一个计算节点上进行计算. 二:Shuffle可 ...
- 阿里云Spark Shuffle的优化
转自:大数据技术与架构 本次分享者:辰石,来自阿里巴巴计算平台事业部EMR团队技术专家,目前从事大数据存储以及Spark相关方面的工作. Spark Shuffle介绍 Smart Shuffle设计 ...
- spark union 会引起shuffle吗_Spark高性能Job
知乎导入md文件会失真,无语,将就着看吧!原博客地址为:Spark高性能Job 1.1 Job 遇到一个action算子就会提交一个job,常见的transformation算子以及Action算子: ...
- Spark 系列——Spark的Shuffle原理
目录 一.基本介绍 1.1 Lineage 1.2 窄依赖 1.3 宽依赖 二.Spark Shuffle的原理 2.1 ShuffleManager 2.2 ShuffleWriter 2.2.1 ...
- Spark shuffle机制演进史及原理说明(sort-based/hash-based/bypassShuffleManager)
spark shuffle 演进的历史 Spark 0.8及以前 Hash Based Shuffle Spark 0.8.1 为Hash Based Shuffle引入File Consolidat ...
- 2018年新春报喜!热烈祝贺王家林大咖大数据经典传奇著作《SPARK大数据商业实战三部曲》 畅销书籍 清华大学出版社发行上市!
2018年新春报喜!热烈祝贺王家林大咖大数据经典传奇著作<SPARK大数据商业实战三部曲>畅销书籍 清华大学出版社发行上市! 本书基于Spark 2.2.0新版本,以Spark商业案例实战 ...
- 群内2018_4月讨论整理2
归档至github 说明 以下内容来自群中出现的问题,大家讨论的结果 Q群:432600958 微信群:加微信w3aboutyun,附上about云铁粉 部分内容整理时,已经注明出处,但很多内容,较为 ...
- sparkcore分区_Spark学习:Spark源码和调优简介 Spark Core (二)
本文基于 Spark 2.4.4 版本的源码,试图分析其 Core 模块的部分实现原理,其中如有错误,请指正.为了简化论述,将部分细节放到了源码中作为注释,因此正文中是主要内容. 第一部分内容见: S ...
最新文章
- 正确的 Git 提交记录和分支模型
- Paxos、ZAB、RAFT协议
- 标题与文字的组合[摘]
- linux tcp在传输数据的时候断网了_选择最合适的协议 让传输数据更灵敏
- 【送书】2021年哪些好书值得读(小姐姐配音)
- OSChina 周四乱弹 —— 要成立复仇者联盟了,来报名
- 年仅26岁!这位双一流大学的特任教授,攻克世界数学难题
- 安卓手机浏览器_chrome浏览器插件安卓下载-chrome apk手机版下载v4.8.2安卓版
- Gridview模板中提供的删除功能
- linux tcp文件分包_畅谈linux下TCP(下)
- 几百万消息在消息队列里积压了几个小时!完了。。。
- Assembly.CreateInstance()与Activator.CreateInstanc
- 3分钟全面了解元数据和数据元
- egret引擎生命周期相关
- Python 集和篇
- 邮件服务器正常工作亮几个灯,光纤猫正常亮几个灯 光纤猫的灯都代表意思是什么【详解】...
- mysql错误1548 Cannot load from mysql.proc的最终解决方法
- centos发现网络连不上了,重启网络服务报错“systemctl status network.service” and “journalctl -xe” for details. [失败]
- div 设置a4大小_网页打印时设置A4大小
- 腾讯CSIG面试题目总结