Сканирование снепшотов

Обзор

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

Конфигурация

Перед использованием функции сканирования снепшотов выполните следующую настройку:

  1. Откройте веб-интерфейс ADCM и выберите ваш кластер ADH.

  2. Перейдите в раздел Services → HDFS → Primary configuration и включите переключатель Show advanced.

  3. Откройте секцию настроек Custom hdfs-site.xml и нажмите Add property.

  4. В качестве названия параметра введите dfs.namenode.acls.enabled и установите для него значение true.

  5. Откройте секцию настроек Custom core-site.xml и нажмите Add property.

  6. В качестве названия параметра введите fs.permissions.umask-mode и установите для него значение 027.

  7. Сохраните конфигурацию, нажав Save → Create.

  8. Перейдите в раздел Services → HBase → Primary configuration и включите переключатель Show advanced.

  9. Откройте секцию настроек Custom hbase-site.xml и нажмите Add property.

  10. В качестве названия параметра введите hbase.coprocessor.master.classes и установите для него значение "org.apache.hadoop.hbase.security.access.AccessController,org.apache.hadoop.hbase.security.access.SnapshotScannerHDFSAclController".

  11. Добавьте ещё один параметр. В качестве названия параметра введите hbase.acl.sync.to.hdfs.enable и установите для него значение true.

  12. Сохраните конфигурацию, нажав Save → Create и перезапустите сервис, нажав Actions → Reconfig and graceful restart.

  13. Перейдите в консоль HBase shell и измените схему нужной таблицы для использования функции сканирования снепшотов, выполнив команду следующего вида:

    alter '<table>', CONFIGURATION => {'hbase.acl.sync.to.hdfs.enable' => 'true'}

    где <table> — название таблицы.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней