Какво е разпределен кеш в Hadoop?

Hadoop е рамка, която е с отворен код и използва разпределено съхранение, както и обработката на огромни набори от данни с помощта на HDFS и MapReduce. Той има NameNodes, които съхраняват метаданните и DataNodes, които съхраняват действителните данни в HDFS. Когато трябва да обработим огромните набори от данни, това се прави от програма, написана от потребителите и след това обработката се извършва паралелно в DataNodes. В рамката на Hadoop има определени файлове, които се нуждаят често от заданията на MapReduce. Ако има брой изпълнявани картографи, всеки път, когато се изисква да се четат файловете от HDFS, латентността ще се увеличи, тъй като времето за търсене също ще се увеличи. Така че вместо да четете файловете всеки път, когато са необходими, файловете могат да бъдат копирани и изпратени до всички DataNodes. Този механизъм се нарича разпределен кеш в Hadoop.

Работа на разпределен кеш в Hadoop

  • Hadoop копира файловете, които са посочени от опциите като –files, -libjars и –archives в HDFS, когато се стартира задача. Тогава Мениджърът на възли ще копира файловете от HDFS в кеша, така че когато се изпълни задача, той има достъп до файловете. Файловете могат да бъдат наречени локализирани, тъй като са копирани в кеша или на локалния диск.
  • В кеша се преброява броя на задачите, използващи всеки файл, се поддържа като справка от диспечера на възлите. Референтният брой на файловете става 1 преди изпълнението на задачата. Но след като задачата е стартирала, броят се намалява с 1. Когато броя стане 0, файлът може да бъде изтрит, тъй като не свиква. Когато кешът на даден възел достигне определения си размер, изтриването на файл се извършва, така че новите файлове да бъдат настанени. Размерът на кеша може да бъде променен в свойството за конфигурация. Размерът на разпределения кеш в Hadoop е по подразбиране 10GB.
  • MapReduce става по-бавен от кеша в процес, ако има режийни разходи. За да се преодолее тази ситуация, разпределеният кеш може да сериализира обектите, но дори и това има малко проблеми. Отражението е процес, използван за изследване на типа информация по време на изпълнение, който е много бавен. Освен това става много трудно в сериализацията, където тя съхранява пълното име на клъстер, име на клас заедно с препратки към други случаи, присъстващи в променливите член.

Внедряване на Hadoop в разпределен кеш

  • За да използваме разпределения кеш за приложение, трябва да сме сигурни, че за да разпределим файл по възлите; файлът първо трябва да е налице. Така че ние трябва да копираме файловете в HDFS, а също така трябва да проверим дали файлът е достъпен чрез URI, които могат да бъдат намерени чрез достъп до core-site.xml. След това заданието MapReduce копира кеш файла във всички възли, преди задачите да започнат да се изпълняват на тези възли.
  • Така че за да реализираме разпределения кеш, трябва да копираме файловете в HDFS и можем да проверим дали това е направено или не чрез командата hdfs dfs –put /path/samplefile.jar. Също така, конфигурацията на заданието трябва да бъде настроена за приложението и това трябва да бъде добавено към драйверния клас.
  • Файловете, които могат да се четат само от собственика, отиват в частен кеш, докато споделеният кеш има файловете, които могат да бъдат четени по целия свят. Файлът, който се добавя към кеша, се използва без ограничения във всички машини в клъстера като локален файл. По-долу API обажданията могат да се използват за добавяне на файлове в кеша.

Код:

DistributedCache.addCacheFile(URI, conf);
DistributedCache.setCacheFiles(URIs, conf);

Споделянето на разпределените кеш файлове в подчинените възли зависи от това дали файловете на разпределения кеш са частни или обществени. Частните файлове за разпределен кеш се кешират в локалната директория на потребителя, която е частна за потребителя и тези файлове се изискват от заданията на потребителя. В случай на публично разпространени кеш файлове, файловете се кешират в глобалната директория. Достъпът до файлове в случай на публичен кеш е настроен по начин, по който те са видими за всички потребители. Също така, разпределеният кеш файл става частен или публичен в зависимост от разрешението на файловата система.

Предимства на разпределения кеш в Hadoop

С използването на разпределения кеш, много полезни функции се добавят към рамката на Hadoop. По-долу са предимствата на използването на разпределен кеш:

1. Разпределен кеш в единична точка на отказ

В случай на повреда на възел, той няма да направи пълния отказ на кеша. Тъй като разпределеният кеш работи като самостоятелен или независим процес в различните възли. Така че, ако повредата на кеша възникне в един възел, това не означава, че целият кеш също трябва да се провали.

2. Съгласуваност на данните

Чрез използването на алгоритъма Hash може да се определи кои двойки ключ-стойност принадлежат към кой възел. Също така, разпределеният кеш в Hadoop следи или проследява модификацията на времевата марка, направена в кеш файловете, и отчита, че докато задачата се изпълни, файлът не трябва да се променя. Така че данните никога не стават непостоянни поради единичното състояние на кеш клъстера.

3. Съхранение на сложни данни

Разпределеният кеш в рамките на Hadoop осигурява предимството на кеширане на файлове само за четене като текстови файлове, jar файлове и т.н., след което ги излъчва към възли с данни. Поради това копие на файла се съхранява във всеки възел на данни. С функцията за разпределен кеш сложни файлове като буркан и т.н. се разпределят и съхраняват.

заключение

Разпределеният кеш осигурява ефективност, тъй като файловете се копират еднократно за всяка задача. Също така, тя има капацитет да кешира архивите, които са архивирани на роби. Използването на разпределен кеш е допълнителен бонус и зависи от разработчика, за да използва най-добре тази функция.

Препоръчителни статии

Това е ръководство за разпределен кеш в Hadoop. Тук обсъждаме какво се разпределя кеш в Hadoop, неговата работа, внедряване, с ползи. Можете също да прегледате и другите ни свързани статии, за да научите повече -

  1. Предимства на Hadoop
  2. Инсталирайте Hadoop
  3. Какво е Head в Git?
  4. Екосистема Apache Hadoop
  5. Променливи в JavaScript

Категория: