手记

利用web管理spark任务

由于最近学习了Play Framework这个web开发框架,接口的设计和api非常炫酷。由于是scala写的,所以这个框架对于和大数据框架结合来说个人觉得最非常适合。

每次写的saprk 程序都要先上传在登录到Linux 机器上提交,登录通道机/ 跳板机 每次都要密码,如果修改了代码,还要重新上传。所以在想能否设计一个接口程序,将提交任务间接操作,从而实现免登录操作,一键提交任务。

总体思路:

利用Restful api +akka+ java Process

根据官方提供的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 编译环境

Installing Play

修改配置文件,将集群地址替换为你的

文件路径在
<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


0人推荐
随时随地看视频
慕课网APP