На самом деле ваш вопрос затронул три вопроса:
1) как поведет себя искра при распределении вычислений
2) как будут распределены нагрузки ввода-вывода и данные между кластер
3) вы используете MapR (подразумевается тегами) или HDFS (подразумевается тегами и текстом вашего вопроса.
Для 1, в зависимости от того, как вы запускаете Spark, вы обычно можно определить некоторые узлы как имеющие больше ресурсов, чем другие. Если вы используете, например, оператор Spark, который мы разработали в MapR, вы можете получить довольно точные оценки и контроль.
Для 2, I / O нагрузки и объем данных, как правило, очень хорошо сбалансированы в MapR, если вы включите функции балансировки. HDFS обычно не так хорошо справляется с работой. Это также будет немного зависеть от ваших рабочих нагрузок и истории кластера. Например, если вы иметь 12 одинаковых узлов, которые почти заполнены, и вы добавляете два больших узла, которые, конечно, изначально пусты, затем новые данные будут go к новому n Оды, пока балансировщик не успеет переместить данные на большие новые узлы. Если ваши новые данные - это то, что вы в первую очередь анализируете, это может привести к дисбалансу в операциях ввода-вывода.
В MapR вы можете легко избежать этого, ограничивая локальность новых данных, но не старых данных , Это означает, что новые данные будут заполнять только старые узлы, а балансировщик будет перемещать старые данные на новые узлы. Если у вас есть разумный баланс, вы можете позволить новым данным жить где угодно.
Для 3 только вы можете ответить. Есть очевидные и существенные преимущества использования MapR для небольших кластеров, потому что вам не нужно выделять какие-либо узлы, чтобы быть узлами имен. Конечно, есть и очевидные и существенные преимущества использования MapR в больших масштабах, но они отличаются.