web-dev-qa-db-fra.com

TaskSchedulerImpl: le travail initial n'a accepté aucune ressource;

Voici ce que j'essaie de faire.

J'ai créé deux nœuds du cluster d'entreprise DataStax, au-dessus desquels j'ai créé un programme Java pour obtenir le nombre de tables (table de base Cassandra).

Ce programme a été construit sur Eclipse, qui provient d’une fenêtre. 

Au moment d'exécuter ce programme à partir de Windows, il échoue avec l'erreur suivante au moment de l'exécution:

Le travail initial n'a accepté aucune ressource. vérifiez l'interface utilisateur de votre cluster pour vous assurer que les travailleurs sont enregistrés et disposent de suffisamment de mémoire

Le même code a été compilé et exécuté avec succès sur ces clusters sans aucun problème. Quelle pourrait être la raison pour laquelle j'obtiens l'erreur ci-dessus?

Code:

import org.Apache.spark.SparkConf;

import org.Apache.spark.SparkContext;

import org.Apache.spark.api.Java.JavaSparkContext;
import org.Apache.spark.sql.SchemaRDD;
import org.Apache.spark.sql.cassandra.CassandraSQLContext;
import com.datastax.bdp.spark.DseSparkConfHelper;

public class SparkProject  {

    public static void main(String[] args) {

        SparkConf conf = DseSparkConfHelper.enrichSparkConf(new SparkConf()).setMaster("spark://10.63.24.14X:7077").setAppName("DatastaxTests").set("spark.cassandra.connection.Host","10.63.24.14x").set("spark.executor.memory", "2048m").set("spark.driver.memory", "1024m").set("spark.local.ip","10.63.24.14X");

        JavaSparkContext sc = new JavaSparkContext(conf);

        CassandraSQLContext cassandraContext = new CassandraSQLContext(sc.sc());
        SchemaRDD employees = cassandraContext.sql("SELECT * FROM portware_ants.orders");

        //employees.registerTempTable("employees");
        //SchemaRDD managers = cassandraContext.sql("SELECT symbol FROM employees");
        System.out.println(employees.count());

        sc.stop();
    }
}
9
sandeep

J'ai été confronté à un problème similaire et après quelques recherches en ligne et trial-n-error, je me suis limité à 3 causes (sauf la première, les deux autres ne sont même pas proches du message d'erreur):

  1. Comme indiqué par l’erreur, vous êtes probablement allouez davantage de ressources que ce qui est disponible. => Ce n'était pas mon problème
  2. Nom d'hôte et adresse IP - mésaventures : Je me suis occupé de cela en spécifiant SPARK_MASTER_IP et SPARK_LOCAL_IP dans spark-env.sh
  3. Désactiver le pare-feu sur le client : Cette solution a fonctionné pour moi. Comme je travaillais sur un prototype de code interne, j'ai désactivé le pare-feu sur le poste client. Pour une raison quelconque, les nœuds de travail n'ont pas été en mesure de répondre au client. Pour la production, vous souhaitez ouvrir un certain nombre de ports requis. 
17
ameyamm

Mon problème était que j'assignais trop de mémoire par rapport à mes esclaves. Essayez de réduire la taille de la mémoire de l'étincelle soumise. Quelque chose comme ce qui suit:

~/spark-1.5.0/bin/spark-submit --master spark://my-pc:7077 --total-executor-cores 2 --executor-memory 512m

avec mon ~/spark-1.5.0/conf/spark-env.sh étant:

SPARK_WORKER_INSTANCES=4
SPARK_WORKER_MEMORY=1000m
SPARK_WORKER_CORES=2
6
Sudipta Basak

S'il vous plaît regardez le post de Russ

Plus précisément cette section:

Il s'agit de loin de la première erreur la plus commune qu'un nouvel utilisateur de Spark Verra lors de la tentative d'exécution d'une nouvelle application. Notre nouvel et excité Utilisateur Spark essaiera de démarrer Shell ou d’exécuter sa propre application Et recevra le message suivant.

...

La solution à court terme à ce problème consiste à s’assurer que vous ne demandez pas plus de ressources à votre cluster qu’il n’existe ou à fermer toutes les applications utilisant inutilement des ressources. Si vous devez exécuter Plusieurs applications Spark simultanément, vous devrez ajuster le nombre de cœurs utilisés par chaque application.

2
phact

J'ai été confronté à ce problème à quelques reprises même si l'allocation des ressources était correcte.

Le correctif consistait à redémarrer les services mesos.

Sudo service mesos-slave restart
Sudo service mesos-master restart
0
Sachin

Dans mon cas, le problème était que j'avais la ligne suivante dans $SPARK_HOME/conf/spark-env.sh:

SPARK_EXECUTOR_MEMORY = 3g

de chaque ouvrier, 
et la ligne suivante dans $SPARK_HOME/conf/spark-default.sh

spark.executor.memory 4g

dans le noeud "maître".

Le problème est parti une fois que j'ai changé 4g en 3g. J'espère que cela aidera quelqu'un avec le même problème. Les autres réponses m'ont aidé à repérer cela.

0
vefthym