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

Въведение в Apache HBase Snapshots

Настоящата (4.2) версия на CDH — 100% дистрибуция на Cloudera с отворен код на Apache Hadoop и свързани проекти (включително Apache HBase) — въведе нова функция HBase, наскоро кацнала в багажника, която позволява на администратора да направи моментна снимка на определен таблица.

Преди CDH 4.2 единственият начин за архивиране или клониране на таблица беше да използвате Копиране/Експортиране на таблица или след деактивиране на таблицата, копирайте всички hфайлове в HDFS. Копиране/експортиране на таблица е набор от инструменти, който използва MapReduce за сканиране и копиране на таблицата, но с пряко въздействие върху производителността на регионалния сървър. Деактивирането на таблицата спира всяко четене и запис, което почти винаги ще бъде неприемливо.

За разлика от тях, моментните снимки на HBase позволяват на администратора да клонира таблица без копия на данни и с минимално въздействие върху регионалните сървъри. Експортирането на моментната снимка в друг клъстер не засяга пряко нито един от сървърите на региона; експортирането е просто distcp с допълнителна логика.

Ето няколко от случаите на използване на HBase моментни снимки:

  • Възстановяване от грешки на потребител/приложение
    • Възстановяване/възстановяване от известно безопасно състояние.
    • Прегледайте предишните моментни снимки и избирателно обединете разликата в производството.
    • Запазете моментна снимка непосредствено преди основна надстройка или промяна на приложението.
  • Одит и/или отчитане на изгледи на данни в определено време
    • Улавяйте месечни данни за целите на съответствието.
    • Изготвяне на отчети за края на деня/месеца/тримесечието.
  • Тестване на приложението
    • Тествайте промените на схемата или приложението върху данни, подобни на тези в производството, от моментна снимка и след това ги изхвърлете. Например:направете моментна снимка, създайте нова таблица от съдържанието на моментната снимка (схема плюс данни) и манипулирайте новата таблица чрез промяна на схемата, добавяне и премахване на редове и т.н. (Оригиналната таблица, моментната снимка и новата таблица остават взаимно независими.)
  • Разтоварване на работа
    • Направете моментна снимка, експортирайте я в друг клъстер и стартирайте вашите MapReduce задания. Тъй като експортната моментна снимка работи на ниво HDFS, вие не забавяте основния си HBase клъстер толкова, колкото CopyTable.

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

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

Операции

  • Направете моментна снимка: Тази операция се опитва да направи моментна снимка на определена таблица. Операцията може да се провали, ако регионите се движат по време на балансиране, разделяне или сливане.
  • Клониране на моментна снимка: Тази операция създава нова таблица, използваща същата схема и със същите данни, присъстващи в посочената моментна снимка. Резултатът от тази операция е нова напълно функционална таблица, която може да бъде модифицирана без въздействие върху оригиналната таблица или моментната снимка.
  • Възстановяване на моментна снимка: Тази операция връща схемата на таблицата и данните обратно към състоянието на моментна снимка. (Забележка:тази операция отхвърля всички промени, направени след правенето на моментната снимка.)
  • Изтриване на моментна снимка: Тази операция премахва моментна снимка от системата, освобождавайки несподелено дисково пространство, без да засяга клонинги или други моментни снимки.
  • Експортиране на моментна снимка: Тази операция копира данните от моментната снимка и метаданните в друг клъстер. Операцията включва само HDFS, така че няма комуникация с главния или регионалните сървъри и по този начин клъстерът HBase може да не работи.

Снимка с нулево копие, възстановяване, клониране

Основната разлика между моментна снимка и CopyTable/ExportTable е, че операциите за моментна снимка записват само метаданни. Няма замесени масивни копия на данни.

Един от основните принципи на проектиране на HBase е, че след като файлът е написан, той никога няма да бъде модифициран. Наличието на неизменни файлове означава, че моментната снимка просто проследява файловете, използвани в момента на операцията за моментна снимка, а по време на уплътняване е отговорност на моментната снимка да информира системата, че файлът не трябва да бъде изтриван, а вместо това трябва да бъде архивиран.

Същият принцип важи и за операция за клониране или възстановяване. Тъй като файловете са неизменни, се създава нова таблица само с „връзки“ към файловете, посочени в моментната снимка.

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

Експортиране на моментна снимка спрямо таблица за копиране/експортиране

Освен по-добрите гаранции за последователност, които една моментна снимка може да осигури в сравнение със задача за копиране/експортиране, основната разлика между експортиране на моментна снимка и копиране/експортиране на таблица е, че ExportSnapshot работи на ниво HDFS. Това означава, че главните и регионалните сървъри не участват в тези операции. Следователно не се създават ненужни кешове за данни и няма задействане на допълнителни GC паузи поради броя на обектите, създадени по време на процеса на сканиране. Въздействието върху производителността върху клъстера HBase произтича от допълнителното мрежово и дисково натоварване, което изпитват DataNodes.

HBase Shell:Операции със моментна снимка

Потвърдете, че поддръжката на моментни снимки е включена, като проверите дали hbase.snapshot.enabled свойството в hbase-site.xml е настроено на true. За да направите моментна снимка на определена таблица, използвайте snapshot команда. (Не се извършват копия на файлове)

hbase> snapshot ‘tableName’, ‘snapshotName’

За да изброите всички моментни снимки, използвайте list_snapshot команда. ще покаже името на моментната снимка, изходната таблица и датата и часа на създаване.

hbase> list_snapshots
SNAPSHOT               TABLE + CREATION TIME
 TestSnapshot          TestTable (Mon Feb 25 21:13:49 +0000 2013)

За да премахнете моментна снимка, използвайте delete_snapshot команда. Премахването на моментна снимка не засяга клонираните таблици или други последващи направени моментни снимки.

hbase> delete_snapshot 'snapshotName'

За да създадете нова таблица от определена моментна снимка (клонинг), използвайте clone_snapshot команда. Не се извършват копия на данни, така че в крайна сметка не използвате двойно повече място за едни и същи данни.

hbase> clone_snapshot 'snapshotName', 'newTableName'

За да замените текущата схема/данни на таблицата с определено съдържание на моментна снимка, използвайте restore_snapshot  команда.

hbase> restore_snapshot 'snapshotName'

За да експортирате съществуваща моментна снимка в друг клъстер, използвайте ExportSnapshot инструмент. Експортирането не оказва влияние върху работното натоварване на RegionServers, работи на ниво HDFS и трябва да посочите HDFS местоположение (hbase.rootdir на другия клъстер).

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot
SnapshotName -copy-to hdfs:///srv2:8082/hbase

Текущи ограничения

Моментните снимки разчитат на някои предположения и в момента има няколко инструмента, които не са напълно интегрирани с новата функция:

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

Заключение

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

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

Матео Бертоци е софтуерен инженер в екипа на платформата и сътрудник на HBase.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Екосистема Hadoop – Въведение в компонентите на Hadoop

  2. Hadoop Partitioner – Научете основите на MapReduce Partitioner

  3. Спекулативно изпълнение в Hadoop MapReduce

  4. Как да:Използвайте интерфейса REST на Apache HBase, част 3

  5. HBase BlockCache 101