报出的错误:OutOfMemoryError: Java heap space
问题出现的场景:使用hue提交spark作业
本来一个在终端使用spark-submit提交可以运行成功的程序,等配置到hue上竟然堆异常了。关键在hue上也配置了--num-executors等参数,而且和spark submit提交方式的参数一样的。优化了半天发现依然不能通过。
所以我们猜想是hue在提交spark作业时加载了默认配置,这些默认设置可能覆盖或限制了我们自己的配置。但是去哪里修改这些默认配置呢
hue在提交spark时借助的还是oozie,所以是oozie加载了自己的配置。
Oozie通过 launcher job 运行某个具体的Action。launcher job是一个 map-only的MR作业,而且并不知道它将在集群的哪台机器上执行这个MR作业。
在上图中,Oozie Client提交了一个workflow给Oozie Server。这个workflow里面要执行具体的Hive作业(Hive Action)
首先Oozie Server会启动一个MR作业,也就是launcher job,由launcher job来发起具体的Hive作业。(Hive作业本质上是MR作业)
解决方案:
通过配置以oozie.launcher
为前缀的属性(对应Hadoop的参数配置),Oozie在提交Launcher作业时,会将这些参数传递给YARN。
参考3中使用此种方法