Разница между однопроходными и многопроходными вычислениями - PullRequest
0 голосов
/ 16 октября 2019

Я читаю статью об Apache Spark и наткнулся на следующее предложение:

"Hadoop как технология обработки больших данных существует уже 10 лет и доказала, что является предпочтительным решением дляобработка больших наборов данных. MapReduce - отличное решение для однопроходных вычислений, но не очень эффективное для случаев использования, которые требуют многопроходных вычислений и алгоритмов ». ( Полная статья )

Поиск в Интернете дает результаты о разнице между однопроходными и многопроходными компиляторами (например, см. Этот вопрос SO )

Однако я не совсем уверен, применим ли ответ и к обработке данных. Может кто-нибудь объяснить мне, что такое однопроходное и многопроходное вычисление и почему последнее лучше и, таким образом, используется в Spark?

Ответы [ 2 ]

2 голосов
/ 16 октября 2019

Карта Уменьшить

enter image description here

Источник: https://www.guru99.com/introduction-to-mapreduce.html

Здесь вы видите, входной файл обрабатываетсякак показано нижеуменьшите парадигму, после каждого этапа промежуточный результат записывается на диск. Также Mapper и Reducer - это два разных процесса. То есть сначала выполняется задание сопоставления, выплевывает файлы сопоставления, затем запускается задание редуктора. На каждом этапе работа требует выделения ресурсов. Следовательно, для выполнения одной задачи по уменьшению карты требуется несколько итераций. Если у вас есть несколько этапов карты, после каждой карты данные должны выводиться на диск перед запуском другой задачи карты. Это многоступенчатый процесс.

Каждый шаг в рабочем процессе обработки данных имеет одну фазу Map и одну фазу Reduce, и вам нужно будет преобразовать любой сценарий использования в MapReduce. шаблон для использования этого решения.

Spark

С другой стороны, spark выполняет согласование ресурсов только один раз. Как только переговоры завершены, они порождают всех исполнителей, и это остается в течение всего срока работы. Во время выполнения spark не записывает промежуточный вывод фаз Map на диск, а сохраняет в памяти. Следовательно, все операции с картами могут происходить вплотную, без записи на диск или появления новых исполнителей. Это одношаговый процесс.

Spark позволяет программистам разрабатывать сложные многошаговые конвейеры данных с использованием шаблона направленного ациклического графа (DAG). Он также поддерживает обмен данными в памяти между группами обеспечения доступности баз данных, поэтому различные задания могут работать с одними и теми же данными.

1 голос
/ 16 октября 2019

Однопроходные вычисления - это когда вы читаете набор данных один раз, тогда как многопроходные вычисления - это когда набор данных читается один раз с диска, и несколько вычислений или операций выполняются для одного и того же набора данных. Платформа обработки Apache Spark позволяет считывать данные один раз, которые затем кэшируются в памяти, а затем мы можем выполнять многопроходные вычисления для данных. Эти вычисления могут быть выполнены на наборе данных очень быстро, потому что данные присутствуют в памяти машины, и apache spark не нужно снова считывать данные с диска, что помогает нам сэкономить много времени операций ввода-вывода. Согласно определению apache spark, это среда обработки в памяти, которая означает, что данные и преобразования, на которых выполняются вычисления, присутствуют в самой памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...