Фреймворки для обработки больших данных
Фреймворки для больших данных позволяют программистам обрабатывать наборы данных, значительно превышающие возможности одной машины, выражая вычисления в виде параллельных потоков данных, которые среда выполнения распределяет и делает отказоустойчивыми.
Definition
Фреймворк для обработки больших данных — это система, которая позволяет программисту выражать вычисления над очень большим набором данных в виде высокоуровневых операторов потока данных и которая автоматически разделяет данные, планирует параллельное выполнение в кластере и обеспечивает отказоустойчивость узлов.
Scope
Эта тема охватывает модель программирования потоков данных для обработки данных в масштабе кластера: парадигму MapReduce и ее ограничения, механизмы потоков данных в памяти, построенные на отказоустойчивых распределенных наборах данных, а также унифицированную пакетную и потоковую обработку с использованием окон, семантики времени событий и гарантий однократного выполнения. В ней рассматривается, как массивные, возможно неограниченные, данные разделяются, обрабатываются параллельно и восстанавливаются после сбоев.
Core questions
- Как можно выразить и выполнить параллельно вычисление над данными, слишком большими для одной машины?
- Как механизмы обработки в памяти и потоковой обработки улучшают пакетный MapReduce?
- Как сбалансировать корректность, задержку и отказоустойчивость для неограниченных, неупорядоченных потоков?
Key theories
- MapReduce
- MapReduce выражает обработку данных как шаг сопоставления (map), который преобразует записи в пары ключ-значение, и шаг сокращения (reduce), который агрегирует по ключу, при этом среда выполнения обрабатывает распараллеливание, перемешивание данных и повторное выполнение сбойных задач.
- Отказоустойчивые распределенные наборы данных
- RDDs (Resilient distributed datasets) предоставляют отказоустойчивую абстракцию в памяти, чья история детерминированных преобразований позволяет пересчитывать потерянные разделы, обеспечивая итеративные и интерактивные кластерные вычисления значительно быстрее, чем дисковый MapReduce.
- Унифицированный пакетный и потоковый поток данных
- Современные движки рассматривают пакетную обработку как частный случай потоковой, используя оконную обработку по времени событий и водяные знаки, а также согласованные снимки для получения результатов с гарантией однократного выполнения над неограниченными, неупорядоченными данными.
Clinical relevance
Эти фреймворки обрабатывают данные, лежащие в основе поисковых систем, аналитики, рекомендательных систем и конвейеров машинного обучения, а потоковые движки обеспечивают работу систем мониторинга в реальном времени и событийно-ориентированных приложений, что делает их основной инфраструктурой для интенсивных вычислений с данными.
History
Статья Google 2004 года о MapReduce (пересмотренная в 2008 году) заложила основы обработки данных в масштабе кластера; отказоустойчивые распределенные наборы данных Spark (2012) обеспечили быструю обработку в памяти и итеративную обработку; а такие системы, как Flink и модель потоков данных (2015), унифицировали пакетную и потоковую обработку с сильными гарантиями корректности.
Debates
- Пакетная обработка против потоковой как основной модели обработки
- Пакетная обработка проще и легко реализуется с гарантией однократного выполнения, но увеличивает задержку, в то время как потоковая обработка предлагает низкую задержку ценой более сложной корректности при неупорядоченных данных; унифицированные движки утверждают, что потоковая обработка может охватывать пакетную, хотя пакетная обработка остается распространенной для больших исторических задач.
Key figures
- Jeffrey Dean
- Sanjay Ghemawat
- Matei Zaharia
- Tyler Akidau
Related topics
Seminal works
- dean2008
- zaharia2012
- akidau2015
Frequently asked questions
- Почему Spark и аналогичные системы вытеснили обычный MapReduce для многих рабочих нагрузок?
- MapReduce записывает промежуточные результаты на диск между каждым шагом, что медленно для итеративных алгоритмов. Абстракции в памяти, такие как отказоустойчивые распределенные наборы данных, сохраняют данные в памяти между шагами и пересчитывают только потерянные разделы при сбое, что обеспечивает значительное ускорение для итеративной и интерактивной аналитики.