这就是我正在尝试做的事情。
我创建了DataStax企业集群的两个节点,在其上创建了一个java程序来获取一张表(Cassandra数据库表)的计数。
该程序是在 eclipse 中构建的,实际上是来自 windows 盒子。
从 Windows 运行此程序时,它失败并在运行时出现以下错误:
初始作业未接受任何资源;检查集群 UI 以确保工作线程已注册并拥有足够的内存
相同的代码已在这些集群上成功编译和运行,没有任何问题。出现上述错误的原因可能是什么?
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();
}
}
我遇到了类似的问题,经过一些在线研究和反复试验,我将其缩小到 3 个原因(除了第一个,其他两个甚至与错误消息相差甚远):
- 如错误所示,您可能是分配比可用资源更多的资源。=> 这不是我的问题
-
主机名和 IP 地址错误:我通过在spark-env.sh中指定SPARK_MASTER_IP和SPARK_LOCAL_IP来处理这个问题
-
禁用客户端的防火墙:这是对我有用的解决方案。由于我正在开发原型内部代码,因此我禁用了客户端节点上的防火墙。由于某种原因,工作节点无法为我与客户端进行对话。出于生产目的,您可能需要开放一定数量的所需端口。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)