利用web管理spark任务

由于最近学习了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的接口

http://yourhost:8080/json

  • 利用 java Process的api 可以实现调用用户指定的command,从而实现提交任务,使用该api的好处是可以用流的方式读取日志,用正在判断当前任务是否运行结束,最后返回匹配结果。

  • 首页的监控主要是用了hadoop的jmx接口数据

    http://yourhost:50070/jmx?qry=Hadoop:service=NameNode,name=FSNamesystem

hadoop metrics指标说明

http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-common/Metrics.html

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

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

文件路径在

conf/web-site.conf

编译与运行

 activator run 

然后去 http://localhost:9000 查看正在运行的服务器。
如果运行有这个界面提示,点击Apply this script now 初始化数据表

利用web管理spark任务_第1张图片

项目默认使用H2数据库

这是Play 内嵌的一个数据库 H2
H2数据库

如果想要换成Mysql或者是其他的存储可以参考指引
MySQL 数据库引擎连接属性
配置文件 conf/application.conf


db.default.driver=com.mysql.jdbc.Driver
db.default.url="jdbc:mysql://localhost/playdb"
db.default.user=playdbuser
db.default.pass="a strong password"

其他

通过界面管理,kill或者rerun任务


利用web管理spark任务_第2张图片
利用web管理spark任务_第3张图片

如果你的提交参数或配置导致异常,可以在提交时查看相关的错误输出

利用web管理spark任务_第4张图片

首页

利用web管理spark任务_第5张图片

让大数据开发更加简单~
项目地址:https://github.com/kingekinge/spark-submit-ui

你可能感兴趣的:(利用web管理spark任务)