Duży rozmiar bloku w HDFS! Jak rozliczana jest niewykorzystana przestrzeń?

Wszyscy wiemy, że rozmiar bloku w HDFS jest dość duży (64M lub 128M) w porównaniu do rozmiaru bloku w tradycyjnych systemach plików. Odbywa się to w celu zmniejszenia odsetka czasu wyszukiwania w porównaniu do czasu transferu (Poprawa szybkości transferu była na znacznie większą skalę niż ulepszenia na dysku seek time, dlatego celem podczas projektowania systemu plików jest zawsze zmniejszenie liczby poszukiwań w porównaniu do ilości danych, które mają być przesłane). Ale to przychodzi z dodatkową wadą fragmentacji wewnętrznej (dlatego tradycyjne rozmiary bloków systemu plików nie są tak wysokie i są rzędu kilku Kb-zazwyczaj 4K lub 8K).

Przeglądałem książkę-Hadoop, The Definitive Guide i znalazłem to napisane gdzieś, że plik mniejszy niż rozmiar bloku HDFS nie zajmuje pełnego bloku i nie uwzględnia przestrzeni całego bloku, ale nie mogłem zrozumieć jak? Czy ktoś może rzucić na to trochę światła?

Author: Srikar Appalaraju, 2012-10-22

3 answers

@Abhishek: podział bloków w HFDS jest logicznie zbudowany na fizycznych blokach bazowego systemu plików (np. ext3 / fat). System plików nie jest fizycznie podzielony na bloki (powiedzmy 64MB lub 128MB (lub jakikolwiek rozmiar bloku)). To tylko abstrakcja do przechowywania metadanych w NameNode. Ponieważ Namenode musi załadować całe metadane do pamięci, dlatego istnieje ograniczenie do liczby wpisów metadanych, co wyjaśnia potrzebę dużego bloku rozmiar.

Dlatego trzy pliki 8MB przechowywane w HDFS logicznie zajmują 3 bloki (3 wpisy metadanych w namenode), ale fizycznie zajmują 8*3=24MB miejsca w bazowym systemie plików.

Duży rozmiar bloku ma na celu uwzględnienie właściwego wykorzystania przestrzeni dyskowej przy uwzględnieniu limitu pamięci namenode.

 21
Author: Satbir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-01 08:58:33

Według Hadoop-the Definitive Guide

W przeciwieństwie do systemu plików dla pojedynczego dysku, plik w systemie plików HDFS, który jest mniejszy niż pojedynczy blok, nie zajmuje pełnego bloku podstawowej pamięci masowej. W przypadku braku zastrzeżeń termin "blok" w tej książce odnosi się do bloku w HDFS.

Każdy blok w HDFS jest przechowywany jako plik w węźle danych w bazowym systemie plików systemu operacyjnego (ext3, ext4 itp.), a odpowiednie dane są przechowywane w węźle nazw. Załóżmy, że Rozmiar pliku to 200MB, a rozmiar bloku to 64MB. W tym scenariuszu będą 4 bloki dla pliku, które będą odpowiadać 4 plikom w węźle danych o rozmiarze 64MB, 64MB, 64MB i 8MB (przy założeniu replikacji 1).

An ls -ltr Na węźle danych pokaże szczegóły bloku

- rw-rw-R-- 1 szkolenie szkolenie 11 Oct 21 15: 27 blk_-7636754311343966967_1002.meta
-rw-rw-r-- 1 szkolenie szkolenie 4 Oct 21 15: 27 blk_-7636754311343966967
- RW-RW-R-- 1 trening szkolenie 99 Oct 21 15: 29 blk_-2464541116551769838_1003.meta
-rw-rw-r-- 11403 Oct 21 15: 29 blk_-2464541116551769838
- rw-rw-r-- 1 szkolenie szkolenie 99 Oct 21 15: 29 blk_-2951058074740783562_1004.meta
-rw-rw-r-- 11544 Oct 21 15: 29 blk_-2951058074740783562

 11
Author: Praveen Sripati,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-22 15:16:36

W normalnym systemie plików jeśli tworzymy pusty plik, to również posiada on Rozmiar 4k, ponieważ jest przechowywany w bloku. W HDFS to się nie stanie, dla pliku 1GB używana jest tylko pamięć 1GB, a nie 4 GB. Żeby było jaśniej.

W systemie operacyjnym: Rozmiar pliku 1KB, rozmiar bloku: 4KB, użyte Mem : 4KB, marnotrawstwo: 3 KB. W HDFS: Rozmiar Pliku 1GB, rozmiar bloku: 4GB, używany Mem : 1GB, marnotrawstwo: 0GB, Pozostałe 3 GB mogą być używane przez inne bloki.

* nie traktuj liczb poważnie, są one przygotowane liczby, aby punkt czysty.

Jeśli masz 2 różne pliki po 1GB, to będą 2 bloki po 1 GB każdy. W systemie plikĂłw jeĹ "li przechowujesz 2 pliki po 1 KB kaĹźdy, to bÄ ™ dziesz miaĹ' 2 róşne pliki po 4KB + 4KB = 8KB z marnotrawstwem 6KB.

To czyni HDFS o wiele lepszym niż system plików. Ale ironia jest taka, że HDFS używa lokalnego systemu plików i w końcu kończy się tym samym problemem.

 2
Author: sanjeev kanabargi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-05 12:47:47