由于最近学习了Play Framework这个web开发框架,接口的设计和api非常炫酷。由于是scala写的,所以这个框架对于和大数据框架结合来说个人觉得最非常适合。
每次写的saprk 程序都要先上传在登录到Linux 机器上提交,登录通道机/ 跳板机 每次都要密码,如果修改了代码,还要重新上传。所以在想能否设计一个接口程序,将提交任务间接操作,从而实现免登录操作,一键提交任务。
总体思路:
利用Restful api +akka+ java Process
- akka是一个构建高可靠程序并发库,并且可以解耦通讯, 每次提交的程序都会独立享有一个线程,互不干扰操作。
- Rest api 相关
主要参考官方的rest api文档:
spark:http://spark.apache.org/docs/latest/monitoring.html#rest-api
yarn: http://hadoop.apache.org/docs/r2.6.0/hadoop-yarn/hadoop-yarn-site/ResourceManagerRest.html
根据官方提供的api 我们可以拿到很多运行时的数据,根据接口数据进行自定义的展示和监控,这里项目用到的是spark master的接口<pre>http://yourhost:8080/json</pre>
利用 java Process的api 可以实现调用用户指定的command,从而实现提交任务,使用该api的好处是可以用流的方式读取日志,用正在判断当前任务是否运行结束,最后返回匹配结果。
首页的监控主要是用了hadoop的jmx接口数据
<pre>http://yourhost:50070/jmx?qry=Hadoop:service=NameNode,name=FSNamesystem</pre>
hadoop metrics指标说明
<pre>http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-common/Metrics.html</pre>
spark-submit-ui
基于playframwork开发,web管理spark应用的程序
你需要安装SBT和Java以及PlayFramowrk。这个项目基于2.2.x 版本开发,需要PlayFramowrk 2.2或更高版本。
测试环境
- JDK8
- Center OS 6.5
- Spark 1.5.2
- Hadoop 2.6.0
- Scala 2.11
根据不同的测试环境可能需要做不同的调整与修改
主要功能
- hadoop metrics 数据监控
- spark 集群状态信息展示
- 完善的spark app 提交与管理
- 任务状态监控,状态推送
并下载并安装Play Framework 编译环境
修改配置文件,将集群地址替换为你的
文件路径在
<pre>conf/web-site.conf</pre>
编译与运行
<pre> activator run </pre>
然后去 http://localhost:9000 查看正在运行的服务器。
如果运行有这个界面提示,点击Apply this script now 初始化数据表
项目默认使用H2数据库
这是Play 内嵌的一个数据库 H2
H2数据库
如果想要换成Mysql或者是其他的存储可以参考指引
<b>MySQL 数据库引擎连接属性
配置文件 conf/application.conf
</b>
<pre>
db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost/playdb"
db.default.user=playdbuser
db.default.pass="a strong password" </pre>
其他
通过界面管理,kill或者rerun任务
如果你的提交参数或配置导致异常,可以在提交时查看相关的错误输出
首页
让大数据开发更加简单~
项目地址:https://github.com/kingekinge/spark-submit-ui