Care este diferența fundamentală între un MapReduce Split și un bloc HDFS?


Răspunsul 1:

Înainte de a înțelege diferența, să înțelegem mai întâi ce este un MapReduce Split și un bloc HDFS:

1) Împărțirea unui fișier în blocuri (bloc HDFS) - Când un fișier este scris în HDFS, HDFS împarte fișierul în blocuri și are grijă de replicarea lui. Acest lucru se face o singură dată (în mare parte), apoi este disponibil pentru toate joburile MR care rulează pe cluster. Aceasta este o configurație pe scară largă

În al doilea rând -

2) Împărțirea unui fișier în divize de intrare (Split) - Când calea de intrare este trecută într-o lucrare MR, jobul MR folosește calea împreună cu formatul de intrare configurat pentru a împărți fișierele specificate în calea de intrare în diviziuni, fiecare divizare este prelucrate de o sarcină de hartă. Calculul divizărilor de intrare se face după formatul de intrare de fiecare dată când se execută o lucrare

Câteva puncte pe care aș dori să le adaug ca o concluzie între HDFS Block și Input Split

  1. Split este o diviziune logică a datelor de intrare în timp ce blocul este o diviziune fizică a datelor de intrare. Dimensiunea implicită a blocului HDFS este dimensiunea implicită a împărțirii dacă nu este specificată divizarea de intrare.Split este definit de utilizator și utilizatorul poate controla dimensiunea divizării în programul său Map / Reduce .O singură împărțire poate fi mapată pe mai multe blocuri și poate exista mai multe împărțiri ale unui singur bloc. Numărul de sarcini de hartă este egal cu numărul de divizări.

Răspunsul 2:

Bloc HDFS

1) Blocul este locația continuă pe hard disk în care datele HDFS stochează date. În general, FileSystem stochează date ca colecție de blocuri. În mod similar, HDFS stochează fiecare fișier ca blocuri și îl distribuie în clusterul Hadoop.

2) Este reprezentarea fizică a datelor.

3) Dimensiune bloc - Dimensiunea implicită a blocului HDFS este 128 MB, care este configurat conform cerințelor noastre. Toate blocurile fișierului au aceeași dimensiune, cu excepția ultimului bloc. Ultimul bloc poate fi de aceeași dimensiune sau mai mic.

Mapreduce InputSplit

1) InputSplit reprezintă datele pe care le va procesa Mapper individual. Mai multe diviziuni se împart în înregistrări. Fiecare înregistrare (care este o pereche cheie-valoare) va fi procesată de hartă.

2) Este reprezentarea logică a datelor. Astfel, în timpul procesării datelor în programul MapReduce sau în alte tehnici de procesare se utilizează InputSplit. În MapReduce, lucru important este că InputSplit nu conține datele de intrare. Prin urmare, este doar o referire la date.

3) Dimensiunea InputSplit - Dimensiunea Split este aproximativ egală cu dimensiunea blocului, în mod implicit.


Răspunsul 3:

Un bloc este modul intern în care fișierul este separat la nivel de stocare. DataNodes stochează blocurile și blocurile reprezintă un fișier.

O împărțire este pur și simplu modul în care metoda InputFormat getSplits () decide să partajeze intrarea. De exemplu, formatul de intrare ar putea returna 1 divizare pentru toate fișierele. 1 împărțire pentru fiecare director, 1 împărțire pentru fiecare fișier sau fișierul în sine este împărțit în mai multe diviziuni pentru un singur fișier.

Calculul împărțirii se bazează pe euristică și, de regulă, reglabil, deoarece divizarea este o uniune de paralelism.