Шта је ХДФС?
ХДФС је дистрибуирани систем датотека за складиштење веома великих датотека података, покренут на кластерима робног хардвера. Отпоран је на кварове, скалабилан је и изузетно једноставан за проширивање. Хадооп долази у пакету са ХДФС ( Хадооп Дистрибутед Филе Системс ).
Када подаци премаше капацитет складиштења на једној физичкој машини, постаје неопходно да се поделе на више засебних машина. Систем датотека који управља операцијама специфичним за складиштење у мрежи машина назива се дистрибуираним системом датотека. ХДФС је један такав софтвер.
У овом упутству ћемо научити,
- Шта је ХДФС?
- ХДФС архитектура
- Прочитајте операцију
- Врите Оператион
- Приступите ХДФС-у користећи ЈАВА АПИ
- Приступите ХДФС-у помоћу КОМАНДНО-ЛИНЕ ИНТЕРФЕЈСА
ХДФС архитектура
ХДФС кластер се првенствено састоји од НамеНоде који управља датотечним системом Метаподаци и ДатаНодес који чувају стварне податке .
- НамеНоде: НамеНоде се може сматрати главним системом. Одржава стабло система датотека и метаподатке за све датотеке и директоријуме присутне у систему. Две датотеке „Слика простора имена“ и „евиденција уређивања“ користе се за чување података о метаподацима. Наменоде има знање о свим чворовима података који садрже блокове података за дату датотеку, међутим, локације блокова не чува упорно. Ове информације се обнављају сваки пут из чворова података када се систем покрене.
- Чвор података: Чворови података су помоћни уређаји који се налазе на свакој машини у кластеру и пружају стварно складиште. Одговорна је за услуживање, читање и писање захтева за клијенте.
Операције читања / писања у ХДФС-у раде на нивоу блока. Датотеке података у ХДФС-у су подељене на делове величине блока, који се чувају као независне јединице. Подразумевана величина блока је 64 МБ.
ХДФС ради на концепту репликације података у којем се креира више реплика блокова података који се дистрибуирају на чворовима кроз кластер како би се омогућила велика доступност података у случају квара чвора.
Да ли знаш? Датотека у ХДФС-у, која је мања од једног блока, не заузима потпуно складиште блока.
Прочитајте рад у ХДФС-у
Захтев за читање података сервирају ХДФС, НамеНоде и ДатаНоде. Назовимо читаоца као „клијента“. Испод дијаграма приказан је поступак читања датотека у Хадооп-у.
- Клијент покреће захтев за читање позивањем методе 'опен ()' објекта ФилеСистем; то је објекат типа ДистрибутедФилеСистем .
- Овај објекат се повезује са наменоде помоћу РПЦ-а и добија информације о метаподацима као што су локације блокова датотеке. Имајте на уму да су ове адресе првих неколико блокова датотеке.
- Као одговор на овај захтев за метаподацима, адресе ДатаНодес-а које имају копију тог блока враћају се назад.
- Једном када се приме адресе ДатаНодес, клијенту се враћа објекат типа ФСДатаИнпутСтреам . ФСДатаИнпутСтреам садржи ДФСИнпутСтреам који се брине о интеракцијама са ДатаНоде и НамеНоде. У кораку 4 приказаном у горњем дијаграму, клијент позива методу „реад ()“ која узрокује да ДФСИнпутСтреам успостави везу са првим ДатаНоде-ом са првим блоком датотеке.
- Подаци се читају у облику токова у којима клијент више пута позива методу „реад ()“ . Овај поступак реад () операције наставља се све док не дође до краја блока.
- Једном када се постигне крај блока, ДФСИнпутСтреам затвара везу и прелази на проналажење следећег ДатаНоде за следећи блок
- Када клијент заврши са читањем, позива методу цлосе () .
Записивање операција у ХДФС-у
У овом одељку ћемо разумети како се подаци записују у ХДФС путем датотека.
- Клијент започиње операцију писања позивањем методе 'цреате ()' објекта ДистрибутедФилеСистем који креира нову датотеку - корак бр. 1 у горњем дијаграму.
- Објекат ДистрибутедФилеСистем повезује се са НамеНоде помоћу РПЦ позива и покреће стварање нове датотеке. Међутим, ова датотека креира операцију и не повезује ниједан блок са датотеком. Одговорност НамеНоде-а је да потврди да датотека (која се креира) већ не постоји и да клијент има тачне дозволе за креирање нове датотеке. Ако датотека већ постоји или клијент нема довољну дозволу за креирање нове датотеке, тада се ИОЕкцептион баца на клијента. У супротном, операција успева и НамеНоде креира нови запис за датотеку.
- Једном када се креира нови запис у НамеНоде, клијенту се враћа објекат типа ФСДатаОутпутСтреам. Клијент га користи за уписивање података у ХДФС. Позива се метода писања података (корак 3 на дијаграму).
- ФСДатаОутпутСтреам садржи објекат ДФСОутпутСтреам који брине о комуникацији са ДатаНодес и НамеНоде. Док клијент наставља са уписивањем података, ДФСОутпутСтреам наставља са креирањем пакета са тим подацима. Ови пакети су стављени у ред чекања који се назива ДатаКуеуе .
- Постоји још једна компонента која се зове ДатаСтреамер која троши овај ДатаКуеуе . ДатаСтреамер такође тражи НамеНоде за алокацију нових блокова, бирајући тако пожељне ДатаНодес који ће се користити за репликацију.
- Сада процес репликације започиње стварањем цевовода помоћу ДатаНодес-а. У нашем случају, изабрали смо ниво репликације 3 и стога постоје 3 чвора података у цевоводу.
- ДатаСтреамер улива пакете у први ДатаНоде у цевоводу.
- Сваки ДатаНоде у цевоводу чува примљени пакет и прослеђује га другом ДатаНоде у цевоводу.
- Други ред, 'Ацк Куеуе' одржава ДФСОутпутСтреам за чување пакета који чекају потврду од ДатаНодес-а.
- Једном када је потврда за пакет у реду примљена од свих ДатаНодес у цевоводу, она се уклања из 'Ацк Куеуе'. У случају квара ДатаНоде-а, пакети из овог реда користе се за поновно покретање операције.
- Након што клијент заврши са уписивањем података, позива методу цлосе () (корак 9 на дијаграму) Позив за затварање (), резултира пражњењем преосталих пакета података у цевовод праћен чекањем потврде.
- Када се прими коначно потврђивање, контактира се НамеНоде да би се обавестило да је операција писања датотеке завршена.
Приступите ХДФС-у користећи ЈАВА АПИ
У овом одељку покушавамо да разумемо Јава интерфејс који се користи за приступ систему датотека Хадооп.
Да би програмски комуницирао са системом датотека Хадооп, Хадооп нуди више ЈАВА класа. Пакет под називом орг.апацхе.хадооп.фс садржи класе корисне у манипулацији датотеком у Хадооповом систему датотека. Те операције укључују, отварање, читање, писање и затварање. Заправо, АПИ датотека за Хадооп је генерички и може се проширити тако да комуницира са другим системима датотека који нису ХДФС.
Програмско читање датотеке са ХДФС-а
Објект јава.нет.УРЛ се користи за читање садржаја датотеке. За почетак морамо да натерамо Јава да препозна Хадоопову хдфс УРЛ шему. То се постиже позивањем методе сетУРЛСтреамХандлерФацтори на УРЛ објекту и њему се проследи инстанца ФсУрлСтреамХандлерФацтори. Овај метод треба извршити само једном по ЈВМ-у, стога је затворен у статички блок.
Пример кода је-
public class URLCat {static {URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());}public static void main(String[] args) throws Exception {InputStream in = null;try {in = new URL(args[0]).openStream();IOUtils.copyBytes(in, System.out, 4096, false);} finally {IOUtils.closeStream(in);}}}
Овај код се отвара и чита садржај датотеке. Путања ове датотеке на ХДФС-у преноси се програму као аргумент командне линије.
Приступите ХДФС-у помоћу КОМАНДНО-ЛИНЕ ИНТЕРФЕЈСА
Ово је један од најједноставнијих начина интеракције са ХДФС-ом. Интерфејс командне линије има подршку за рад система датотека, као што је читање датотеке, креирање директорија, премештање датотека, брисање података и попис директорија.
Можемо покренути '$ ХАДООП_ХОМЕ / бин / хдфс дфс -хелп' да бисмо добили детаљну помоћ за сваку наредбу. Овде је 'дфс' команда љуске ХДФС-а која подржава више поднаредби.
Неке од широко коришћених команди су наведене у наставку, заједно са неким детаљима сваке од њих.
1. Копирајте датотеку из локалног система датотека у ХДФС
$HADOOP_HOME/bin/hdfs dfs -copyFromLocal temp.txt /
Ова наредба копира датотеку темп.ткт из локалног система датотека у ХДФС.
2. Датотеке присутне у директоријуму можемо да наведемо помоћу -лс
$HADOOP_HOME/bin/hdfs dfs -ls /
Видимо да је датотека 'темп.ткт' (раније копирана) наведена у директоријуму '/' .
3. Наредба за копирање датотеке у локални систем датотека из ХДФС-а
$HADOOP_HOME/bin/hdfs dfs -copyToLocal /temp.txt
Видимо да је темп.ткт копиран у локални систем датотека.
4. Команда за креирање новог директоријума
$HADOOP_HOME/bin/hdfs dfs -mkdir /mydirectory
Проверите да ли је директоријум креиран или не. Сада бисте требали знати како се то ради ;-)