web-dev-qa-db-fra.com

Spark sur la compréhension du concept de fil

J'essaie de comprendre comment spark fonctionne sur le cluster/client YARN. J'ai la question suivante en tête.

  1. Est-il nécessaire que spark soit installé sur tous les nœuds du cluster de fils? Je pense que cela devrait parce que les nœuds de travail du cluster exécutent une tâche et devraient être en mesure de décoder le code (API spark) dans = spark application envoyée au cluster par le pilote?

  2. Il est dit dans la documentation "Assurez-vous que HADOOP_CONF_DIR ou YARN_CONF_DIR pointe vers le répertoire contenant les fichiers de configuration (côté client) pour le cluster Hadoop ". Pourquoi le nœud client doit-il installer Hadoop lorsqu'il envoie le travail au cluster?

37
Sporty

Nous exécutons des travaux spark sur YARN (nous utilisons HDP 2.2).

Nous n'avons pas spark installé sur le cluster. Nous avons seulement ajouté le Spark jar d'assemblage au HDFS).

Par exemple pour exécuter l'exemple Pi:

./bin/spark-submit \
  --verbose \
  --class org.Apache.spark.examples.SparkPi \
  --master yarn-cluster \
  --conf spark.yarn.jar=hdfs://master:8020/spark/spark-Assembly-1.3.1-hadoop2.6.0.jar \
  --num-executors 2 \
  --driver-memory 512m \
  --executor-memory 512m \
  --executor-cores 4 \
  hdfs://master:8020/spark/spark-examples-1.3.1-hadoop2.6.0.jar 100

--conf spark.yarn.jar=hdfs://master:8020/spark/spark-Assembly-1.3.1-hadoop2.6.0.jar - Cette configuration indique au fil de prendre l'assemblage spark. Si vous ne l'utilisez pas, il téléchargera le pot à partir du moment où vous exécutez spark-submit.

À propos de votre deuxième question: le nœud client n'a pas besoin d'installer Hadoop. Il n'a besoin que des fichiers de configuration. Vous pouvez copier le répertoire de votre cluster vers votre client.

26
RanP

Ajout à d'autres réponses.

  1. Est-il nécessaire que spark soit installé sur tous les nœuds du groupe de fils?

Non , si le travail spark est planifié dans YARN (client ou cluster mode). Spark n'est nécessaire dans de nombreux nœuds que pour mode autonome .

Ce sont les visualisations des modes de déploiement de l'application spark.

Spark Standalone Cluster  Spark standalone mode

En mode cluster le pilote sera assis dans l'un des Spark Nœud de travail alors qu'en mode client ce sera dans la machine qui a lancé le travail .


Mode cluster YARN  YARN cluster mode

Mode client YARN  YARN client mode

Ce tableau propose une liste concise des différences entre ces modes:

differences among Standalone, YARN Cluster and YARN Client modes

source de photos

  1. Il est indiqué dans la documentation "Assurez-vous que HADOOP_CONF_DIR ou YARN_CONF_DIR pointe vers le répertoire qui contient les fichiers de configuration (côté client) pour le cluster Hadoop". Pourquoi le nœud client doit-il installer Hadoop lorsqu'il envoie le travail au cluster?

L'installation de Hadoop n'est pas obligatoire mais les configurations (pas toutes) le sont!. Nous pouvons les appeler comme nœuds de passerelle . C'est pour deux raisons principales.

  • La configuration contenue dans HADOOP_CONF_DIR le répertoire sera distribué au cluster YARN afin que tous les conteneurs utilisés par l'application utilisent la même configuration.
  • En mode YARN, l'adresse de ResourceManager est extraite de la configuration Hadoop (yarn-default.xml). Ainsi, le --master le paramètre est yarn.


Mise à jour: (2017-01-04)

Spark 2.0+ ne nécessite plus de gros pot d'assemblage pour le déploiement en production. source

29
mrsrinivas

1 - Spark si suivant l'architecture esclave/maître. Ainsi, sur votre cluster, vous devez installer un spark maître et N spark esclaves. Vous pouvez exécuter spark en mode autonome. Mais l'utilisation de l'architecture Yarn vous donnera certains avantages. Il y a une très bonne explication ici: http://blog.cloudera.com/blog/2014/05/Apache-spark-resource-management-and-yarn-app-models/

2- C'est nécessaire si vous voulez utiliser Yarn ou HDFS par exemple, mais comme je l'ai dit précédemment, vous pouvez l'exécuter en mode autonome.

1
Junayy