2015-10-11 2 views
1

Я не эксперт во всем Hadoop, но я понимаю, что Hadoop хорошо подходит для параллельных алгоритмов, где параллелизм лежит либо в форме сокращения карты, либо в любом другом виде разделения и покорения.Для какого типа параллельных алгоритмов Hadoop хорошо подходит?

Существуют ли другие методы алгоритмов, которые также хорошо подходят?

ответ

1

Hadoop подходит для неловко параллельной рабочей нагрузки (без зависимости между параллельными задачами). Механизм передачи сообщений между процессами отсутствует. Процессы «Карта» и «Уменьшение» следуют схеме связи на основе ввода-вывода, которая сама по себе является большой накладной.

Map Reduce не подходит для программирования итеративных алгоритмов (например, KMeans, PageRank), потому что каждая итерация - это отдельное приложение для уменьшения карты, и из-за огромных издержек ввода-вывода производительность вашего алгоритма ухудшается. Для итерационных алгоритмов вы можете использовать интерфейсы передачи сообщений (MPI). Он поддерживает связь на основе сокетов между процессами, поэтому вы можете добиться значительного улучшения производительности по сравнению с уменьшением карты. Поскольку большое количество алгоритмов машинного обучения носит итеративный характер, mapreduce не следует использовать для их программирования.

Если для вашего приложения требуется отказоустойчивость, Hadoop является лучшим вариантом, чем MPI.