Как Dremel или его реализация (скажем, Drill) обрабатывает большие столбчатые данные в памяти?
Я прохожу через официальный документ Google Dremel. Я узнал, что он преобразует сложные данные в столбчатое расположение данных.
В каком месте хранятся эти данные?
Поскольку Drill не имеет центрального хранилища метаданных, я предполагаю, что он должен быть в памяти.
Поэтому, как Drill обрабатывает эти данные, когда у меня есть миллиарды строк?
1 ответ
Чтобы получить полные, согласованные результаты запросов из миллиардов строк, вы будете использовать распределенную файловую систему, подключенную к нескольким битам Drillbit, имитировать распределенную файловую систему путем копирования файлов на каждый узел или использовать том NFS, например Amazon Elastic File System. Drill выполняет эффективный запрос больших данных, используя ряд методов, включая следующие:
- Для обработки отказов использует узлы кластера (не тратит время на задачи, связанные с отказами).
- Использует модель данных в памяти, которая является иерархической и столбчатой (не обращается к диску для столбцов, которые не участвуют в аналитическом запросе, обрабатывая столбчатые данные без материализации строк).
- Использует столбчатую оптимизацию и выполнение хранилища (сохраняет объем памяти).
- Использует векторизацию для работы с массивами значений из разных записей, а не с отдельными значениями из одной записи за раз.
Для получения дополнительной информации см. http://drill.apache.org/docs/performance/.