Actuellement, je lance mon programme en tant que
val conf = new SparkConf()
.setAppName("Test Data Analysis")
.setMaster("local[*]")
.set("spark.executor.memory", "32g")
.set("spark.driver.memory", "32g")
.set("spark.driver.maxResultSize", "4g")
Même si je travaille sur un cluster de 5 machines (chacune avec 376 Go de RAM physique). mes erreurs de programme avec Java.lang.OutOfMemoryError: Java heap space
Mes données sont volumineuses ... mais pas si grandes qu'elles dépassent 32 Go de mémoire Executor * 5 noeuds.
Je soupçonne que c'est peut-être parce que j'utilise "local" comme maître. J'ai vu la documentation dire utiliser spark://machinename:7070
Cependant, je veux savoir pour mon cluster ... comment puis-je déterminer cette URL et ce port
EDIT: Je vois que la documentation parle d’exécuter quelque chose appelé "spark-master.sh" afin de créer un nœud en tant que maître.
dans mon cas, le cluster à étincelles a été configuré/géré par quelqu'un d'autre et je ne souhaite donc pas modifier la topologie en démarrant mon propre maître.
Comment puis-je interroger et savoir quel nœud est le maître existant.
J'ai déjà essayé de choisir un nœud aléatoire dans le cluster, puis d'essayer «spark: // node: 7077» mais cela ne fonctionne pas et donne une erreur.
[15/11/03 20:06:21 WARN AppClient$ClientActor: Could not connect to
akka.tcp://sparkMaster@node:7077:
akka.remote.EndpointAssociationException: Association failed with
[akka.tcp://sparkMaster@node:7077]
J'ai trouvé que faire --master yarn-cluster
fonctionnait mieux. Cela garantit que spark utilise tous les nœuds du cluster hadoop.
Vous êtes sur place. .setMaster("local[*]")
lancera spark en mode autonome. Dans ce mode, spark ne peut utiliser que les ressources de la machine locale.
Si vous avez déjà configuré un cluster à étincelles au-dessus de votre cluster physique. La solution est simple: vérifiez http://master:8088
où le maître pointe vers la machine principale. Vous pouvez y voir l'URI du maître des étincelles et, par défaut, spark://master:7077
.
Cependant, je vois beaucoup de questions sur SO affirmant que cela ne fonctionne pas pour de nombreuses raisons différentes. L'utilisation de l'utilitaire spark-submit
est simplement moins sujette aux erreurs, See usage .
Mais si vous n'avez pas encore de cluster à étincelles, je vous suggère de commencer par installer un cluster Spark Standalone .
Pour afficher le nœud principal dans spark DSE (Datastax) à l'aide de Shell
dse client-tool spark leader-address
utilisez la commande pour obtenir les informations sur l'URL sc.uiWebUrl