Почему Hadoop выбирает MapReduce в качестве своего вычислительного движка? - PullRequest
0 голосов
/ 30 мая 2018

Я знаю, MapReduce (MR) - одна из трех базовых структур Hadoop, и я знаком с ее mapper-shuffle-reducer прогрессом.

Мой вопрос можно разделить на две части:

1) Что делает MR уникальным для Hadoop и почему нет других вычислительных алгоритмов?

2) Как работает вычислительная часть другого языка (например: shell, python)?Их вычислительная процедура похожа на MR?

1 Ответ

0 голосов
/ 31 мая 2018

«Разделяй и властвуй» - очень мощный подход для обработки наборов данных.MapReduce предоставляет способ чтения больших объемов данных, но распределяет рабочую нагрузку масштабируемым образом.Часто даже неструктурированные данные имеют способ отделить отдельные «записи» от необработанного файла, и Hadoop (или его совместимые файловые системы, такие как S3) предлагают способы хранения больших объемов данных в необработанных форматах, а не в базе данных.Hadoop - это просто процесс, управляющий кучей дисков и файлов.YARN (или Mesos, или другой планировщик) - это то, что позволяет вам развертывать и запускать отдельные «единицы работы», которые собираются и обрабатывают данные.

MapReduce, однако, не единственная среда исполнения.Tez или Spark взаимодействуют с API InputFormat и OutputFormat MapReduce для чтения или записи данных.Оба предлагают оптимизацию по MapReduce, где задачи могут быть определены с использованием графа вычислений, называемого DAG, вместо того, чтобы говорить «отобразить этот вход, уменьшить этот результат, отобразить выход этого редуктора в другой редуктор ...».Даже с более высокими языками, такими как Hive или Pig, легче работать, чем с чистыми функциями MapReduce.Однако все они являются расширениями Hadoop и заслуживают того, чтобы быть отдельными проектами, а не частью ядра Hadoop.

Я бы сказал, что большинство пользователей Hadoop не обеспокоены , почему Hadoop использует MapReduce , они просто принимают его API - это способ обработки файлов на интерфейсах HDFS, даже если он абстрагируется от других библиотек, таких как Spark,

Shell, Python, Ruby, Javascript и т. Д. Могут запускаться через API потоковой передачи Hadoop, если все узлы YARN имеют необходимые зависимости времени выполнения.Он работает аналогично MapReduce.Данные обрабатываются картографом, ключи перетасовываются в редуктор и снова обрабатываются.За исключением того, что я не верю, что пользовательские форматы данных могут быть обработаны.Например, вы можете прочитать данные Parquet в Shell с помощью потоковой передачи Hadoop.Данные должны существовать как события разделителя новой строки, считываться через стандартный ввод, а затем записываться в стандартизированный вывод.

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