Система управления большими данными, ориентированная на физику высоких энергий
Конфигурационный файл ./config.ini описывает среду выполнения HDFS и HBase. Для локальной среды можно использовать настройки по умолчанию.
В HBase доступны только символьные типы данных, но порядок следования чисел не совпадает с порядком следования символов, что делает поиск по диапазону значений свойств неэффективным. Чтобы решить эту проблему, числа кодируются. В файле C-кода ./c/TyperSer.c реализовано кодирование целых и дробных чисел. ./python/lib/TyperSer.so — это динамическая библиотека, созданная после компиляции.
Для ускорения создания таблиц HBase данные инвертированного индекса хранятся в файлах HDFS. Структура таблицы HBase: rowkey, data:run, data:offset, data:length, data:count. Каждый run создаёт отдельный файл данных HDFS, где data:run указывает на имя файла, data:offset — на смещение строки в файле, data:length — на длину строки, а data:count — на количество entryID. Таким образом, сначала выполняется запрос к HBase, затем информация о файле используется для чтения инвертированного индекса из HDFS.
Скрипт ./python/create_table используется для создания таблиц HBase. Формат команды: ./create_talbe 'table-name'.
Скрипт ./python/run2data анализирует файлы root. Поддерживает многопоточность и параллельную обработку. Формат команды: ./run2data 'root-dir-path' 'save-dir-path' 'multiprocessing-num'. Необходимо обеспечить наличие каталога 'root-dir-path', где файлы root распределены по подкаталогам в соответствии с номером run. Каталог 'save-dir-path' должен существовать и содержать подкаталоги csv и data. После завершения работы скрипт копирует файлы csv и data в каталог hdfs:///eventdb/'talbe-name'/ на HDFS. Скрипт j ./python/genInfo генерирует метаданные. Формат команды: ./genInfo 'table-name' 'root-dir-path'.
Для импорта больших объёмов данных в каждую таблицу используется инструмент bulkload HBase. Сначала необходимо выполнить команду mvn clean compile && mvn clean package для генерации jar-пакета. Затем запустить java -jar ./target/eventdb.jar org.osv.eventdb.CsvInsert 'hdfs-input-path' 'hdfs-output-path' 'hbase-table-name', чтобы выполнить импорт.
Поддерживается запрос по нескольким run. Номера run разделяются запятыми. Условия запроса могут включать диапазон и логические операции. Формат команды: ./evtQuery -v 'hbase-table-name' -r 'runID' -q 'range(property1, min, max) && range(property2, min, max) || range(property3, min, max) ... ' -f 'output-file-name'.
cd EventDBWeb
python ./manage.py runserver 0.0.0.0:8080
Запрос количества событий: localhost:8080/runInfo?op=totalEvents
Запрос объёма хранилища: localhost:8080/runInfo?op=volume
Многомерный запрос: localhost:8080/?tablename=${table-name}&command=${command}
Результаты запроса: localhost:8080/static/data/*.json
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )