Чтобы по-настоящему оценить параллельное программирование, вы должны изучить несколько моделей параллельного программирования, а не только одну среду параллельного программирования. Вам следует изучить подходы к параллельному программированию как для совместной памяти (например, pthreads), так и для передачи сообщений (например, MPI и MapReduce).
MPI - инструмент общего назначения для создания приложений для передачи сообщений. Если вы интенсивно используете MPI, вы обнаружите, что некоторые элементы MPI-программ повторяются снова и снова, например, настраивая «главный» процесс, который разделяет работу на «рабочие» процессы и агрегирует результаты. MapReduce является частной реализацией среды передачи сообщений и предоставляет более простую модель программирования, чем MPI. Он заботится о коде, который встречается довольно часто в параллельных приложениях, и, что более важно, заботится о таких проблемах, как восстановление после сбоев и локальность данных. Hadoop с открытым исходным кодом пытается имитировать MapReduce.
Я думаю, вы сможете лучше оценить, что делает MapReduce и как его можно реализовать, написав несколько собственных программ MPI. Изучение Hadoop не повредит, но когда дело доходит до общих знаний о параллельном программировании, полезно знать основы, такие как pthreads, OpenMP и MPI.