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