用java提交一个Spark应用程序
来源:互联网 发布:axurerp7.0破解版mac 编辑:程序博客网 时间:2024/06/02 00:33
第一种方式
经常有人在公众号留言或者在群里问浪尖,如何使用java代码提交一个Spark应用程序。在这里浪尖介绍一种简单的方法来实现这个功能。
首先用vim打开一个文件,MyLauncher.java
编写代码如下:
import org.apache.spark.launcher.SparkAppHandle;
import org.apache.spark.launcher.SparkLauncher;
import java.util.HashMap;
public class MyLauncher {
public static void main(String[] args) throws Exception {
HashMap<String,String> map = newHashMap<String, String>();
map.put("HADOOP_CONF_DIR","/home/hadoop/conf");
map.put("YARN_CONF_DIR","/home/hadoop/conf");
map.put("SPARK_CONF_DIR","/home/hadoop/spark/conf");
new SparkLauncher(map)
.setAppResource("/data/newStreaming/uesc-analyzer.jar")
.setMainClass("ucloud.UESBash.testSchema")
.setMaster("yarn-cluster")
.setConf(SparkLauncher.DRIVER_MEMORY, "2g")
.setVerbose(true).startApplication();
Thread.sleep(100000);
// Use handle API to monitor / control application.
}
}
接着,进行编译
javac -cp /home/hadoop/spark/lib/spark-assembly-1.6.0-hadoop2.6.0-cdh5.4.9.jarMyLauncher.java
然后提交执行
java -cp/home/hadoop/spark/lib/spark-assembly-1.6.0-hadoop2.6.0-cdh5.4.9.jar:.MyLauncher
这样就可以在yarn的界面上看到运行情况了。
注释:可能你比较奇怪我为啥在那加了个停顿,因为正常情况下我们要进行一些其它操作监控Spark应用而不是直接退出,直接退出可能会导致提交还没完成退出,以至于应用程序不能被提交了。
当然,还有另外一种方式,但是不建议使用,上面采用的这种方式呢可以更好地监控我们Spark程序的状态。
第二种方式
import org.apache.spark.launcher.SparkAppHandle;
import org.apache.spark.launcher.SparkLauncher;
import java.util.HashMap;
public class MyLauncher {
public static void main(String[] args) throws Exception {
HashMap<String,String> map = newHashMap<String, String>();
map.put("HADOOP_CONF_DIR","/home/hadoop/conf");
map.put("YARN_CONF_DIR","/home/hadoop/conf");
map.put("SPARK_CONF_DIR","/home/hadoop/spark/conf");
Process spark = new SparkLauncher(map)
.setAppResource("/data/newStreaming/uesc-analyzer.jar")
.setMainClass("ucloud.UESBash.testSchema")
.setMaster("yarn-cluster")
.setConf(SparkLauncher.DRIVER_MEMORY, "2g")
.setVerbose(true).launch();
// Use handle API to monitor / control application.
spark.waitFor();
}
}
第二种方式是启动了一个子进程来加载提交应用程序。
至于SparkLauncher其它标准函数操作,比如如何传参,如何指定内存,cpu,如何指定钩子函数这些浪尖就不在这里啰嗦了,有兴趣可以去翻看这个类的源码。也可以在公众号里输入:submit,来获取这个类和钩子函数使用的复杂代码。
推荐阅读:
1,读懂Word2Vec之Skip-Gram
2,CountVectorizer
3,spark调优系列之内存和GC调优
kafka,hbase,spark,Flink等入门到深入源码,spark机器学习,大数据安全,大数据运维,请关注浪尖公众号,看高质量文章。
更多文章,敬请期待
- 用java提交一个Spark应用程序
- 提交spark应用程序spark-submit
- Spark -7:提交spark应用程序
- Spark 提交应用程序
- 用maven管理spark应用程序,提交到spark on yarn 集群上运行
- Spark On Yarn:提交Spark应用程序到Yarn
- Spark On Yarn:提交Spark应用程序到Yarn
- Spark -11:Spark Submit提交历史应用程序删除
- eclipse java spark作业提交
- spark提交java程序异常
- 使用java应用程序提交表单
- Spark 实践 - 客户端使用spark-submit提交Spark应用程序及注意事项
- 【Spark1.3官方翻译】 Spark Submit提交应用程序
- spark 官方文档(1)——提交应用程序
- 用spark-submit启动Spark应用程序
- Java Web提交任务到Spark
- Spark通过Java Web提交任务
- <转>Java Web提交任务到Spark
- 【maven】--依赖机制
- 剑指offer—从上往下打印二叉树
- STM32的优势
- Android自定义工具类TimerThread
- Python下"No module named _tkinter"问题解决过程总结
- 用java提交一个Spark应用程序
- Spark性能调优-Shuffle调优[转]
- 洛谷p1804
- 密码(GCD有关)
- 还有3天,公布下目前后台收到的点赞数较高的几位...
- 约瑟夫环(非递推版)
- Hadoop 的三种运行模式以及伪分布式模式配置
- “风暴”洗礼后,暴风冯鑫和迅雷陈磊会怎样回顾这内忧外患一年
- 科大讯飞会是典型的AI泡沫吗