原則分析スパーク:キュータ+タスク+シャッフル+ BlockManager +のCacheManager +チェックポイント

 

 原則分析をエグゼ

 

タスク分析の原則

 

 

原則分析をシャッフル

1、スパークでは、どのような状況の下で、起こるシャッフルでしょうか?reduceByKey、groupByKey、sortByKey、countByKey、参加するには、コグループ他の操作を。
図2に示すように、デフォルトの動作原理は、プロファイリングシャッフル
最適化された動作シャッフルの原理を分析する、3
。4、ソースコード解析関連シャッフル

スパークシャッフルは、2つの操作を特徴と

第一の特徴
ShuffleMapTask、ディスクにフラッシュされます後に必要なすべてのデータをメモリキャッシュに書き込まれているので、スパークの以前のバージョンでは、バケットキャッシュは、非常に、非常に重要です。しかし、これは問題では、データマップ側が多すぎる場合、メモリオーバーフローを引き起こす可能性がありました。だから、新しいバージョンで、100キロバイトで最適化されたデフォルトのメモリキャッシュにスパーク、そして、データがディスクのしきい値に達した後に、データがディスクに少しフラッシュによって少し意志少しリフレッシュを書きます。
この操作の利点は、メモリ・オーバーフローを起こしやすいではありません。欠点は、メモリー・キャッシュが小さすぎる場合には、過度のディスクIO書き込み動作が発生する可能性があることです。だから、ここのメモリキャッシュサイズだし、それが実際のビジネスの状況に応じて最適化することができます。

第二个特点
与MapReduce完全不一样的是,MapReduce它必须将所有的数据都写入本地磁盘文件以后,才能启动reduce操作,来拉取数据。为什么?因为mapreduce要实现默认的根据key的排序!所以要排序,肯定得写完所有数据,才能排序,然后reduce来拉取。
但是Spark不需要,spark默认情况下,是不会对数据进行排序的。因此ShuffleMapTask每写入一点数据,ResultTask就可以拉取一点数据,然后在本地执行我们定义的聚合函数和算子,进行计算。
spark这种机制的好处在于,速度比mapreduce快多了。但是也有一个问题,mapreduce提供的reduce,是可以处理每个key对应的value上的,很方便。但是spark中,由于这种实时拉取的机制,因此提供不了,直接处理key对应的values的算子,只能通过groupByKey,先shuffle,有一个MapPartitionsRDD,然后用map算子,来处理每个key对应的values。就没有mapreduce的计算模型那么方便。

 

 普通的Shuffle操作原理剖析

 

おすすめ

転載: www.cnblogs.com/Transkai/p/11354843.html