这是我想要做的。
我已经创建了两个DataStax企业集群节点,在此基础上我创建了一个java程序来获取一个表的计数(Cassandra数据库表)。
这个程序是在eclipse中构建的,实际上是从一个Windows框中。
在从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();
}
}
答案 0 :(得分:18)
我遇到了类似的问题,在进行了一些在线研究和试验n错误之后,我缩小了3个原因(除了第一个,其他两个甚至没有接近错误信息):
答案 1 :(得分:6)
我的问题是我分配的内存比我的奴隶可用的内存多得多。尝试减少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
答案 2 :(得分:2)
请查看Russ的post
特别是本节:
这是新Spark用户最常见的第一个错误 在尝试运行新应用程序时看到。我们新的和兴奋的 Spark用户将尝试启动shell或运行自己的shell 申请并得到以下信息
...
这个问题的短期解决方案是确保你不是 从群集请求更多资源而不是存在或关闭 任何不必要地使用资源的应用程序。如果你需要跑 多个Spark应用程序同时你需要调整 每个应用程序使用的核心数量。
答案 3 :(得分:0)
在我的情况下,问题是我在$SPARK_HOME/conf/spark-env.sh
中有以下行:
SPARK_EXECUTOR_MEMORY =3克
每个工人,
以及$SPARK_HOME/conf/spark-default.sh
spark.executor.memory 4g
在“主”节点中。
一旦我将4g改为3g,问题便消失了。我希望这可以帮助有同样问题的人。其他答案帮助我发现了这一点。
答案 4 :(得分:0)
即使资源分配正确,我也几次遇到过这个问题。
修复是重启mesos服务。
sudo service mesos-slave restart
sudo service mesos-master restart