Сканирование снепшотов
Обзор
Сканирование снепшотов — это функция, позволяющая сканировать данные непосредственно из HFile без использования HBase. Она работает независимо от того, включен ли HBase, и помогает экономить ресурсы на серверной стороне HBase.
Сканирование снепшотов обеспечивается классами TableSnapshotScanner
и TableSnapshotInputFormat
.
Класс TableSnapshotScanner
Класс TableSnapshotScanner
предназначен для однократного сканирования HFile, запускаемого с клиентской стороны. Эти HFile копируются во временную директорию и удаляются после закрытия сканера. Эта директория не должна принадлежать пути, заданному параметром hbase.rootdir
в конфигурационном файле hbase-site.xml. Пользователь на клиентской стороне также должен иметь права на запись для этой директории.
Ниже приведен пример использования класса TableSnapshotScanner
:
Path restoreDir = new Path("<path>");
Scan scan = new Scan();
try (TableSnapshotScanner scanner = new TableSnapshotScanner(conf, restoreDir, snapshotName, scan)) {
Result result = scanner.next();
while (result != null) {
...
result = scanner.next();
}
}
где <path>
— путь ко временной директории.
Класс TableSnapshotInputFormat
Класс TableSnapshotInputFormat
предназначен для сканирования HFile и использования результатов в задачах MapReduce.
Ниже приведен пример использования класса TableSnapshotInputFormat
:
Job job = new Job(conf);
Path restoreDir = new Path(",<path>");
Scan scan = new Scan();
TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, scan, MyTableMapper.class, MyMapKeyOutput.class, MyMapOutputValueWritable.class, job, true, restoreDir);
Конфигурация
Перед использованием функции сканирования снепшотов выполните следующую настройку:
-
Откройте веб-интерфейс ADCM и выберите ваш кластер ADH.
-
Перейдите в раздел Services → HDFS → Primary configuration и включите переключатель Show advanced.
-
Откройте секцию настроек Custom hdfs-site.xml и нажмите Add property.
-
В качестве названия параметра введите
dfs.namenode.acls.enabled
и установите для него значениеtrue
. -
Откройте секцию настроек Custom core-site.xml и нажмите Add property.
-
В качестве названия параметра введите
fs.permissions.umask-mode
и установите для него значение027
. -
Сохраните конфигурацию, нажав Save → Create.
-
Перейдите в раздел Services → HBase → Primary configuration и включите переключатель Show advanced.
-
Откройте секцию настроек Custom hbase-site.xml и нажмите Add property.
-
В качестве названия параметра введите
hbase.coprocessor.master.classes
и установите для него значение"org.apache.hadoop.hbase.security.access.AccessController,org.apache.hadoop.hbase.security.access.SnapshotScannerHDFSAclController"
. -
Добавьте ещё один параметр. В качестве названия параметра введите
hbase.acl.sync.to.hdfs.enable
и установите для него значениеtrue
. -
Сохраните конфигурацию, нажав Save → Create и перезапустите сервис, нажав Actions → Reconfig and graceful restart.
-
Перейдите в консоль HBase shell и измените схему нужной таблицы для использования функции сканирования снепшотов, выполнив команду следующего вида:
alter '<table>', CONFIGURATION => {'hbase.acl.sync.to.hdfs.enable' => 'true'}
где
<table>
— название таблицы.