目前我正在运行我的程序
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")
Run Code Online (Sandbox Code Playgroud)
即使我在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]
Run Code Online (Sandbox Code Playgroud)
Kno*_*uch 14
我发现做得--master yarn-cluster最好.这可以确保spark使用hadoop集群的所有节点.
meh*_*anc 11
你是当场的..setMaster("local[*]")将以自包含模式运行spark.在这种模式下,spark只能利用本地机器的资源.
如果您已在物理群集上设置了火花群集.解决方案很简单,检查http://master:8088主站指向火花主机的位置.在那里你可以看到spark master URI spark://master:7077,如果你有一个spark独立集群,那么默认情况下,实际上有很多信息存在.
但是,我看到很多关于SO的问题,声称这不能用于许多不同的原因.使用spark-submit实用程序不易出错,请参阅用法.
但是如果你还没有一个Spark集群,我建议先建立一个Spark Standalone集群.