Hadoop e riutilizzo degli oggetti, perché?

4

In Hadoop, gli oggetti passati ai riduttori vengono riutilizzati . Questo è estremamente sorprendente e difficile da rintracciare se non te l'aspetti. Inoltre, il tracker originale per questa "funzione" non offre alcuna prova che questa modifica abbia effettivamente migliorato le prestazioni (a meno che non l'ho perso).

It would speed up the system substantially if we reused the keys and values [...] but I think it is worth doing.

Questo sembra completamente contrario a questa risposta molto popolare . C'è qualche credito per l'affermazione dello sviluppatore Hadoop? C'è qualcosa di "speciale" su Hadoop che invalida la nozione di creazione di oggetti a basso costo?

    
posta Andrew White 11.02.2014 - 16:37
fonte

1 risposta

1

Se leggi l'articolo che hai collegato, si dice

Running a simple unit test on your desktop machine should highlight that creating 1x10^6 new String objects with random byte content is slower than using a single Text object and calling the set method to configure the underlying byte contents

Bene, questo è evidente. Creare un milione di nuove stringhe sarà sempre più lento rispetto all'utilizzo di un StringBuilder per manipolare una singola stringa; tutti lo sanno. Ma questo potrebbe essere un uomo di paglia; l'ultima volta che ho controllato, ti serviva ancora una stringa singola per ogni chiave in una collezione.

Se la sua tesi è che l'allocazione di un milione di nuove stringhe per fare una copia della collezione è costosa, beh, sì, lo è. Le stringhe sono tipi di riferimento, dopo tutto; puoi semplicemente memorizzare i riferimenti alle stringhe originali.

Suppongo che dovremo aspettare che lui completi i suoi benchmark.

    
risposta data 11.02.2014 - 18:16
fonte

Leggi altre domande sui tag