由于最近学习了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://www.jianshu.com/p/a9d4683ff8a3