Apache Spark: кластер с узлами различной конфигурации - PullRequest
1 голос
/ 27 марта 2020

У меня есть производственная коробка, в которой 14 узлов. Из них 14, 12 узлов имеют одинаковую конфигурацию и 2 из них с более высокой конфигурацией (почти в 3 раза), поэтому 1> это повлияет на использование ресурсов Spark в целом. 2> Как я могу использовать эту дополнительную память, доступную только от этих 2 узлов. 3> Также, если во время процесса мой доступный ресурс rdd> будет выполнять частичную обработку задачи в памяти и снова загружать из HDFS оставшиеся данные. Итак, как преодолеть такой сценарий, чтобы получить лучшую производительность

1 Ответ

0 голосов
/ 27 марта 2020

На самом деле ваш вопрос затронул три вопроса:

1) как поведет себя искра при распределении вычислений

2) как будут распределены нагрузки ввода-вывода и данные между кластер

3) вы используете MapR (подразумевается тегами) или HDFS (подразумевается тегами и текстом вашего вопроса.

Для 1, в зависимости от того, как вы запускаете Spark, вы обычно можно определить некоторые узлы как имеющие больше ресурсов, чем другие. Если вы используете, например, оператор Spark, который мы разработали в MapR, вы можете получить довольно точные оценки и контроль.

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

В MapR вы можете легко избежать этого, ограничивая локальность новых данных, но не старых данных , Это означает, что новые данные будут заполнять только старые узлы, а балансировщик будет перемещать старые данные на новые узлы. Если у вас есть разумный баланс, вы можете позволить новым данным жить где угодно.

Для 3 только вы можете ответить. Есть очевидные и существенные преимущества использования MapR для небольших кластеров, потому что вам не нужно выделять какие-либо узлы, чтобы быть узлами имен. Конечно, есть и очевидные и существенные преимущества использования MapR в больших масштабах, но они отличаются.

...