Video: How to Analyse YouTube Data Using MapReduce | MapReduce Use Case | Hadoop Tutorials 2024
Il modo in cui HDFS è stato impostato, suddivide i file molto grandi in blocchi grandi (ad esempio, misurando 128 MB), e memorizza tre copie di questi blocchi su diversi nodi nel cluster.HDFS non ha consapevolezza del contenuto di questi file.
In YARN, quando viene avviato un lavoro MapReduce, il Resource Manager (la gestione risorse del cluster e la funzione di pianificazione del lavoro crea un demone di Application Master per gestire il ciclo di vita del lavoro. (In Hadoop 1, il JobTracker monitorava i singoli lavori oltre a gestire la pianificazione dei lavori e la gestione delle risorse del cluster).
localmente - sul nodo slave dove è memorizzato. Prima di esaminare come vengono elaborati i blocchi di dati, è necessario esaminare più da vicino come Hadoop memorizza i dati. In Hadoop, i file sono composti da singoli record, che vengono elaborati alla fine uno per uno dalle attività del mappatore.
Ad esempio, il set di dati di esempio contiene informazioni sui voli completati negli Stati Uniti tra il 1987 e il 2008.
Hai un grande file per ogni anno, e all'interno di ogni file, ogni singola riga rappresenta un singolo volo. In altre parole, una riga rappresenta un record. Ora, ricorda che la dimensione del blocco per il cluster Hadoop è 64 MB, il che significa che i file di dati chiari sono suddivisi in blocchi di esattamente 64 MB.
Vedi il problema? Se ciascuna attività della mappa elabora tutti i record in un determinato blocco di dati, cosa succede a quei record che si estendono oltre i limiti dei blocchi? I blocchi di file sono esattamente 64 MB (o qualunque sia la dimensione del blocco da essere), e poiché HDFS non ha idea di cosa si trova all'interno dei blocchi di file, non può valutare quando un record potrebbe riversarsi in un altro blocco.
Per risolvere questo problema, Hadoop utilizza una rappresentazione logica dei dati memorizzati in blocchi di file, noti come
split di input . Quando un client di lavoro MapReduce calcola le divisioni di input, determina dove inizia il primo intero record in un blocco e dove finisce l'ultimo record nel blocco. Nei casi in cui l'ultimo record di un blocco è incompleto, lo split dell'input include le informazioni sulla posizione per il blocco successivo e lo scostamento di byte dei dati necessari per completare il record.
La figura mostra questa relazione tra blocchi di dati e divisioni di input.
È possibile configurare il daemon Application Master (o JobTracker, se si è in Hadoop 1) per calcolare le divisioni di input anziché il client del processo, il che sarebbe più rapido per i lavori che elaborano un numero elevato di blocchi di dati.
L'elaborazione dei dati di MapReduce è guidata da questo concetto di divisione dell'input. Il numero di divisioni di input calcolate per un'applicazione specifica determina il numero di attività del programma di analisi. Ognuna di queste attività del mappatore viene assegnata, ove possibile, a un nodo slave in cui è archiviata la divisione di input. Resource Manager (o JobTracker, se ti trovi in Hadoop 1) fa del suo meglio per garantire che le divisioni di input vengano elaborate localmente.