分享

intellij idea开发的spark应用spark-submit提交正常运行,直接在idea提交有问题

ltne 发表于 2016-11-10 18:42:35 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 24 27038
有两个集群,一个部署在阿里云,一个部署在三台虚拟机上:
在虚拟机上的:spark-sbumit提交和idea直接提交到集群都可以正常运行;
在阿里云(内外网IP,内部设置全部设置为外网IP):spark-submit提交开发的jar应用可以正常运行,idea提交的时候一直出现下面错误
WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources

疑问:在提交任务后会启动SparkUi:
16/11/10 17:31:30 INFO SparkUI: Bound SparkUI to 0.0.0.0, and started at http://192.168.1.47:4040
但是在向云集群提交的时候也是在本机启动4040,此处是否会存在通信问题?

请各位大神多加指教



补充内容 (2016-11-14 12:46):
看到一些网上资料是driver启动在本地,executor在远程云上,导致两个ip不再同一个网段,这里存在通信问题,就是不知道这个问题该如何处理

已有(24)人评论

跳转到指定楼层
starrycheng 发表于 2016-11-10 19:04:07
本帖最后由 pig2 于 2016-11-10 19:16 编辑

16/11/10 17:31:30 INFO SparkUI: Bound SparkUI to 0.0.0.0, and started at http://192.168.1.47:4040
但是在向云集群提交的时候也是在本机启动4040,此处是否会存在通信问题?


这里描述的不清楚。首先SparkUI 是本地,开启是在192.168.1.47,这个ip是那的ip地址。
向云提交,又是如何提交的。

是在本地shell提交,还是在远程云主机提交,还是开发环境提交

回复

使用道具 举报

einhep 发表于 2016-11-10 19:17:51
建议上图,这样会更清楚些
回复

使用道具 举报

nextuser 发表于 2016-11-10 19:40:15
很多原因产生这个问题
比如内存过高
worker_max_heapsize
SPARK_MASTER_OPTS
这些参数可以调整下,
还有就是
IP地址,hostname和防火墙
SPARK_MASTER_IP 和SPARK_LOCAL_IP 在spark-env.sh要注意随着环境改变可能会发生问题
回复

使用道具 举报

ltne 发表于 2016-11-11 09:26:01
本帖最后由 ltne 于 2016-11-11 09:42 编辑

补充一下问题说明:
在intellij idea编写了一个sparkPi的样例:
object SparkPi {
  def main(args: Array[String]) {
    val conf = new SparkConf()
    conf.setAppName("SparkPiTest")
    conf.setMaster("spark://*.*.*.*:7077")   //阿里云spark集群master节点外网ip  
    conf.setJars(List("D:\\spark_test\\123\\out\\artifacts\\123_jar\\123.jar"))
    val sc = new SparkContext(conf)
val slices = if (args.length > 0) args(0).toInt else 2
val n = math.min(100000L * slices, Int.MaxValue).toInt // avoid overflow
val count = sc.parallelize(1 until n, slices).map { i =>
  val x = random * 2 - 1
  val y = random * 2 - 1
  if (x*x + y*y < 1) 1 else 0
}.reduce(_ + _)
  println("Pi is roughly " + 4.0 * count / n)
  sc.stop()
}
}
上述代码打成jar包,就是123.jar,放到集群上面,spark-submit命令可以正常运行;
但是直接在intellij idea右键Run sparkPi确一直出现
16/11/11 09:14:07 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources  问题
另外同样的代码如果我像本地的一个虚拟机集群在intellij idea右键Run sparkPi是可以直接运行的;


疑问:1.打成jar包spark-sbumit可以直接运行,idea里面却报错;
2.同样的代码idea 右键run向阿里云集群提交报错,但是向本地虚拟机集群提交可以;
3.比较阿里云集群上的spark的配置和虚拟机上并没有区别,唯一区别就是阿里云集群有内外网IP,内部设置统一用的外网ip;
11.png
1.png
2.png
3.png
4.png
回复

使用道具 举报

ltne 发表于 2016-11-11 09:30:34
nextuser 发表于 2016-11-10 19:40
很多原因产生这个问题
比如内存过高
worker_max_heapsize

内存cpu资源是充足的,这里并没有特殊指定,所以应该不会出问题,另外hostname也是正确的,这个防火墙是集群的防火墙吧,还是本地的PC端的防火墙呢?
回复

使用道具 举报

ltne 发表于 2016-11-11 09:35:15
starrycheng 发表于 2016-11-10 19:04
16/11/10 17:31:30 INFO SparkUI: Bound SparkUI to 0.0.0.0, and started at http://192.168.1.47:4040
...

这个当初是怀疑我本地PC向云集群提交任务,它在本地PC的IP地址里面启动了4040,就是一个192.168.1.47的IP,这个IP在和云集群那边交互是否会有问题,此处为什么不是在云集群的master节点启动4040监控呢?
回复

使用道具 举报

tntzbzc 发表于 2016-11-11 19:22:38
ltne 发表于 2016-11-11 09:35
这个当初是怀疑我本地PC向云集群提交任务,它在本地PC的IP地址里面启动了4040,就是一个192.168.1.47的IP ...

可能是打包的问题。必须要是灵活的,楼主直接使用的本地包
将所有依赖jar都打入到一个Jar包里,然后手动设置依赖到指定每台机器的DIR。
val conf = new SparkConf().setAppName(appName).setJars(Seq(System.getProperty("user.dir") + "/target/scala-2.10/sparktest.jar"))

回复

使用道具 举报

arsenduan 发表于 2016-11-11 19:26:35
本帖最后由 arsenduan 于 2016-11-11 19:30 编辑

在开发环境中提交,尝试去掉下面代码
conf.setJars(List("D:\\spark_test\\123\\out\\artifacts\\123_jar\\123.jar"))
回复

使用道具 举报

einhep 发表于 2016-11-11 19:35:59
SPARK_MASTER_IP 和SPARK_LOCAL_IP
这些都是怎么配置的
回复

使用道具 举报

123下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条