本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,更具體地說,它涉及一種基于dolphinscheduler的實(shí)時(shí)數(shù)據(jù)集成方法。
背景技術(shù):
1、在實(shí)時(shí)數(shù)據(jù)集成、流式數(shù)據(jù)處理的領(lǐng)域內(nèi),apache?flink作為一個(gè)高性能、可擴(kuò)展的流處理框架,已經(jīng)被廣泛應(yīng)用于處理大規(guī)模數(shù)據(jù)流。flink?cdc(change?data?capture)作為flink的一個(gè)組件,可以實(shí)時(shí)同步并處理數(shù)據(jù)庫變更事件,使得數(shù)據(jù)變化可以即時(shí)反映到數(shù)據(jù)倉庫、指標(biāo)計(jì)算或其他系統(tǒng)中。然而,盡管flink?cdc在實(shí)時(shí)數(shù)據(jù)同步方面表現(xiàn)出色,其在用戶使用上需要專業(yè)的知識(shí)和技能,缺乏靈活性和易用性。apache?dolphinscheduler作為一個(gè)分布式工作流任務(wù)調(diào)度系統(tǒng),提供了豐富的調(diào)度策略,但其在實(shí)時(shí)任務(wù)方面支持程度有待提高,在用戶體驗(yàn)上、對于非技術(shù)用戶的兼容上還有待進(jìn)一步探索和優(yōu)化。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明要解決的技術(shù)問題是針對現(xiàn)有技術(shù)的不足,提供一種基于dolphinscheduler的實(shí)時(shí)數(shù)據(jù)集成方法,解決flink?cdc上手難度高和apachedolphinscheduler數(shù)據(jù)處理方式處理延遲高和實(shí)時(shí)性不足的技術(shù)問題。
2、本發(fā)明所述的一種基于dolphinscheduler的實(shí)時(shí)數(shù)據(jù)集成方法,該方法為,步驟一:新增實(shí)時(shí)集成任務(wù)界面,在所述實(shí)時(shí)集成任務(wù)界面中上設(shè)置頁面參數(shù),對所述頁面參數(shù)進(jìn)行校驗(yàn)同時(shí)創(chuàng)建實(shí)時(shí)數(shù)據(jù)集成任務(wù);
3、步驟二:啟動(dòng)所述實(shí)時(shí)數(shù)據(jù)集成任務(wù);
4、步驟三:若通過所述實(shí)時(shí)集成任務(wù)界面對實(shí)時(shí)數(shù)據(jù)集成任務(wù)進(jìn)行了停止操作,當(dāng)再次啟動(dòng)所述實(shí)時(shí)數(shù)據(jù)集成任務(wù)時(shí),將所述實(shí)時(shí)數(shù)據(jù)集成任務(wù)中的數(shù)據(jù)更新進(jìn)數(shù)據(jù)庫中。
5、作進(jìn)一步的改進(jìn),在步驟一中,所述頁面參數(shù)包括源數(shù)據(jù)表、目標(biāo)數(shù)據(jù)表、源數(shù)據(jù)表與目標(biāo)數(shù)據(jù)表的字段映射關(guān)系、yarn隊(duì)列、flink任務(wù)相關(guān)啟動(dòng)參數(shù)。
6、進(jìn)一步的,在步驟一中對所述頁面參數(shù)進(jìn)行校驗(yàn)的方法為,當(dāng)所述目標(biāo)數(shù)據(jù)表為hive型的數(shù)據(jù)表時(shí),則通過ranger?restful接口查詢用戶是否對所述目標(biāo)數(shù)據(jù)表的操作權(quán)限;
7、當(dāng)所述目標(biāo)數(shù)據(jù)表不存在時(shí),則根據(jù)所述源數(shù)據(jù)表與目標(biāo)數(shù)據(jù)表的字段映射關(guān)系自動(dòng)建立目標(biāo)數(shù)據(jù)表;
8、當(dāng)所述目標(biāo)數(shù)據(jù)表存在時(shí),則檢驗(yàn)所述源數(shù)據(jù)表與目標(biāo)數(shù)據(jù)表的字段映射關(guān)系是否符合目標(biāo)數(shù)據(jù)表的字段;
9、將所述頁面參數(shù)轉(zhuǎn)換成后端實(shí)體類存入相關(guān)數(shù)據(jù)庫表中。
10、更進(jìn)一步的,在所述步驟二中,啟動(dòng)所述實(shí)時(shí)數(shù)據(jù)集成任務(wù)的步驟為:
11、第一步:在所述實(shí)時(shí)集成任務(wù)界面上設(shè)置包括savepoint位點(diǎn)、檢測點(diǎn)間隔數(shù)、失敗重試次數(shù)和延遲執(zhí)行時(shí)間參數(shù)的執(zhí)行參數(shù);
12、第二步:將所述執(zhí)行參數(shù)封裝為任務(wù)啟動(dòng)command消息,將所述任務(wù)啟動(dòng)command消息通過netty通訊發(fā)送到dolphinscheduler?master組件;
13、所述dolphinscheduler?master組件中的taskexecutestartprocessor實(shí)時(shí)任務(wù)處理器根據(jù)任務(wù)啟動(dòng)command消息創(chuàng)建streamtaskexecuterunnable流式任務(wù)執(zhí)行可運(yùn)行器,所述streamtaskexecuterunnable流式任務(wù)執(zhí)行可運(yùn)行器在streamtaskexecutethreadpool流式任務(wù)執(zhí)行線程池中運(yùn)行;
14、將所述streamtaskexecuterunnable流式任務(wù)執(zhí)行可運(yùn)行器中的任務(wù)參數(shù)封裝成任務(wù)執(zhí)行command消息,將所述任務(wù)執(zhí)行command消息通過netty通訊發(fā)送到dolphinscheduler?worker組件中;
15、第三步:所述dolphinscheduler?worker組件的taskexecuteprocessor任務(wù)執(zhí)行處理器根據(jù)任務(wù)執(zhí)行command消息創(chuàng)建taskexecutethread任務(wù)執(zhí)行線程,所述taskexecutethread任務(wù)執(zhí)行線程在workerexecservice任務(wù)執(zhí)行線程池中運(yùn)行,所述taskexecutethread任務(wù)執(zhí)行線程中設(shè)置有實(shí)時(shí)數(shù)據(jù)集成任務(wù)的執(zhí)行路徑和日志的存放路徑,根據(jù)所述實(shí)時(shí)數(shù)據(jù)集成任務(wù)的任務(wù)類型調(diào)用執(zhí)行路徑和日志的存放路徑構(gòu)建啟動(dòng)命令,執(zhí)行所述啟動(dòng)命令,所述實(shí)時(shí)數(shù)據(jù)集成任務(wù)在yarn中執(zhí)行;
16、第四步:獲取所述實(shí)時(shí)數(shù)據(jù)集成任務(wù)的任務(wù)狀態(tài)和任務(wù)日志,所述dolphinscheduler?worker組件通過解析任務(wù)日志來獲取每個(gè)實(shí)時(shí)任務(wù)的jobmanager地址,并將所述jobmanager地址填充并生成響應(yīng),將所述響應(yīng)發(fā)送到dolphinschedulermaster組件中并存入數(shù)據(jù)庫中。
17、更進(jìn)一步的,在所述第三步中,
18、當(dāng)所述啟動(dòng)命令的啟動(dòng)模式為初次啟動(dòng)時(shí),則選擇run-application?yarn-application命令;
19、當(dāng)所述第一步中設(shè)置有savepoint位點(diǎn)時(shí),則選擇run-applicationfromsavepoint命令。
20、更進(jìn)一步的,當(dāng)選擇所述run-application?fromsavepoint命令后,根據(jù)預(yù)先上傳的jar包,將所述dolphinscheduler?master組件和dolphinscheduler?worker組件中的任務(wù)執(zhí)行上下文的參數(shù)按照jar包定義的參數(shù)轉(zhuǎn)換成json格式的字符串,再將所述字符串拼接到啟動(dòng)命令的后面更新啟動(dòng)命令。
21、更進(jìn)一步的,所述jar包基于flinkcdc開發(fā),所述jar包通過接收預(yù)定義參數(shù)創(chuàng)建源數(shù)據(jù)表和目標(biāo)數(shù)據(jù)表的flinkcdc連接器來執(zhí)行數(shù)據(jù)同步。
22、更進(jìn)一步的,所述預(yù)定義參數(shù)包括源數(shù)據(jù)表連接方式、目標(biāo)數(shù)據(jù)表連接方式、源數(shù)據(jù)表與目標(biāo)數(shù)據(jù)表的字段映射關(guān)系、flink任務(wù)相關(guān)啟動(dòng)參數(shù)。
23、更進(jìn)一步的,在所述步驟三中,對所述實(shí)時(shí)數(shù)據(jù)集成任務(wù)進(jìn)行停止后,再次啟動(dòng)所述實(shí)時(shí)數(shù)據(jù)集成任務(wù)時(shí),所述數(shù)據(jù)庫對jobmanager地址進(jìn)行更新。
24、有益效果
25、本發(fā)明的優(yōu)點(diǎn)在于:
26、1.本發(fā)明通過在實(shí)時(shí)數(shù)據(jù)集成任務(wù)進(jìn)行停止后,再次啟動(dòng)所述實(shí)時(shí)數(shù)據(jù)集成任務(wù)時(shí),數(shù)據(jù)庫對jobmanager地址進(jìn)行更新,實(shí)現(xiàn)將數(shù)據(jù)變化即時(shí)更新到數(shù)據(jù)庫,減少數(shù)據(jù)延遲,提高數(shù)據(jù)處理的效率。
27、2.本發(fā)明通過新增實(shí)時(shí)集成任務(wù)界面來創(chuàng)建和操作實(shí)時(shí)數(shù)據(jù)集成任務(wù),簡化了用戶操作,提升了用戶體驗(yàn),提高了非技術(shù)用戶的操作友好性,降低了用戶上手難度。
28、3.本發(fā)明通過結(jié)合dolphinscheduler和flinkcdc技術(shù),預(yù)先開發(fā)好的jar包中包含flink任務(wù)相關(guān)啟動(dòng)參數(shù),運(yùn)用dolphinscheduler?master組件和dolphinschedulerworker組件對實(shí)時(shí)數(shù)據(jù)集成任務(wù)進(jìn)行調(diào)度,解決了dolphinscheduler在實(shí)時(shí)任務(wù)提交后對于監(jiān)控、狀態(tài)追蹤以及日志查看方面的不足之處,加強(qiáng)了在實(shí)時(shí)任務(wù)處理方面的可視化監(jiān)控和管理能力。