在往yarn中提交spark程序的时候,需要使用到spark-submit脚本,spark-submit脚本会启动SparkSubmit类,再反射启动用户写的spark程序。如果我们能够抛开spark-submit脚本和SparkSubmit类启动spark程序,那么spark程序就能够方便的镶嵌到其他大型程序中,为其他程序提供计算引擎,例如镶嵌到tomcat中,为web程序提供守护程序。
为了解决以上问题,首先想到的是要抛弃spark-submit,保证能够用java指令提交spark程序到yarn中。具体的分析步骤如下:
- 先写一个简单的示例代码用来测试,并打包,这里打包完jar包地址为/root/IdeaProjects/java-scala-practice/target/java-scala-practice-1.0.jar:
package spark.freedomstart
import org.apache.spark.sql.hive.HiveContext
import org.apache.spark.{SparkConf , SparkContext}
object StartSparkWithoutSparkSubmit {
def main(args: Array[ String]) {
val sparkConf = new SparkConf().setAppName( "local-yarn-test")
val sc = new SparkContext(sparkConf)
val hc = new HiveContext(sc)
hc.sql( "select * from pokes").show()
}
}
import org.apache.spark.sql.hive.HiveContext
import org.apache.spark.{SparkConf , SparkContext}
object StartSparkWithoutSparkSubmit {
def main(args: Array[ String]) {
val sparkConf = new SparkConf().setAppName( "local-yarn-test")
val sc = new SparkContext(sparkConf)
val hc = new HiveContext(sc)
hc.sql( "select * from pokes").show()
}
}
- 查看spark-submit脚本是如何提交程