Сканирование снепшотов
Обзор
Сканирование снепшотов — это функция, позволяющая сканировать данные непосредственно из 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>— название таблицы.