窄依赖⽗RDD的partition和⼦RDD的parition是不是都是⼀对⼀的关系?
解析:
答:不⼀定,除了⼀对⼀的窄依赖,还包含⼀对固定个数的窄依赖(就是对⽗RDD的依赖的Partition的数量不会随着RDD数量规模的改变⽽改变),⽐如join操作的每个partiion仅仅和已知
的partition进⾏join,这个join操作是窄依赖,依赖固定数量的⽗rdd,因为是确定的partition关系
Hadoop中,Mapreduce操作的mapper和reducer阶段相当于spark中的哪⼏个算⼦?
解析:
答:相当于spark中的map算⼦和reduceByKey算⼦,当然还是有点区别的,MR会⾃动进⾏排序的,spark要看你⽤的是什么partitioner
什么是shuffle,以及为什么需要shuffle?
解析:
shuffle中⽂翻译为洗牌,需要shuffle的原因是:某种具有共同特征的数据汇聚到⼀个计算节点上进⾏计算
不需要排序的hash shuffle是否⼀定⽐需要排序的sort shuffle速度快?
解析:
答:不⼀定!!当数据规模⼩,Hash shuffle快于Sorted Shuffle数据规模⼤的时候;当数据量⼤,sorted Shuffle会⽐Hash shuffle快很多,因为数量⼤的有很多⼩⽂件,不均匀,甚⾄出现数
据倾斜,消耗内存⼤,1.x之前spark使⽤hash,适合处理中⼩规模,1.x之后,增加了Sorted shuffle,Spark更能胜任⼤规模处理了。
解析:
答:1)shuffle产⽣海量的⼩⽂件在磁盘上,此时会产⽣⼤量耗时的、低效的IO操作;2).容易导致内存不够⽤,由于内存需要保存海量的⽂件操作句柄和临时缓存信息,如果数据处理规模
⽐较⼤的化,容易出现OOM;3)容易出现数据倾斜,导致OOM