Technology sharing

scintilla versas chartulas - shuffle procuratio

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

ShuffleManager

Vestibulum ut vestibulum ante. ShuffleManager creatur in sparkEnv in exactore et executore. Mandare versare in exactore et legere et scribere data in ipso executore.

registerShuffle: mandare miscere, reddere shuffleHandle
unregisterShuffle, remove shuffle
shuffleBlockResolver accipe shuffleBlockResolver, tractamus de necessitudine inter miscere et obstructionum
getWriter: accipe scriptorem partitioni respondentem et appellant in charta munus exsecutoris
getReader, getReaderForRange: accipe lectorem amplis partitionis et appella in redigendum munus exsecutoris.

SortShuffleManager

Sola exsecutio est shuffleManager.
In quadam shuffle fundato, epistulae advenientes secundum partitiones digestae sunt, et tandem fasciculus separatus est output.
Redigo regionem notitiarum ex hoc documento leget.
Cum fasciculus output nimis magnus est ut in memoriam aptus sit, fasciculus effectus intermedius sorted in disco effundetur, et haec fasciculi intermedia in ultimam pro output mittentur.
Sort-fundatur miscere duos modos habet:

  • Serialized sort, tres condiciones occurrere necesse est ut ad genus serialissum utendum:
    1. Nulla tabula parte combinant
    2. Sustinet valorem relocation serialized (KryoSerializer et sparkSql consuetudo serializer)
    3. Minus quam vel aequalis ad saepta 16777216.
  • Non-serialized modi, non-serialized modi adhiberi possunt in omnibus aliis casibus

Commoda serialized sort
In quodam modo serialized, scriptor miscens nuntiis ineuntes serializet, eas in structuram datas servat, et genera earum.

  1. Sorting of data binarii instead of objects of Java: operationes Sorting operationes directe exercentur in notitia binaria serialized potius quam in obiectis Java, quae consumptionem memoriae minuit et collectionem purgamentorum (GC) supra caput minuit.
    Haec optimazatio requirit ut recordum serializer usus habeat proprietates specificas quae records serialized permittunt reordinari sine illis prius deserientibus.
  2. Cache efficens algorithmus genus: utere speciali modo destinato cache-effective sorter (ShuffleExternalSorter), quod potest significare recordum compressum monstratorem ordinatam et partitionem ID. Sumendo tantum octo bytes spatii per recordum, hoc consilium permittit plures notitias aptare in cella, ita melius perficiendi.
  3. Superfluum bus processum in schedulis in eadem partitione conficitur.
  4. Si pressio redundantia codec sustinet concatenationem notitiarum compressarum, tunc processus mergi redundans simpliciter concatenat serialisem et compressum exuberantem partitionem datam ad formandum extremam partitionem. Hoc permittit uti methodi efficientis directae notitiae exemplaris, qualia sunt transferTo in NIO, et necessitatem evitat decompressione vel effingo buffers in processu merge, altiore efficientia meliore.

registerShuffle

Elige secundum diversum missiones correspondentem manubrium. Ordo prioritas est BypassMergeSortShuffleHandle> SerializedShuffleHandle>BaseShuffleHandle

Praetermitte condicionem: nulla tabula, numerus partitionum minor est quam vel aequalis _SHUFFLE_SORT_BYPASS_MERGE_THRESHOLD_

Serialization condiciones tractamus: Migratio obiecti serialisationi genus adiuvat, operatione combinata non utitur et numerus partitionum parentis RDD maior non est quam (1 << 24)

getwriter

Primum cache hanc shuffle et chartam geographicam in taskIdMapsForShuffle_
Lego scriptorem respondentem secundum manubrium ad versas chartulas respondentes.
BypassMergeSortShuffleHandle-> BypassMergeSortShuffleWriter
SerializedShuffleHandle-> UnsafeShuffleWriter
BaseShuffleHandle->SortShuffleWriter

unregisterShuffle

taskIdMapsForShuffle removet versas chartulas correspondentes et tabulas quae generantur per tabulam miscere correspondentem

getReader / getReaderForRange

Omnes inscriptiones electronicae ad versas fasciculos respondentes, hoc est, blocksByAddress.
Obiectum BlockStoreShuffleReader creat et redit.

ShuffleHandle

Maxime usus est ad ambitum versas transeundi, et notare etiam est quem scriptorem eligat.

BaseShuffleHandle

BypassMergeSortShuffleHandle

SerializedShuffleHandle

ShuffleWriter

Classis abstracta, responsalis pro tabulario negotii output nuntii

  • BypassMergeSortShuffleWriter
  • SortShuffleWriter
  • UnsafeShuffleWriter

Seorsim postea explicabitur.

ShuffleBlockResolver

Trait, exsecutio classis consequi potest notitias congruentes clausus in tabulis mapId, reduceId, shuffleId.

IndexShuffleBlockResolver

Solum genus exsecutionis ShuffleBlockResolver.
Facere et conservare mappings inter logicales stipites et corporales fasciculi locationes ad notitias commissuras ad commissuram ab eadem tabula facienda.
Shuffle notitia scandali ad eandem molis tabulam pertinentes in tabella notitiarum solidata reponenda erit.
Exsertiones harum notitiarum caudices in scheda data separatim in indicem fasciculi reponuntur.
.data est notitia lima que
.index est index lima suffixo

getDataFile

Adepto lima notitia.
Generate ShuffleDataBlockId et vocant blockManager.diskBlockManager.getFile modum obtinendi tabella

getIndexFile

Similes getDataFile
Generate ShuffleIndexBlockId et vocant blockManager.diskBlockManager.getFile modum ad obtinendam tabellam

removeDataByMap

Accipere tabellam datam et indicem fasciculi in secundum shuffleId et mapId, et dele eas

writeIndexFileAndCommit

Tabellam datam et indicem datam obtine secundum tabulam geographicam et shuffleId.
Compesce num fasciculi notitiae et indices existant et inserere, et directe redire.
Si non congruit, novus fasciculus temporalis index generabitur. Tunc fasciculi indicem generatum in nomine appellationis et in notitia lima et in reditu.


Pone quod versas tres partitiones habet, et datae magnitudinum correspondentes sunt 1000 1500 et 2500 respective.
In indice fasciculi, prima linea est 0, quam sequitur partitio cumulativo pretii.
Documenta data sunt repositae magnitudinis partitione digesta.

checkIndexAndDataFile

Cognoscere an schedulae notae et indicem paginarum aequant. Si non aequant, nullum redditur.
1.The indicem fasciculi amplitudo est (+ caudices 1) * 8L
2. Prima linea indicem lima est 0
3. Quantitatem partitionis obtine et in longitudinem scribe.
Si praedictae tres conditiones obviae sunt, longitu- dine reddatur, alioquin nullum redditur.

getBlockData

Get shuffleId, mapId, startReduceId, endReduceId
Adepto index lima
Legunt correspondentes startOffset et endOffset
Utere notitia lima, startOffset, endOffset ad generandum FileSegmentManagedBuffer et reditus