目前我正在运行我的程序
val conf = new SparkConf()
.setAppName("Test Data Analysis")
.setMaster("local[*]")
.set("spark.executor.memory", "32g")
.set("spark.driver.memory", "32g")
.set("spark.driver.maxResultSize", "4g")
即使我在5台机器的集群上运行(每台机器有376 GB物理RAM)。我的程序出错java.lang.OutOfMemoryError: Java heap space
我的数据量很大......但不是很大,超过32 GB Executor内存* 5个节点。
我怀疑这可能是因为我使用“本地”作为我的主人。我见过文档说使用spark://machinename:7070
但是我想了解我的群集...如何确定此URL和端口
编辑:我可以看到文档讨论了运行名为“spark-master.sh”的东西,以便将节点作为主节点。
在我的情况下,火花星团由其他人设置/维护,所以我不想通过启动我自己的主人来改变拓扑。
如何查询并找出哪个节点是现有主节点。
我已经尝试在群集中选择一个随机节点,然后尝试'spark:// node:7077'但这不起作用并给出错误
[15/11/03 20:06:21 WARN AppClient$ClientActor: Could not connect to
akka.tcp://sparkMaster@node:7077:
akka.remote.EndpointAssociationException: Association failed with
[akka.tcp://sparkMaster@node:7077]
答案 0 :(得分:13)
我发现做--master yarn-cluster
效果最好。这可以确保spark使用hadoop集群的所有节点。
答案 1 :(得分:10)
.setMaster("local[*]")
将以自包含模式运行spark。在这种模式下,spark只能利用本地机器的资源。
如果您已经在物理群集上设置了火花群集。解决方案很简单,检查http://master:8088
主人指向火花主机。在那里你可以看到spark master URI,默认情况下是spark://master:7077
,如果你有一个spark独立集群,那么实际上有相当多的信息存在。
但是,我看到很多关于SO的问题声称这不会有很多不同的原因。使用spark-submit
实用程序不易出错,See usage。
但如果你还没有火花星团,我建议你设置Spark Standalone cluster first。
答案 2 :(得分:0)
使用命令获取URL信息 sc.uiWebUrl
答案 3 :(得分:0)
要使用shell在spark DSE(Datastax)中查看主节点
dse client-tool spark leader-address