本發(fā)明涉及flink數(shù)據(jù)管理,尤其涉及一種基于代理的flink數(shù)據(jù)流記錄方法和系統(tǒng)。
背景技術(shù):
1、flink是一個對有界和無界數(shù)據(jù)流進行狀態(tài)計算的分布式處理引擎和框架,用于處理數(shù)據(jù),其本身并不存儲數(shù)據(jù)。flink官方未提供相關(guān)的功能去實時地查看或者打印數(shù)據(jù)流中的每一條數(shù)據(jù),只能通過flink的指標(biāo)模塊查看數(shù)據(jù)流入流出的累計數(shù)和瞬時流量等指標(biāo),無法獲取每條數(shù)據(jù)的具體內(nèi)容。為了讓用戶能夠在flink任務(wù)運行過程中,實時地看到數(shù)據(jù)流中的每一條數(shù)據(jù),或者將數(shù)據(jù)實時的寫入到第三方日志系統(tǒng)?,F(xiàn)有的方式是修改flink源碼,在輸出算子的具體方法中植入記錄每條數(shù)據(jù)。在實際應(yīng)用中,這種方式對flink源碼侵入性太大,二次開發(fā)會破壞源碼,經(jīng)過編譯、打包的flink源碼,無法動態(tài)修改,靈活性差。
2、因此,如何提供一種更加安全和靈活的flink數(shù)據(jù)實時記錄方法,成為亟待解決的技術(shù)問題。
技術(shù)實現(xiàn)思路
1、有鑒于此,為了克服現(xiàn)有技術(shù)的不足,本發(fā)明旨在提供一種基于代理的flink數(shù)據(jù)流記錄方法和系統(tǒng)。
2、根據(jù)本發(fā)明的第一方面,提供一種基于代理的flink數(shù)據(jù)流記錄方法,該方法包括:
3、創(chuàng)建maven工程,為創(chuàng)建的maven工程添加打包插件和依賴工具包,創(chuàng)建代理類;
4、在創(chuàng)建的代理類中定義premain靜態(tài)方法,根據(jù)依賴工具包在定義的premain靜態(tài)方法中編寫監(jiān)聽業(yè)務(wù);
5、采用打包插件將maven工程打包成jar包,將jar包上傳至服務(wù)器,通過修改flink配置文件為java虛擬機配置啟動參數(shù);
6、根據(jù)配置的啟動參數(shù)啟動flink作業(yè)提交,通過編寫的監(jiān)聽業(yè)務(wù)監(jiān)聽和打印flink作業(yè)運行中flink數(shù)據(jù)流的輸出數(shù)據(jù)。
7、優(yōu)選地,本發(fā)明基于代理的flink數(shù)據(jù)流記錄方法中,創(chuàng)建maven工程,為創(chuàng)建的maven工程添加打包插件和依賴工具包,創(chuàng)建代理類,包括:在java環(huán)境中創(chuàng)建maven工程,在創(chuàng)建的maven工程的pom文件中添加打包插件和依賴工具包,在添加的打包插件中配置代理類的名稱,根據(jù)代理類的名稱創(chuàng)建代理類,該代理類在java虛擬機啟動時加載。
8、優(yōu)選地,本發(fā)明基于代理的flink數(shù)據(jù)流記錄方法中,在創(chuàng)建的代理類中定義premain靜態(tài)方法,根據(jù)依賴工具包在定義的premain靜態(tài)方法中編寫監(jiān)聽業(yè)務(wù),包括:
9、采用byte?buddy依賴工具包開啟對flink?connector連接器輸出端繼承的接口類的監(jiān)聽;
10、對監(jiān)聽的接口類下所有子類的writerecord方法進行攔截,在攔截回調(diào)方法中采用java反射方法捕獲當(dāng)前方法和調(diào)用類,并采用log4j依賴工具包打印捕獲方法的參數(shù)、調(diào)用時間和類名。
11、優(yōu)選地,本發(fā)明基于代理的flink數(shù)據(jù)流記錄方法中,編寫有監(jiān)聽業(yè)務(wù)的premain靜態(tài)方法在啟動flink作業(yè)提交時執(zhí)行。
12、優(yōu)選地,本發(fā)明基于代理的flink數(shù)據(jù)流記錄方法中,采用打包插件將maven工程打包成jar包,將jar包上傳至服務(wù)器,包括?:采用打包插件通過打包命令將maven工程打包成jar包,將jar包上傳至hadoop集群的lib目錄下。
13、優(yōu)選地,本發(fā)明基于代理的flink數(shù)據(jù)流記錄方法中,通過修改flink配置文件為java虛擬機配置啟動參數(shù),包括:定位flink配置文件,檢索flink配置文件中的啟動參數(shù),當(dāng)flink配置文件中存在啟動參數(shù),在啟動參數(shù)的參數(shù)值中添加jar包上傳路徑,在添加的jar包上傳路徑前設(shè)置javaagent前綴。
14、優(yōu)選地,本發(fā)明基于代理的flink數(shù)據(jù)流記錄方法中,通過修改flink配置文件為java虛擬機配置啟動參數(shù),包括:當(dāng)flink配置文件中不存在啟動參數(shù),創(chuàng)建啟動參數(shù),在創(chuàng)建的啟動參數(shù)的參數(shù)值中添加jar包上傳路徑,在添加的jar包上傳路徑前設(shè)置javaagent前綴。
15、優(yōu)選地,本發(fā)明基于代理的flink數(shù)據(jù)流記錄方法中,根據(jù)配置的啟動參數(shù)啟動flink作業(yè)提交,通過編寫的監(jiān)聽業(yè)務(wù)監(jiān)聽和打印flink作業(yè)運行中flink數(shù)據(jù)流的輸出數(shù)據(jù),包括?:
16、根據(jù)配置的啟動參數(shù)將flink作業(yè)提交至集群,集群分配資源加載flink作業(yè)相關(guān)聯(lián)的所有jar包;
17、當(dāng)將在flink作業(yè)運行中產(chǎn)生的數(shù)據(jù)經(jīng)過flink?connector連接器寫入目標(biāo)表中時,通過編寫的監(jiān)聽業(yè)務(wù)監(jiān)聽和打印flink作業(yè)運行中flink數(shù)據(jù)流的輸出數(shù)據(jù)。
18、優(yōu)選地,本發(fā)明基于代理的flink數(shù)據(jù)流記錄方法中,根據(jù)配置的啟動參數(shù)啟動flink作業(yè)提交,通過編寫的監(jiān)聽業(yè)務(wù)監(jiān)聽和打印flink作業(yè)運行中flink數(shù)據(jù)流的輸出數(shù)據(jù),還包括:在flink作業(yè)提交后,通過flink?web管理頁查看flink數(shù)據(jù)流記錄日志,所述flink數(shù)據(jù)流記錄日志包括監(jiān)聽業(yè)務(wù)打印的數(shù)據(jù)的詳情信息和時間信息。
19、根據(jù)本發(fā)明的第二方面,提供一種基于代理的flink數(shù)據(jù)流記錄系統(tǒng),該系統(tǒng)包括記錄服務(wù)端,所述記錄服務(wù)端用于:創(chuàng)建maven工程,為創(chuàng)建的maven工程添加打包插件和依賴工具包,創(chuàng)建代理類;在創(chuàng)建的代理類中定義premain靜態(tài)方法,根據(jù)依賴工具包在定義的premain靜態(tài)方法中編寫監(jiān)聽業(yè)務(wù);采用打包插件將maven工程打包成jar包,將jar包上傳至服務(wù)器,通過修改flink配置文件為java虛擬機配置啟動參數(shù);根據(jù)配置的啟動參數(shù)啟動flink作業(yè)提交,通過編寫的監(jiān)聽業(yè)務(wù)監(jiān)聽和打印flink作業(yè)運行中flink數(shù)據(jù)流的輸出數(shù)據(jù)。
20、根據(jù)本發(fā)明的第三方面,提供一種計算機設(shè)備,包括存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的計算機程序,所述處理器執(zhí)行所述程序時實現(xiàn)本發(fā)明第一方面所述的方法。
21、本發(fā)明基于代理的flink數(shù)據(jù)流記錄方法和系統(tǒng),具有以下有益技術(shù)效果:
22、1.突破flink監(jiān)控的指標(biāo)局限性,可自定義監(jiān)聽手段,捕獲每一條數(shù)據(jù),修改之后重新打包,替換原有路徑的jar包,在下一次提交flink任務(wù)即可生效,顯著提高及時性和靈活性;
23、2.在不改變flink源碼情況下,即可對通用的flink?connector進行監(jiān)聽,無需對flink進行二次開發(fā),獨立開發(fā)和打包,互不影響,易于維護。
1.一種基于代理的flink數(shù)據(jù)流記錄方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的基于代理的flink數(shù)據(jù)流記錄方法,其特征在于,創(chuàng)建maven工程,為創(chuàng)建的maven工程添加打包插件和依賴工具包,創(chuàng)建代理類,包括:在java環(huán)境中創(chuàng)建maven工程,在創(chuàng)建的maven工程的pom文件中添加打包插件和依賴工具包,在添加的打包插件中配置代理類的名稱,根據(jù)代理類的名稱創(chuàng)建代理類,所述代理類在java虛擬機啟動時加載。
3.根據(jù)權(quán)利要求1所述的基于代理的flink數(shù)據(jù)流記錄方法,其特征在于,在創(chuàng)建的代理類中定義premain靜態(tài)方法,根據(jù)依賴工具包在定義的premain靜態(tài)方法中編寫監(jiān)聽業(yè)務(wù),包括?:
4.根據(jù)權(quán)利要求1所述的基于代理的flink數(shù)據(jù)流記錄方法,其特征在于,編寫有監(jiān)聽業(yè)務(wù)的premain靜態(tài)方法在啟動flink作業(yè)提交時執(zhí)行。
5.根據(jù)權(quán)利要求1所述的基于代理的flink數(shù)據(jù)流記錄方法,其特征在于,采用打包插件將maven工程打包成jar包,將jar包上傳至服務(wù)器,包括:采用打包插件通過打包命令將maven工程打包成jar包,將jar包上傳至hadoop集群的lib目錄下。
6.根據(jù)權(quán)利要求1所述的基于代理的flink數(shù)據(jù)流記錄方法,其特征在于,通過修改flink配置文件為java虛擬機配置啟動參數(shù),包括:定位flink配置文件,檢索flink配置文件中的啟動參數(shù),當(dāng)flink配置文件中存在啟動參數(shù),在啟動參數(shù)的參數(shù)值中添加jar包上傳路徑,在添加的jar包上傳路徑前設(shè)置javaagent前綴。
7.根據(jù)權(quán)利要求6所述的基于代理的flink數(shù)據(jù)流記錄方法,其特征在于,通過修改flink配置文件為java虛擬機配置啟動參數(shù),包括:當(dāng)flink配置文件中不存在啟動參數(shù),創(chuàng)建啟動參數(shù),在創(chuàng)建的啟動參數(shù)的參數(shù)值中添加jar包上傳路徑,在添加的jar包上傳路徑前設(shè)置javaagent前綴。
8.根據(jù)權(quán)利要求1所述的基于代理的flink數(shù)據(jù)流記錄方法,其特征在于,根據(jù)配置的啟動參數(shù)啟動flink作業(yè)提交,通過編寫的監(jiān)聽業(yè)務(wù)監(jiān)聽和打印flink作業(yè)運行中flink數(shù)據(jù)流的輸出數(shù)據(jù),包括:
9.根據(jù)權(quán)利要求8所述的基于代理的flink數(shù)據(jù)流記錄方法,其特征在于,根據(jù)配置的啟動參數(shù)啟動flink作業(yè)提交,通過編寫的監(jiān)聽業(yè)務(wù)監(jiān)聽和打印flink作業(yè)運行中flink數(shù)據(jù)流的輸出數(shù)據(jù),還包括:在flink作業(yè)提交后,通過flink?web管理頁查看flink數(shù)據(jù)流記錄日志,所述flink數(shù)據(jù)流記錄日志包括監(jiān)聽業(yè)務(wù)打印的數(shù)據(jù)的詳情信息和時間信息。
10.一種基于代理的flink數(shù)據(jù)流記錄系統(tǒng),其特征在于,所述系統(tǒng)包括記錄服務(wù)端,所述記錄服務(wù)端用于:創(chuàng)建maven工程,為創(chuàng)建的maven工程添加打包插件和依賴工具包,創(chuàng)建代理類;在創(chuàng)建的代理類中定義premain靜態(tài)方法,根據(jù)依賴工具包在定義的premain靜態(tài)方法中編寫監(jiān)聽業(yè)務(wù);采用打包插件將maven工程打包成jar包,將jar包上傳至服務(wù)器,通過修改flink配置文件為java虛擬機配置啟動參數(shù);根據(jù)配置的啟動參數(shù)啟動flink作業(yè)提交,通過編寫的監(jiān)聽業(yè)務(wù)監(jiān)聽和打印flink作業(yè)運行中flink數(shù)據(jù)流的輸出數(shù)據(jù)。