如何查找现有spark群集的主URL

Kno*_*uch 29 apache-spark

目前我正在运行我的程序

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集群的所有节点.

  • 你如何/在哪里附加这些行?在命令 setMaster() 中? (3认同)

meh*_*anc 11

你是当场的..setMaster("local[*]")将以自包含模式运行spark.在这种模式下,spark只能利用本地机器的资源.

如果您已在物理群集上设置了火花群集.解决方案很简单,检查http://master:8088主站指向火花主机的位置.在那里你可以看到spark master URI spark://master:7077,如果你有一个spark独立集群,那么默认情况下,实际上有很多信息存在.

但是,我看到很多关于SO的问题,声称这不能用于许多不同的原因.使用spark-submit实用程序不易出错,请参阅用法.

但是如果你还没有一个Spark集群,我建议先建立一个Spark Standalone集群.

  • 用`火花submit`除去`.setMaster( "本地[*]")`从火花的应用程序,并通过`--master火花://主:7077`到`火花submit`.这些都记录在上面给出的链接中. (4认同)