1

私はspark cassandra Javaコネクタを使用してテーブルを照会しているspark/cassandraセットアップを持っています。これまでのところ、1 つの Spark マスター ノード (2 コア) と 1 つのワーカー ノード (4 コア) があります。どちらも conf/ の下に次の spark-env.sh があります。

#!/usr/bin/env bash
export SPARK_LOCAL_IP=127.0.0.1
export SPARK_MASTER_IP="192.168.4.134"
export SPARK_WORKER_MEMORY=1G
export SPARK_EXECUTOR_MEMORY=2G

ここに私のスパーク実行コードがあります:

    SparkConf conf = new SparkConf();
    conf.setAppName("Testing");
    conf.setMaster("spark://192.168.4.134:7077");
    conf.set("spark.cassandra.connection.host", "192.168.4.129");
    conf.set("spark.logConf", "true");
    conf.set("spark.driver.maxResultSize", "50m");
    conf.set("spark.executor.memory", "200m");
    conf.set("spark.eventLog.enabled", "true");
    conf.set("spark.eventLog.dir", "/tmp/");
    conf.set("spark.executor.extraClassPath", "/home/enlighted/ebd.jar");
    conf.set("spark.cores.max", "1");
    JavaSparkContext sc = new JavaSparkContext(conf);


    JavaRDD<String> cassandraRowsRDD = CassandraJavaUtil.javaFunctions(sc).cassandraTable("testing", "ec")
    .map(new Function<CassandraRow, String>() {
        private static final long serialVersionUID = -6263533266898869895L;
        @Override
        public String call(CassandraRow cassandraRow) throws Exception {
            return cassandraRow.toString();
        }
    });
    System.out.println("Data as CassandraRows: \n" + StringUtils.join(cassandraRowsRDD.toArray(), "\n"));
    sc.close();

ここで、最初のノードでマスター スパークを開始し、次に 2 番目のノードでワーカーを開始してから、上記のコードを実行します。ワーカーにエグゼキュータ スレッドを作成しますが、アプリケーション側のログに次のメッセージが表示されます。

[Timer-0] WARN org.apache.spark.scheduler.TaskSchedulerImpl  - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources

同じ設定を維持したまま、マスター サーバーで spark/sbin/start-all.sh を実行すると、最初のノードにマスター インスタンスとワーカー インスタンスが作成されます。繰り返しますが、同じコードを実行し、割り当てられたワーカーがこの新しいワーカーである場合、完全に正常に動作します。

マスター ノードとは異なるノードで実行されている元のワーカーの問題は何ですか?

4

1 に答える 1