Video: Bruk av datablokker (DB) i Simatic Step 7 2024
Når du lagrer en fil i HDFS, bryter systemet det ned i et sett med individuelle blokker og lagrer disse blokkene i ulike slave noder i Hadoop-klyngen. Dette er en helt vanlig ting å gjøre, da alle filsystemer bryter filer ned i blokker før de lagres til disk.
HDFS har ingen anelse om (og bryr seg ikke) hva som er lagret inne i filen, så råfiler blir ikke delt i samsvar med regler som vi mennesker ville forstå. Mennesker vil for eksempel ha rekordgrenser - linjene som viser hvor en plate begynner og slutter - for å bli respektert.
HDFS er ofte salig uvitende om at den endelige posten i en blokk kanskje bare er en delvis plate, med resten av innholdet shunted av til den følgende blokken. HDFS ønsker bare å sikre at filene er delt inn i jevnt dimensjonerte blokker som samsvarer med den forhåndsdefinerte blokkstørrelsen for Hadoop-forekomsten (med mindre en tilpasset verdi ble oppgitt for filen som ble lagret). I den foregående figur er den blokkstørrelsen 128 MB.
Ikke alle filer du trenger å lagre, er et eksakt antall av systemets blokkstørrelse, så den endelige datablokken for en fil bruker bare så mye plass som det trengs. I tilfelle av det foregående figur er den endelige datablokken 1MB.
Konseptet med å lagre en fil som en samling av blokker, er helt i samsvar med hvordan filsystemene normalt fungerer. Men hva er forskjellig om HDFS er skalaen. En typisk blokkstørrelse som du vil se i et filsystem under Linux, er 4KB, mens en typisk blokkstørrelse i Hadoop er 128 MB. Denne verdien kan konfigureres, og den kan tilpasses, både som en ny systemstandard og en tilpasset verdi for individuelle filer.
Hadoop ble utviklet for å lagre data på petabyte-skalaen, hvor eventuelle potensielle begrensninger for å skalere blir minimert. Den høye blokkstørrelsen er en direkte konsekvens av dette behovet for å lagre data i massiv skala.
Først av alt har hver datablokk lagret i HDFS sin egen metadata og må spores av en sentral server, slik at programmer som trenger tilgang til en bestemt fil, kan rettes til hvor alle filblokkene er lagret. Hvis blokkstørrelsen var i kilobyteområdet, ville selv beskjedne datamengder i terabyte-skalaen overvelde metadata-serveren med for mange blokker for å spore.
For det andre er HDFS designet for å muliggjøre høy gjennomstrømning, slik at parallellbehandling av disse store datasettene skjer så raskt som mulig. Nøkkelen til Hadops skalerbarhet på databehandlingssiden er, og vil alltid være, parallellisme - evnen til å behandle de enkelte blokkene av disse store filene parallelt.
For å muliggjøre effektiv behandling må en balanse slås. På den ene siden må blokkstørrelsen være stor nok til å garantere ressursene dedikert til en individuell databehandlingsenhet (for eksempel et kart eller redusere oppgave). På den annen side kan blokkstørrelsen ikke være så stor at systemet venter veldig lenge på en siste databehandlingsenhet for å fullføre arbeidet.
Disse to faktorene avhenger åpenbart av hva slags arbeid som gjøres på datablokker.