mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-01 20:12:02 +00:00
b589903680
* Some improvements for introduction/performance.md * Minor improvements for example_datasets * Add website/package-lock.json to .gitignore * YT paragraph was badly outdated and there is no real reason to write a new one * Use weird introduction article as a starting point for F.A.Q. * Some refactoring of first half of ya_metrika_task.md * minor * Weird docs footer bugfix
12 lines
3.1 KiB
Markdown
12 lines
3.1 KiB
Markdown
# Общие вопросы
|
||
|
||
## Почему бы не использовать системы типа MapReduce?
|
||
|
||
Системами типа MapReduce будем называть системы распределённых вычислений, в которых операция reduce сделана на основе распределённой сортировки. Наиболее распространённым opensource решением данного класса является [Apache Hadoop](http://hadoop.apache.org), а в Яндексе используется внутрення разработка — YT.
|
||
|
||
Такие системы не подходят для онлайн запросов в силу слишком большой latency. То есть, не могут быть использованы в качестве бэкенда для веб-интерфейса.
|
||
Такие системы не подходят для обновления данных в реальном времени.
|
||
Распределённая сортировка не является оптимальным способом выполнения операции reduce, если результат выполнения операции и все промежуточные результаты, при их наличии, помещаются в оперативку на одном сервере, как обычно бывает в запросах, выполняющихся в режиме онлайн. В таком случае, оптимальным способом выполнения операции reduce является хэш-таблица. Частым способом оптимизации map-reduce задач является предагрегация (частичный reduce) с использованием хэш-таблицы в оперативной памяти. Эта оптимизация делается пользователем в ручном режиме.
|
||
Распределённая сортировка является основной причиной тормозов при выполнении несложных map-reduce задач.
|
||
|
||
Большинство реализаций MapReduce позволяют выполнять произвольный код на кластере. Но для OLAP задач лучше подходит декларативный язык запросов, который позволяет быстро проводить исследования. Для примера, для Hadoop существует Hive и Pig. Также смотрите Cloudera Impala, Shark (устаревший) для Spark, а также Spark SQL, Presto, Apache Drill. Впрочем, производительность при выполнении таких задач является сильно неоптимальной по сравнению со специализированными системами, а сравнительно высокая latency не позволяет использовать эти системы в качестве бэкенда для веб-интерфейса. |