web-dev-qa-db-ja.com

TaskSchedulerImpl:最初のジョブはリソースを受け入れていません。

これが私がやろうとしていることです。

DataStaxエンタープライズクラスターの2つのノードを作成し、その上に1つのテーブル(Cassandraデータベーステーブル)のカウントを取得するJavaプログラムを作成しました。

このプログラムは、実際にはWindowsボックスからのEclipseで構築されました。

このプログラムをWindowsから実行すると、実行時に次のエラーで失敗します。

最初のジョブはリソースを受け入れていません。クラスタUIをチェックして、ワーカーが登録され、十分なメモリがあることを確認します

同じコードがコンパイルされ、問題なくこれらのクラスターで正常に実行されました。上記のエラーが発生する理由は何でしょうか?

コード:

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();
    }
}
10
sandeep

私は同様の問題に直面し、いくつかのオンライン調査と試行錯誤の後で、これの3つの原因に絞り込みました(最初の2つはエラーメッセージにさえ近くありません):

  1. エラーで示されているように、おそらくあなたは利用可能なリソースよりも多くのリソースを割り当てています。=>これは私の問題ではありませんでした
  2. ホスト名とIPアドレスの事故:spark-env.shでSPARK_MASTER_IPとSPARK_LOCAL_IPを指定することでこれを処理しました
  3. クライアントでファイアウォールを無効にする:これは私のために働いた解決策でした。社内コードのプロトタイプを作成していたので、クライアントノードのファイアウォールを無効にしました。何らかの理由で、ワーカーノードがクライアントと通信できませんでした。本番環境では、必要な特定の数のポートを開く必要があります。
19
ameyamm

私の問題は、スレーブが利用できるよりも多くのメモリを割り当てていたことでした。 spark送信のメモリサイズを減らしてみてください。次のようなものです:

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

私の~/spark-1.5.0/conf/spark-env.sh であること:

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

ラスの 投稿 を見てください

具体的にはこのセクション:

これは、新しいSparkユーザーが新しいアプリケーションを実行しようとしたときに表示される最も一般的な最初のエラーです。新しくて興奮したSparkユーザーが試行しますシェルを起動するか、独自のアプリケーションを実行すると、次のメッセージが表示されます

.。

この問題の短期的な解決策は、クラスターに存在するよりも多くのリソースを要求していないことを確認するか、リソースを不必要に使用しているアプリをシャットダウンすることです。複数のSparkアプリを同時に実行する必要がある場合は、各アプリで使用されるコアの量を調整する必要があります。

2
phact

リソースの割り当てが正しいにもかかわらず、この問題に何度か直面しました。

修正は、mesosサービスを再起動することでした。

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

私の場合、問題は$SPARK_HOME/conf/spark-env.shに次の行があることでした。

SPARK_EXECUTOR_MEMORY = 3g

各労働者の、
および$SPARK_HOME/conf/spark-default.shの次の行

spark.executor.memory 4g

「マスター」ノードで。

4gを3gに変更すると問題は解決しました。これが同じ問題を抱えている人の助けになることを願っています。他の答えは私がこれを見つけるのを助けました。

0
vefthym