на самом деле, ПРЯЖА отвечает за управление распределением ресурсов и перераспределением для контейнеров, запрошенного Application Master (MR-AppMaster или искровых Driver). Таким образом, RPC между ними - все о согласовании соглашения о ресурсах, и он не рассматривает никаких подробностей о том, как задачи выполняются внутри MapReduce и Spark.
Для MapReduce-Hadoop каждая задача (mapper или редуктор) - это единственный процесс, запущенный на JVM, здесь он не использует многопоточность.
Для Spark каждый исполнитель фактически состоит из множества рабочих потоков. Здесь каждая задача Spark соответствует каждой задаче (единому процессу) в MapReduce. Таким образом, Spark реализует на основе многопоточных моделей для нижних
служебных данных JVM и перетасовки данных между задачами.
Основываясь на моих опытах, модели с несколькими нитями уменьшают накладные расходы, но страдают от огромной стоимости отказоустойчивости. Если исполнитель в Spark не работает, все задачи, выполняемые внутри исполнителя, должны повторно запускаться, но для MapReduce требуется повторная перезагрузка только одной задачи. Также Spark страдает от огромного давления в памяти, потому что все задачи, стоящие на стороне исполнителя, должны кэшировать данные с точки зрения RDD. Но задача Mapreduce обрабатывает только один блок за раз.
Надеюсь, это полезно.
Я не уверен насчет Spark, однако на вашем рабочем месте ваша работа с картой и редуктором может быть реализована как многопоточные задания. См. Это - https://hadoop.apache.org/docs/r2.6.2/api/org/apache/hadoop/mapreduce/Mapper.html#run(org.apache.hadoop.mapreduce.Mapper.Context) – Amit
Восстановление Hadoop Mapreduce, пожалуйста [см. Мой ответ] (http://stackoverflow.com/a/39904444/647053) –
относительно искры, пожалуйста [см.] (Http://stackoverflow.com/questions/36671644/how-does-spark-achieve -параллельность в пределах одной задачи-на-многоядерном или гипер-потоке) –