由于最近學(xué)習(xí)了Play Framework這個(gè)web開發(fā)框架,接口的設(shè)計(jì)和api非常炫酷。由于是scala寫的,所以這個(gè)框架對(duì)于和大數(shù)據(jù)框架結(jié)合來(lái)說(shuō)個(gè)人覺得最非常適合。
每次寫的saprk 程序都要先上傳在登錄到Linux 機(jī)器上提交,登錄通道機(jī)/ 跳板機(jī) 每次都要密碼,如果修改了代碼,還要重新上傳。所以在想能否設(shè)計(jì)一個(gè)接口程序,將提交任務(wù)間接操作,從而實(shí)現(xiàn)免登錄操作,一鍵提交任務(wù)。
總體思路:
利用Restful api +akka+ java Process
- akka是一個(gè)構(gòu)建高可靠程序并發(fā)庫(kù),并且可以解耦通訊, 每次提交的程序都會(huì)獨(dú)立享有一個(gè)線程,互不干擾操作。
- Rest api 相關(guān)
主要參考官方的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
根據(jù)官方提供的api 我們可以拿到很多運(yùn)行時(shí)的數(shù)據(jù),根據(jù)接口數(shù)據(jù)進(jìn)行自定義的展示和監(jiān)控,這里項(xiàng)目用到的是spark master的接口<pre>http://yourhost:8080/json</pre>
利用 java Process的api 可以實(shí)現(xiàn)調(diào)用用戶指定的command,從而實(shí)現(xiàn)提交任務(wù),使用該api的好處是可以用流的方式讀取日志,用正在判斷當(dāng)前任務(wù)是否運(yùn)行結(jié)束,最后返回匹配結(jié)果。
首頁(yè)的監(jiān)控主要是用了hadoop的jmx接口數(shù)據(jù)
<pre>http://yourhost:50070/jmx?qry=Hadoop:service=NameNode,name=FSNamesystem</pre>
hadoop metrics指標(biāo)說(shuō)明
<pre>http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-common/Metrics.html</pre>
spark-submit-ui
基于playframwork開發(fā),web管理spark應(yīng)用的程序
你需要安裝SBT和Java以及PlayFramowrk。這個(gè)項(xiàng)目基于2.2.x 版本開發(fā),需要PlayFramowrk 2.2或更高版本。
測(cè)試環(huán)境
- JDK8
- Center OS 6.5
- Spark 1.5.2
- Hadoop 2.6.0
- Scala 2.11
根據(jù)不同的測(cè)試環(huán)境可能需要做不同的調(diào)整與修改
主要功能
- hadoop metrics 數(shù)據(jù)監(jiān)控
- spark 集群狀態(tài)信息展示
- 完善的spark app 提交與管理
- 任務(wù)狀態(tài)監(jiān)控,狀態(tài)推送
并下載并安裝Play Framework 編譯環(huán)境
修改配置文件,將集群地址替換為你的
文件路徑在
<pre>conf/web-site.conf</pre>
編譯與運(yùn)行
<pre> activator run </pre>
然后去 http://localhost:9000 查看正在運(yùn)行的服務(wù)器。
如果運(yùn)行有這個(gè)界面提示,點(diǎn)擊Apply this script now 初始化數(shù)據(jù)表

項(xiàng)目默認(rèn)使用H2數(shù)據(jù)庫(kù)
這是Play 內(nèi)嵌的一個(gè)數(shù)據(jù)庫(kù) H2
H2數(shù)據(jù)庫(kù)
如果想要換成Mysql或者是其他的存儲(chǔ)可以參考指引
<b>MySQL 數(shù)據(jù)庫(kù)引擎連接屬性
配置文件 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>
其他
通過(guò)界面管理,kill或者rerun任務(wù)


如果你的提交參數(shù)或配置導(dǎo)致異常,可以在提交時(shí)查看相關(guān)的錯(cuò)誤輸出

首頁(yè)

讓大數(shù)據(jù)開發(fā)更加簡(jiǎn)單~
項(xiàng)目地址:https://github.com/kingekinge/spark-submit-ui