美文网首页
Spark writer

Spark writer

作者: clive0x | 来源:发表于2019-07-28 12:43 被阅读0次

对UnsafeShuffleWriter可优化配置主要在最终多个spill合并时,input和output缓存配置(mergeSpills方法),有transferTo(跳过Ring0,Ring 3层直接copy,主要在大文件场景,小文件或者有些内存bug场景不合适)和普通FileStream操作

TransferTo分支配置:

1.spark.shuffle.unsafe.fastMergeEnabled:True

2.spark.shuffle.compress为False ,或者为True时,spark.io.compression.codec:Snappy,LZF,LZ4,ZStd,默认LZ4,这点比Hadoop要好,Hadoop默认为zip,导致为不能blocks并发处理,也就失去并发计算框架能力。

普通FileStream优化参数,input/output buffer

spark.shuffle.file.buffer:32K

spark.shuffle.unsafe.file.output.buffer:32K

内存array:LongArray初始大小spark.shuffle.sort.initialBufferSize:4K 

默认使用spark.shuffle.sort.useRadixSort:True 排序算法,比Tim Sort排序算法要快。缺点是在数组中排序,内存要增加0.5倍左右。

BypassMergeSortShuffleWriter条件分支:

1.没有order.

2.没有map combine.

3.partitions(Reduce数)小于spark.shuffle.sort.bypassMergeThreshold

BypassMergeSortShuffleWriter,同时打开partitions个临时文件写入,没有内存缓存,没有sort和merge,只是在最后阶段把NumberOf(partitions)临时文件合并到一个大文件,缺点是如果map*reduce足够多,走了hashsort老路。

SortShuffleWriter,数据写入内存(map combine:PartitionedAppendOnlyMap,否则PartitionedPairBuffer,都是array(2*len):k1v1k2v2...knvn,区别,前者返回在前面buckets,需要移动位置),内存不够时sort并spill产生临时文件,最终多个spill文件与内存数据排序与merge。

Shuffle落地磁盘文件,以map为单位落地数据文件和索引文件

localdirs[x]/subDirsPerLocalDir[y]/shuffle_[shuffle_id]_[map_id]_0_data

localdirs[x]/subDirsPerLocalDir[y]/shuffle_[shuffle_id]_[map_id]_0_index

相关文章

  • Spark writer

    对UnsafeShuffleWriter可优化配置主要在最终多个spill合并时,input和output缓存配置...

  • Spark Shuffle Writer

    概述 Spark Shuffle过程就是根据分区规则将数据进行重新分配,Shuffle过程中会涉及到磁盘IO和网络...

  • Hbase高可用集群搭建

    hadoop和spark高可用集群搭建参考链接:http://www.jianshu.com/writer#/no...

  • Spark shuffle writer源码解析

    Shuffle分类 一个作业经过spark的DAGSchedule调度器划分为多个stage,同时有些下游的sta...

  • Spark源码解析之Shuffle Writer

    摘要:Shuffle是MapReduce编程模型中最耗时的一个步骤,而Spark将Shuffle过程分解成了Shu...

  • Spark Connector Writer 原理与实践

    在《Spark Connector Reader 原理与实践》[https://nebula-graph.com....

  • Three useful monads

    Writer newtype Writer w a = Writer { runWriter :: (a, w) ...

  • As a writer

    1.深夜码字。 夜色沉寂,而你仍不断敲击着键盘,匆匆抓起桌上的水喝了几口,思考着接下来的剧情是要甜的喉咙发痒还是...

  • oracle 术语

    DBWn = Database writer process LGWR = Log writer process ...

  • Java通过流关闭窗口

    PrintWriter writer = response.getWriter();writer.write(" ...

网友评论

      本文标题:Spark writer

      本文链接:https://www.haomeiwen.com/subject/kqiurctx.html