关于本地提交spark任务至yarn,之前一直采用的是本地安装hadoop、spark等环境后通过相关API 提交任务。
此种方法的不足:
- 本地需要安装hadoop、spark环境,对于新手来说非常痛苦,非常容易出现各种问题,如本地配置文件版本过多导致任务受影响等。
- 每个人提交任务的user都是自己电脑的user,容易出现各种问题,如hdfs、hive相关的权限问题
- 相关的api提交任务看不到相信日志等
新的提交任务的方式:
采用thrift实现了一个任务提交代理服务,客户端与服务端交互,服务端与yarn交互,对客户端提交三个方法:
- 提交任务
- 查看任务日志
- kill任务
该方式完美解决老方式的问题,本地不需要安装环境,写好代码提交即可。特点:
- 在集群中启动server端,支持多任务同时提交
- 所有任务的user都是启动server的用户
不足之处:
- 需要启动并维护该服务
补充:
目前只提供了spark on yarn三个方法,后续还可以在服务端做更多控制功能,更多种任务提交模式
代码参考: