大數(shù)據(jù)實時流計算平臺Spark Streaming二次封裝開源框架源碼分享!
SparkStreaming Framework簡稱SSF項目介紹基于Spark Streaming的大數(shù)據(jù)實時流計算平臺和框架,并且是基于運(yùn)行在yarn模式運(yùn)行的spark streaming大數(shù)據(jù)實時流計算框架Spark Streaming是比較流程的框架,但是目前很少有針對...
源碼獲取請先轉(zhuǎn)發(fā),關(guān)注后私信:“spark” 即可免費(fèi)獲取
一個完善的Spark Streaming二次封裝開源框架,包含:實時流任務(wù)調(diào)度、kafka偏移量管理,web后臺管理,web api啟動、停止spark streaming,宕機(jī)告警、自動重啟等等功能支持,用戶只需要關(guān)心業(yè)務(wù)代碼,無需關(guān)注繁瑣的技術(shù)細(xì)節(jié),大大提高實時流開發(fā)效率和難度(附demo)。
Spark Streaming Framework簡稱SSF(一個完善的Spark Streaming二次封裝開源框架,包含:實時流任務(wù)調(diào)度、kafka偏移量管理,web后臺管理,web api啟動、停止spark streaming,宕機(jī)告警、自動重啟等等功能支持,用戶只需要關(guān)心業(yè)務(wù)代碼,無需關(guān)注繁瑣的技術(shù)細(xì)節(jié),大大提高實時流開發(fā)效率和難度。)
項目介紹
基于Spark Streaming的大數(shù)據(jù)實時流計算平臺和框架(包括:調(diào)度平臺,開發(fā)框架,開發(fā)demo),并且是基于運(yùn)行在yarn模式運(yùn)行的spark streaming
大數(shù)據(jù)實時流計算框架Spark Streaming是比較流程的框架,但是目前很少有針對Spark Streaming封裝的開源平臺項目,本項目是基于Spark Streaming + Springboot開發(fā)的一套完成的開發(fā)和調(diào)度平臺,為了降低對Spark Streaming使用難度(如:界面化提交任務(wù),優(yōu)雅關(guān)閉程序,kafka管理偏移量,監(jiān)控告警,自動復(fù)活重啟等),該項目在企業(yè)內(nèi)部穩(wěn)定運(yùn)行超過一年,現(xiàn)將整套代碼開源,企業(yè)或者個人使用這個框架可以降低開發(fā)spark streaming的難度,用戶可是甚至不用關(guān)心怎么讀取kafka數(shù)據(jù),管理偏移量,spark streaming的程序如何啟動,停止,把目前遇到的坑都給解決了,只需要編寫實時流計算的業(yè)務(wù)代碼就可以了(只要寫java/scala的業(yè)務(wù)代碼或者算子即可)。希望對大家有幫助。本人精力有限,希望可以認(rèn)識更多喜歡Spark Streaming的朋友,一起維護(hù)該項目。主要分為3個項目,均是用idea開發(fā)的。
開發(fā)工具使用的是Idea,hdfs,spark,hbase,livy等組件可以根據(jù)自己集群的版本進(jìn)行修改pom文件。
- platform:web ui 后臺管理工具,主要負(fù)責(zé)spark streaming任務(wù)提交,調(diào)度、監(jiān)控,啟停,job管理,參數(shù)設(shè)置的等等,這個要打包成war文件,部署在tomcat中。
- framework:開發(fā)框架,很多功能都封裝在這個jar包中,大部分情況下這個里面的代碼是不需要修改的,只需要用maven install到本地倉庫即可,spark streaming中代碼不需要再管理kafka偏移量,讀取指定kafka的topic,和一些連接池工具類等等。
- bigdata:用來開發(fā)實時流業(yè)務(wù)代碼的項目骨架,你代碼都是在這個骨架中開發(fā)(里面有demo)。
spark streaming開發(fā)業(yè)務(wù)邏輯demo代碼參考
- java:bigdata.java.spark.streaming.task.datasynchro.DataSynchroStreaming
- scala:bigdata.scala.spark.streaming.task.testscalaapp.ScalaDemo
功能介紹
語言:支持java/scala
功能:
- 依賴管理:程序打包時jar/config是不需要講依賴包打進(jìn)去的,可以在platform中上傳依賴的jar/config(將會存儲在hdfs),應(yīng)用程序啟動時,會自動通過livy加載jar/config的參數(shù)進(jìn)行提交。
- Job版本管理:每當(dāng)你的業(yè)務(wù)代碼,spark streaming邏輯有變更時,上傳最新的job包,歷史的版本也可以查看到和選擇執(zhí)行歷史版本。
- 程序啟動:通過在platform后臺可以啟動任務(wù)。
- 程序停止:通過platform后臺可以停止任務(wù);(停止包括2種,一種是普通的停止,這種是spark streaming優(yōu)雅關(guān)閉,一種是強(qiáng)殺,這種是使用yarn命令進(jìn)行強(qiáng)殺app)
- 宕機(jī)自動重啟:當(dāng)你提交的spark streaming程序被人殺了,或者應(yīng)用程序本身的問題掛了,platform會監(jiān)控這個任務(wù),自動重啟,一個任務(wù)每天最多重啟3次。
- 宕機(jī)告警短信:spark streaming程序掛了,或者被殺了,會有短信提醒,后臺在創(chuàng)建用戶是配置手機(jī)號碼,發(fā)送短信的api需要自己實現(xiàn)。
- 指定隊列運(yùn)行:指定yarn隊列運(yùn)行你的app。
- 指定參數(shù)運(yùn)行:app啟動時需要讀取指定的args參數(shù)是可以在platform中配置。
- 數(shù)據(jù)反壓管理:spark streaming的反壓可以在platform創(chuàng)建任務(wù)時在args中配置,如果不配置將讀取config的默認(rèn)值(100)
- Elasticsearch連接池:已經(jīng)實現(xiàn)es連接池,只需要修改配置文件指定參數(shù)即可。
- Hbase連接池:已經(jīng)實現(xiàn)hbase連接池,只需要修改配置文件指定參數(shù)即可。
- Mysql連接池:已經(jīng)實現(xiàn)Mysql連接池,只需要修改配置文件指定參數(shù)即可。
- Oracle連接池:已經(jīng)實現(xiàn)oracle連接池,只需要修改配置文件指定參數(shù)即可。
- Redis連接池:已經(jīng)實現(xiàn)redis連接池,只需要修改配置文件指定參數(shù)即可。
- Kafka生產(chǎn)者連接池:已經(jīng)實現(xiàn)Kafka連接池,只需要修改配置文件指定參數(shù)即可。
- 數(shù)據(jù)處理統(tǒng)計情況:支持查看kafka的offset消費(fèi)情況,剩余多少數(shù)據(jù)沒有消費(fèi)。
- 數(shù)據(jù)積壓告警:在創(chuàng)建任務(wù)時可以指定積壓批次的數(shù)量就進(jìn)行短信告警。
- kafka偏移量管理:可在platform中指定offset從特定位置進(jìn)行消費(fèi)數(shù)據(jù)。
- 統(tǒng)計:通過圖標(biāo)的方式顯示最近7天app消費(fèi)和kafka生成的數(shù)據(jù)情況。
- log下載:通過調(diào)用ssh,可以下載Livy和Yarn的運(yùn)行日志。
- Web api功能:使用http請求啟動,停止,強(qiáng)殺,獲取狀態(tài)來調(diào)度你的app程序。
部署
參考:Spark-Streaming-Framework/SSF/部署相關(guān)/部署指南.txt 或者加群咨詢.QQ交流群:858966066
界面截圖:
源碼獲取請先轉(zhuǎn)發(fā),關(guān)注后私信:“spark” 即可免費(fèi)獲取
推薦閱讀:健康報訊網(wǎng)