Differences
This shows you the differences between two versions of the page.
|
laboratoare:laborator08a [2015/12/11 03:36] Andrei Roșu-Cojocaru created |
laboratoare:laborator08a [2015/12/11 03:53] (current) Andrei Roșu-Cojocaru |
||
|---|---|---|---|
| Line 24: | Line 24: | ||
| Arhitectura HDFS este de tip master – slave şi conţine un **nod de nume** (//eng.// NameNode), server ce gestionează spaţiul de nume al sistemului de fişiere, reglementând accesul la fişiere şi **mai multe noduri de date** (//eng.// DataNode, de regulă unul pentru fiecare nod din cluster), client ce gestionează spaţiul de stocare ataşat nodurilor pe care rulează. În plus faţă de acestea mai există şi **un nod de nume secundar** (//eng.// Secondary NameNode) care se ocupă mai ales cu întreţinerea sistemului distribuit de fişiere, astfel încât acest proces să nu fie realizat doar la nivelul nodului de nume. Acesta nu este utilizat pentru asigurarea unui nivel de disponibilitate ridicat şi nici nu funcţionează ca rezervă pentru nodul de nume. Deşi pentru utilizator spaţiul de nume este vizualizat unitar, permiţând operaţiile uzuale de încărcare şi descărcare de fişiere (ca pentru orice sistem de fişiere), implementarea HDFS presupune **împărţirea acestora în blocuri** care sunt stocate în mai multe noduri de date. Dacă nodul de nume se ocupă cu operaţii legate de spaţiul de nume al sistemului de fişiere (deschidere, închidere, redenumire fişiere şi directoare), determinând şi maparea blocurilor la nodurile de date, nodurile de date au rolul de a trata cererile de citire şi de scriere ce provin de la utilizatori, realizând şi crearea şi ştergerea de blocuri, respectiv replicarea, în funcţie de instrucţiunile ce provin de la nodul de nume. | Arhitectura HDFS este de tip master – slave şi conţine un **nod de nume** (//eng.// NameNode), server ce gestionează spaţiul de nume al sistemului de fişiere, reglementând accesul la fişiere şi **mai multe noduri de date** (//eng.// DataNode, de regulă unul pentru fiecare nod din cluster), client ce gestionează spaţiul de stocare ataşat nodurilor pe care rulează. În plus faţă de acestea mai există şi **un nod de nume secundar** (//eng.// Secondary NameNode) care se ocupă mai ales cu întreţinerea sistemului distribuit de fişiere, astfel încât acest proces să nu fie realizat doar la nivelul nodului de nume. Acesta nu este utilizat pentru asigurarea unui nivel de disponibilitate ridicat şi nici nu funcţionează ca rezervă pentru nodul de nume. Deşi pentru utilizator spaţiul de nume este vizualizat unitar, permiţând operaţiile uzuale de încărcare şi descărcare de fişiere (ca pentru orice sistem de fişiere), implementarea HDFS presupune **împărţirea acestora în blocuri** care sunt stocate în mai multe noduri de date. Dacă nodul de nume se ocupă cu operaţii legate de spaţiul de nume al sistemului de fişiere (deschidere, închidere, redenumire fişiere şi directoare), determinând şi maparea blocurilor la nodurile de date, nodurile de date au rolul de a trata cererile de citire şi de scriere ce provin de la utilizatori, realizând şi crearea şi ştergerea de blocuri, respectiv replicarea, în funcţie de instrucţiunile ce provin de la nodul de nume. | ||
| - | {{ :laboratoare:laborator10:figura05_arhitectura_HDFS.png?nolink&700 }} | + | {{ :laboratoare:laborator08:05hdfs_architecture.png?nolink&700 }} |
| Atât nodul de nume cât şi nodul de date sunt programe scrise în Java, astfel încât pot să ruleze pe cât mai multe platforme. Tipic, nodul de nume rulează pe un server dedicat, în timp ce toate celelalte maşini din cluster conţin o instanţă a nodului de date. Există şi posibilitatea ca pe o singură maşină să existe mai multe instanţe ale nodului de date, însă un astfel de caz este destul de rar. Situaţii de acest tip pot fi întâlnite în situaţia în care se doreşte separarea seturilor de date provenind de la aplicaţii diferite. Existenţa unui singur nod de nume într-un cluster simplifică foarte mult arhitectura sistemului, întrucât nodul de nume negociază utilizarea resurselor şi reţine toate metadatele cu privire la fişierele stocate. Toate datele provenite de la utilizator sunt prelucrate neapărat de nodul de date. | Atât nodul de nume cât şi nodul de date sunt programe scrise în Java, astfel încât pot să ruleze pe cât mai multe platforme. Tipic, nodul de nume rulează pe un server dedicat, în timp ce toate celelalte maşini din cluster conţin o instanţă a nodului de date. Există şi posibilitatea ca pe o singură maşină să existe mai multe instanţe ale nodului de date, însă un astfel de caz este destul de rar. Situaţii de acest tip pot fi întâlnite în situaţia în care se doreşte separarea seturilor de date provenind de la aplicaţii diferite. Existenţa unui singur nod de nume într-un cluster simplifică foarte mult arhitectura sistemului, întrucât nodul de nume negociază utilizarea resurselor şi reţine toate metadatele cu privire la fişierele stocate. Toate datele provenite de la utilizator sunt prelucrate neapărat de nodul de date. | ||
| Line 34: | Line 34: | ||
| - **stocarea** – oferită de nodurile de date prin stocarea blocurilor în cadrul sistemului local de fişiere, permiţând accesul la operaţii de citire/scriere. | - **stocarea** – oferită de nodurile de date prin stocarea blocurilor în cadrul sistemului local de fişiere, permiţând accesul la operaţii de citire/scriere. | ||
| - | {{ :laboratoare:laborator10:figura06_implementare_federatii_HDFS.png?nolink }} | + | {{ :laboratoare:laborator08:06hdfs_federation_implementation.png?nolink }} |
| În mod tradiţional, HDFS implementează o organizare a fişierelor de tip ierarhic, astfel încât un utilizator sau o aplicaţie pot crea directoare, stocând fişiere în cadrul acestora. Operaţiile suportate sunt de creare şi ştergere fişiere, relocarea unui fişier dintr-un director într-altul precum şi redenumirea unui fişier. Nu sunt implementate cote pentru utilizatori şi permisiuni de acces, dar nici obiecte de tip legătură (hard sau soft). Întreţinerea spaţiului de nume pentru sistemul distribuit de fişiere este realizat de către nodul de nume astfel că acesta înregistrează orice schimbare operată asupra sa sau proprietăţilor sale. | În mod tradiţional, HDFS implementează o organizare a fişierelor de tip ierarhic, astfel încât un utilizator sau o aplicaţie pot crea directoare, stocând fişiere în cadrul acestora. Operaţiile suportate sunt de creare şi ştergere fişiere, relocarea unui fişier dintr-un director într-altul precum şi redenumirea unui fişier. Nu sunt implementate cote pentru utilizatori şi permisiuni de acces, dar nici obiecte de tip legătură (hard sau soft). Întreţinerea spaţiului de nume pentru sistemul distribuit de fişiere este realizat de către nodul de nume astfel că acesta înregistrează orice schimbare operată asupra sa sau proprietăţilor sale. | ||
| Line 52: | Line 52: | ||
| Prin urmare, politica de distribuire a replicilor în cadrul clusterului îmbunătăţeşte performanţa operaţiei de scriere fără a se compromite nici siguranţa datelor şi nici performanţa operaţiei de scriere. | Prin urmare, politica de distribuire a replicilor în cadrul clusterului îmbunătăţeşte performanţa operaţiei de scriere fără a se compromite nici siguranţa datelor şi nici performanţa operaţiei de scriere. | ||
| - | {{ :laboratoare:laborator10:figura07_replicarea_HDFS.png?nolink&700 }} | + | {{ :laboratoare:laborator08:07hdfs_replication.png?nolink&700 }} |
| Pentru a se minimiza consumul global al lăţimii de bandă dar şi latenţa pentru operaţiile de citire, o citire de date se va realiza din locaţia cea mai apropiată de utilizatorul care a realizat o astfel de cerere. Astfel, în cazul în care există o replică pe acelaşi rastel ca nodul care realizează citirea, aceasta va fi preferată unei replici care se găseşte la distanţă. | Pentru a se minimiza consumul global al lăţimii de bandă dar şi latenţa pentru operaţiile de citire, o citire de date se va realiza din locaţia cea mai apropiată de utilizatorul care a realizat o astfel de cerere. Astfel, în cazul în care există o replică pe acelaşi rastel ca nodul care realizează citirea, aceasta va fi preferată unei replici care se găseşte la distanţă. | ||
