HBase
 sql >> база данни >  >> NoSQL >> HBase

Въведение в Apache HBase моментни снимки, част 2:По-дълбоко гмуркане

В част 1 от тази поредица за моментни снимки на Apache HBase научихте как да използвате новата функция за моментни снимки и малко теория зад внедряването. Сега е време да се потопим в техническите подробности малко по-задълбочено.

Какво е таблица?

Таблица HBase съдържа набор от информация за метаданни и набор от двойки ключ/стойност:

  • Информация за таблицата :Файл на манифест, който описва „настройките“ на таблицата, като семейства колони, кодеци за компресиране и кодиране, типове филтри за разцвет и т.н.
  • Региони :Таблицата “partitions” се нарича региони. Всеки регион е отговорен за обработката на непрекъснат набор от ключове/стойности и те се дефинират от начален и краен ключ.
  • WAL/MemStore :Преди да запишат данни на диск, пусканията се записват в дневника за предсрочно записване (WAL) и след това се съхраняват в паметта, докато налягането в паметта не задейства флъширане на диска. WAL осигурява лесен начин за възстановяване на неизпълнени на диска пуска при повреда.
  • HFiles :В даден момент всички данни се изхвърлят на диск; HFile е форматът HBase, който съдържа съхранения ключ/стойности. HFiles са неизменни, но могат да бъдат изтрити при уплътняване или изтриване на регион.

(Забележка:За да научите повече за HBase Write Path, разгледайте публикацията в блога HBase Write Path.)

Какво е моментна снимка?

Моментната снимка е набор от информация за метаданни, която позволява на администратора да се върне към предишно състояние на таблицата, на която е заета. Моментната снимка не е копие на таблицата; най-простият начин да мислим за това е като набор от операции за проследяване на метаданни (информация за таблицата и региони) и данните (HFiles, memstore, WAL). По време на операцията за моментна снимка не се включват копия на данните.

  • Офлайн моментни снимки :Най-простият случай за правене на моментна снимка е когато таблицата е деактивирана. Деактивирането на таблица означава, че всички данни се изтриват на диска и не се приемат записи или четения. В този случай правенето на моментна снимка е просто въпрос на преминаване през метаданните на таблицата и HFiles на диска и запазване на препратка към тях. Главният изпълнява тази операция и необходимото време се определя главно от времето, необходимо на нодата на HDFS за предоставяне на списъка с файлове.
  • Онлайн моментни снимки :В повечето ситуации обаче таблиците са активирани и всеки сървър на региона обработва заявки за поставяне и получаване. В този случай главният получава заявката за моментна снимка и моли всеки сървър на региона да направи моментна снимка на регионите, за които отговаря.

Комуникацията между главния и регионалните сървъри се извършва чрез Apache ZooKeeper с помощта на двуфазна транзакция, подобна на комит. Главният създава znode, което означава „подгответе моментната снимка“. Всеки сървър на региона ще обработи заявката и ще подготви моментната снимка за регионите от таблицата, за която отговаря. След като са готови, те добавят подвъзел към znode подготовка-заявка със значението „Готово съм“.

След като всички регионални сървъри отчетат своя статус, главният създава друг znode, което означава „Извършване на моментна снимка“; всеки сървър на региона ще финализира моментната снимка и ще докладва състоянието, както преди да се присъедини към възела. След като всички регионални сървъри се отчетат, главният ще финализира моментната снимка и ще маркира операцията като завършена. В случай, че сървър на региона докладва за грешка, главният ще създаде нов znode, използван за излъчване на съобщението за прекратяване.

Тъй като сървърът на региона непрекъснато обработва нови заявки, различните случаи на използване може да изискват различни модели на последователност. Например, някой може да се интересува от небрежна моментна снимка без новите данни в MemStore, някой друг може да иска напълно последователна моментна снимка, която изисква блокиране на запис за известно време и т.н.

Поради тази причина процедурата за правене на моментна снимка на сървъра на региона може да се включи. Понастоящем единствената налична реализация е „Flush Snapshot“, която извършва изчистване преди да направи моментна снимка и гарантира само съгласуваност на редовете. Други процедури с различни политики за последователност може да бъдат приложени в бъдеще.

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

Архивиране

Както видяхме преди, HFiles са неизменни. Това ни позволява да избегнем копирането на данните по време на операциите за моментна снимка или клониране, но по време на уплътняването те се премахват и заменят с уплътнена версия. В този случай, ако имате моментна снимка или клонирана таблица, която препраща към един от тези файлове, вместо да ги изтриете, те се преместват в „архивно“ местоположение. Ако изтриете моментна снимка и никой друг не препраща към файловете, посочени в моментната снимка, тези файлове ще бъдат изтрити.

Клониране и възстановяване на таблици

Моментните снимки могат да се разглеждат като решение за архивиране, където могат да се използват за възстановяване/възстановяване на таблица след грешка на потребител или приложение, но функцията за моментна снимка може да позволи много повече от просто архивиране и възстановяване. След като клонирате таблица от моментна снимка, можете да напишете задача MapReduce или просто приложение, за да обедините селективно разликите или това, което смятате за важно, в производството. Друг случай на употреба е, че можете да тествате промени в схемата или актуализации на данните, без да се налага да чакате часове за копие на таблица и без да се окажете с много данни, дублирани на диска.

Клониране на таблица от моментна снимка

Когато администратор извърши операция за клониране, нова таблица с таблицата-схема, присъстваща в моментната снимка, се създава предварително разделена с началните/крайните ключове в информацията за регионите на моментната снимка. След като метаданните на таблицата бъдат създадени, вместо да се копират данните, се използва същият трик като при моментната снимка. Тъй като HFiles са неизменни, се създава само препратка към изходния файл; това позволява на операцията да избягва копия на данни и позволява на клонинга да бъде редактиран, без да се засяга изходната таблица или моментната снимка. Операцията по клониране се извършва от главния.

Възстановяване на таблица от моментна снимка

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

Фючърси

В момента изпълнението на моментна снимка включва всички основни необходими функции. Както видяхме, новите политики за последователност на моментните снимки за онлайн снимките могат да осигурят повече гъвкавост, последователност или подобрения в производителността. По-доброто управление на файловете може да намали натоварването на възела за имена на HDFS и да подобри управлението на дисковото пространство. Освен това показателите, уеб потребителския интерфейс (Hue) и други са в списъка със задачи.

Заключение

Моментните снимки на HBase добавят нова функционалност като „координацията на процедурите“, използвана от онлайн моментната снимка, или моментната снимка за копиране при запис, възстановяване и клонинги.

Моментните снимки осигуряват по-бърза и по-добра алтернатива на ръчно изработените решения за „архивиране“ и „клониране“, базирани на distcp или CopyTable. Всички операции за моментна снимка (моментна снимка, възстановяване, клониране) не включват копия на данни, което води до по-бързи моментни снимки на таблицата и спестяване на дисково пространство.

За повече информация как да активирате и използвате моментни снимки, моля, вижте документа за оперативно управление на HBase.

Matteo Bertozzi е софтуерен инженер в екипа на платформата и HBase Committer.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Основни характеристики на MapReduce – важността на MapReduce

  2. Как да:Индексирайте сканирани PDF файлове в мащаб, използвайки по-малко от 50 реда код

  3. Вътре в архитектурата на Santander за поглъщане на данни в почти реално време (част 2)

  4. Apache HBase I/O – HFile

  5. Разлика между InputSplit срещу блокове в Hadoop