本發(fā)明屬于信息,具體涉及到大數(shù)據(jù)處理和實(shí)時(shí)流處理技術(shù),以及在煤礦區(qū)域車輛監(jiān)控和管理方面的應(yīng)用。
背景技術(shù):
1、隨著分布式計(jì)算和數(shù)據(jù)庫技術(shù)的不斷發(fā)展,物聯(lián)網(wǎng)、傳感器等技術(shù)與設(shè)備的不斷增多,各個(gè)領(lǐng)域的數(shù)據(jù)量也在不斷增大,數(shù)據(jù)毫無疑問是當(dāng)代社會(huì)的“石油”。如今的很多數(shù)據(jù)具有規(guī)模性和實(shí)時(shí)性,過一段時(shí)間數(shù)據(jù)就可能失效,沒有太大的利用價(jià)值。大數(shù)據(jù)作為一種低密度價(jià)值的數(shù)據(jù),挖掘其背后隱藏的信息十分關(guān)鍵,能夠更好的幫助我們理解數(shù)據(jù)所蘊(yùn)含的價(jià)值。大數(shù)據(jù)時(shí)代發(fā)展至今,數(shù)據(jù)量呈指數(shù)級(jí)增長,對(duì)于礦山數(shù)據(jù)的利用也逐漸得到了重視。
2、礦山中的數(shù)據(jù)具有以下特點(diǎn):機(jī)器產(chǎn)生的數(shù)據(jù)頻率高,傳感器數(shù)據(jù)量大,數(shù)據(jù)收集速度極快。目前對(duì)礦山數(shù)據(jù)的注意力更多的傾向于小數(shù)據(jù)集和批量處理,即把過去一段時(shí)間的數(shù)據(jù)進(jìn)行批量分析統(tǒng)計(jì),不能達(dá)到實(shí)時(shí)處理的效果,對(duì)源源不斷的實(shí)時(shí)數(shù)據(jù)流和實(shí)時(shí)的流處理關(guān)注較少,在流處理逐漸發(fā)展的當(dāng)下,離線數(shù)據(jù)的分析已經(jīng)逐漸不能滿足實(shí)際需求,數(shù)據(jù)分析的實(shí)時(shí)性要求越來越高,如何快速實(shí)時(shí)的處理車輛終端數(shù)據(jù)并提取有用的信息成為了迫切的需要。
3、礦山車輛終端數(shù)據(jù)作為整個(gè)礦山安全的重要組成部分,監(jiān)管著所有車輛的一舉一動(dòng),深入挖掘傳感器背后的數(shù)據(jù)規(guī)律,對(duì)車輛的實(shí)時(shí)狀況進(jìn)行異常檢測(cè)與統(tǒng)計(jì)分析,有助于管理層更加準(zhǔn)確,實(shí)時(shí)的管控車輛,制定更為合理的決策,減少安全事件的發(fā)生,是確保安全的重要途徑。
4、綜上所述,使用實(shí)時(shí)大數(shù)據(jù)流處理可以有效監(jiān)管礦區(qū)車輛的運(yùn)行情況,減少煤礦企業(yè)運(yùn)營成本等優(yōu)勢(shì),因此,需要提出新的技術(shù)方案實(shí)現(xiàn)露天煤礦車輛數(shù)據(jù)實(shí)時(shí)流處理。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的在于克服現(xiàn)有技術(shù)中的實(shí)時(shí)性低、計(jì)算復(fù)雜度高的問題,提出一種基于flink的露天煤礦車輛數(shù)據(jù)實(shí)時(shí)流處理方法及系統(tǒng),側(cè)重于對(duì)海量性、實(shí)時(shí)性的煤礦區(qū)域內(nèi)車輛數(shù)據(jù)進(jìn)行分析處理,解決上述問題。
2、本發(fā)明包括如下步驟:
3、步驟一、在分布式環(huán)境中,部署和配置apache?kafka集群,進(jìn)行數(shù)據(jù)源的接收;
4、步驟二、在分布式環(huán)境中,部署和配置apache?flink流處理平臺(tái),消費(fèi)kafka集群數(shù)據(jù),對(duì)數(shù)據(jù)流進(jìn)行清洗、聚合、過濾和處理;
5、步驟三、部署hbase數(shù)據(jù)庫,對(duì)流處理后的數(shù)據(jù)進(jìn)行列式存儲(chǔ);
6、步驟四、前端展示處理過后的統(tǒng)計(jì)數(shù)據(jù),對(duì)整個(gè)露天煤礦的車輛狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)測(cè)。
7、本發(fā)明步驟一中apache?kafka具體配置信息,包括:
8、1)在分布式環(huán)境中部署和配置用于消息傳遞的apache?kafka集群;
9、2)在所述apache?kafka集群中,定義和創(chuàng)建用于數(shù)據(jù)交換的消息主題;
10、3)配置消息生產(chǎn)者以將數(shù)據(jù)源發(fā)送到相應(yīng)的消息主題;
11、4)配置消息消費(fèi)者以從相應(yīng)的消息主題接收和處理數(shù)據(jù)。
12、本發(fā)明步驟一中,數(shù)據(jù)輸入端是kafka;kafka集群用于接收和傳輸來自露天煤礦車輛的實(shí)時(shí)數(shù)據(jù);kafka集群包括多個(gè)分布式節(jié)點(diǎn),用于提高數(shù)據(jù)傳輸?shù)目煽啃院蛿U(kuò)展性,系統(tǒng)能夠通過kafka對(duì)車輛數(shù)據(jù)流進(jìn)行接收與消費(fèi);車輛數(shù)據(jù)主要包含車輛的終端號(hào)、經(jīng)緯度坐標(biāo)、車輛種類、車輛狀態(tài)、車輛駕駛?cè)?、所屬公司、?dāng)前速度、當(dāng)前時(shí)間。
13、本發(fā)明步驟二中,apache?flink流處理平臺(tái)對(duì)apache?kafka集群中接收到的車輛數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗、過濾、聚合和復(fù)雜事件處理;其中,
14、所述數(shù)據(jù)清洗過濾方式包括過濾車輛狀態(tài)為停用或損壞、產(chǎn)生時(shí)間距當(dāng)前系統(tǒng)時(shí)間超過30秒的數(shù)據(jù)。
15、本發(fā)明步驟二中apache?flink處理不同統(tǒng)計(jì)數(shù)據(jù)事件計(jì)算邏輯如下:
16、1)礦區(qū)內(nèi)車輛種類數(shù)量事件:根據(jù)接收到的礦區(qū)車輛數(shù)據(jù),更新車輛總數(shù)和類型計(jì)數(shù)器;
17、2)行走距離更新事件:獲取每輛車在相鄰兩個(gè)時(shí)間段的位置信息,根據(jù)位置坐標(biāo)計(jì)算行駛距離,使用haversine公式計(jì)算兩個(gè)地理坐標(biāo)之間的距離,并累加所有時(shí)間段內(nèi)的距離。當(dāng)觸發(fā)此事件時(shí),將此條記錄保存到hbase數(shù)據(jù)庫中;
18、3)數(shù)據(jù)頻率更新事件:統(tǒng)計(jì)每輛車在給定時(shí)間段內(nèi)發(fā)送的數(shù)據(jù)條數(shù),并計(jì)算數(shù)據(jù)采集頻率(數(shù)據(jù)條數(shù)/時(shí)間),當(dāng)觸發(fā)此事件時(shí),將此條記錄保存到hbase數(shù)據(jù)庫中;
19、4)時(shí)間間隔更新事件:計(jì)算每個(gè)車輛相鄰兩條數(shù)據(jù)的時(shí)間間隔,找出最大和最小時(shí)間間隔。通過遍歷數(shù)據(jù)流中的時(shí)間戳來計(jì)算相鄰時(shí)間戳之間的差值,當(dāng)此事件數(shù)據(jù)更新時(shí),將此條記錄保存到hbase數(shù)據(jù)庫中;
20、5)連續(xù)超速記錄事件:監(jiān)控車輛速度數(shù)據(jù),檢測(cè)連續(xù)超速的事件。設(shè)定超速閾值45km/h,連續(xù)超速30秒的數(shù)據(jù)記錄作為一個(gè)事件,當(dāng)觸發(fā)此事件時(shí),將此條記錄保存到hbase數(shù)據(jù)庫中;
21、6)方向角度變化異常事件:監(jiān)控車輛方向角度數(shù)據(jù),檢測(cè)方向角度變化是否超過設(shè)定的閾值,可以計(jì)算相鄰兩條數(shù)據(jù)的方向角度差值,并判斷是否超出閾值90°,當(dāng)觸發(fā)此事件時(shí),將此條記錄保存到hbase數(shù)據(jù)庫中;
22、7)不同礦區(qū)車輛計(jì)數(shù)事件:實(shí)時(shí)計(jì)算每個(gè)礦區(qū)內(nèi)的車輛總數(shù),若車輛總數(shù)超過當(dāng)前礦區(qū)配置報(bào)警閾值數(shù)量,則觸發(fā)事件,當(dāng)觸發(fā)此事件時(shí),將此條記錄保存到hbase數(shù)據(jù)庫中;
23、8)車輛運(yùn)輸次數(shù)統(tǒng)計(jì)事件:讀取車輛上一次所在的區(qū)域同時(shí)計(jì)算本地?cái)?shù)據(jù)所在的區(qū)域,計(jì)算得到車輛運(yùn)輸?shù)目偞螖?shù)。
24、本發(fā)明步驟三中,hbase數(shù)據(jù)庫用于高效存儲(chǔ)和快速查詢處理后的車輛數(shù)據(jù),hbase數(shù)據(jù)庫配置為支持大規(guī)模數(shù)據(jù)的列式存儲(chǔ)和快速讀寫操作。
25、本發(fā)明步驟三中hbase的具體配置信息,包括:
26、由于數(shù)據(jù)源源不斷到來,且后續(xù)需要對(duì)車輛軌跡進(jìn)行查詢,為避免某個(gè)region服務(wù)器熱點(diǎn)訪問,在高位字段設(shè)置標(biāo)簽,低位字段設(shè)置數(shù)據(jù)時(shí)間。且為了方便最近到來的數(shù)據(jù)排在前面,將時(shí)間戳進(jìn)行反轉(zhuǎn),使用10000000000000l-timestamp,所以此表行鍵設(shè)計(jì)滿足“車輛終端號(hào)_時(shí)間戳反轉(zhuǎn)”的形式。
27、在hbase表的結(jié)構(gòu)中,每個(gè)表有一個(gè)或多個(gè)列簇,列簇的設(shè)計(jì)也能夠?qū)?shù)據(jù)庫產(chǎn)生較大的影響,需要根據(jù)實(shí)際需要設(shè)計(jì)列簇的個(gè)數(shù),考慮到此表寫入的需求大于讀取查詢的需求,因此只設(shè)計(jì)一個(gè)列簇。
28、原始采集數(shù)據(jù)經(jīng)過flink分析處理之后需要保存到統(tǒng)計(jì)分析表中,此表需要存儲(chǔ)flink分析得到的車輛行駛距離,車輛超速情況,車輛數(shù)據(jù)頻率,車輛實(shí)時(shí)位置,有多個(gè)事件,所以為了減少表的數(shù)量需要將事件組合到rowkey之中,將相同事件的數(shù)據(jù)散列到不同服務(wù)器中,事件名稱放在最高位,不同事件區(qū)域內(nèi)的數(shù)據(jù)按時(shí)間最近排序。所以rowkey的設(shè)計(jì)為“事件名稱_反轉(zhuǎn)時(shí)間戳_終端號(hào)”,c為count事件代表運(yùn)輸次數(shù);從采場(chǎng)運(yùn)輸?shù)皆鼒?chǎng)算一次。dir為direction事件表明車輛轉(zhuǎn)向角度過大事件,dis為distance事件表明當(dāng)前終端號(hào)車輛一共走了多少距離;f為frequency事件代表數(shù)據(jù)的發(fā)送頻率;l為location事件代表當(dāng)前終端號(hào)所在的位置數(shù)據(jù),s為speed事件代表超速的發(fā)生。
29、本發(fā)明步驟四中,前端通過后端暴露的restful?api接口請(qǐng)求hbase數(shù)據(jù)庫中的處理數(shù)據(jù),并以圖表或儀表盤的形式展示車輛的實(shí)時(shí)狀態(tài)和歷史狀態(tài),用于實(shí)時(shí)展示露天煤礦車輛的運(yùn)行狀態(tài)和歷史數(shù)據(jù)分析。
30、本發(fā)明步驟四中前端展示車輛數(shù)據(jù)的統(tǒng)計(jì)信息,包括:
31、1)車輛總數(shù)和種類部分:現(xiàn)實(shí)當(dāng)前每個(gè)礦區(qū)內(nèi)的車輛總數(shù)和種類。
32、2)車輛運(yùn)輸次數(shù)部分:顯示所有車輛當(dāng)日運(yùn)輸總次數(shù)。
33、3)車輛行走距離部分:顯示目前的時(shí)間、終端號(hào)、當(dāng)日車輛已經(jīng)行走的里程數(shù)。
34、4)車輛數(shù)據(jù)頻率部分:顯示每輛車發(fā)送數(shù)據(jù)的頻率、最大最小時(shí)間間隔。
35、5)車輛超速信息部分:顯示車輛在什么時(shí)間點(diǎn)連續(xù)超速一定時(shí)間的數(shù)據(jù)。
36、6)車輛角度超限部分:顯示車輛在什么時(shí)間點(diǎn)角度轉(zhuǎn)向超過一定限度,并記錄兩次轉(zhuǎn)角的大小。
37、基于以上方法,本發(fā)明還提出了一種基于flink的露天煤礦車輛數(shù)據(jù)實(shí)時(shí)流處理系統(tǒng),所述系統(tǒng)包括:
38、車輛終端,用于記錄和上傳車輛相關(guān)數(shù)據(jù),數(shù)據(jù)內(nèi)容包括:車輛的終端號(hào)、經(jīng)緯度坐標(biāo)、車輛種類、車輛狀態(tài)、車輛駕駛?cè)?、所屬公司、?dāng)前速度、當(dāng)前時(shí)間;
39、分布式消息傳輸模塊,該模塊用于在分布式環(huán)境中部署和配置apache?kafka集群,進(jìn)行數(shù)據(jù)源的數(shù)據(jù)傳輸,形成數(shù)據(jù)流,且集群方便擴(kuò)容;
40、實(shí)時(shí)數(shù)據(jù)處理和集成模塊,該模塊用于在分布式環(huán)境中部署和配置apache?flink流處理平臺(tái),對(duì)所述數(shù)據(jù)流進(jìn)行流式處理,用于監(jiān)測(cè)露天礦區(qū)內(nèi)車輛狀態(tài)、及時(shí)上報(bào)異常事件,包括超速、超轉(zhuǎn)角;
41、分布式數(shù)據(jù)庫模塊,該模塊用于在分布式環(huán)境中部署和配置hbase數(shù)據(jù)庫系統(tǒng),用于對(duì)流式處理后的數(shù)據(jù)進(jìn)行列式存儲(chǔ),用于高效存儲(chǔ)和快速查詢處理后的車輛數(shù)據(jù);
42、前端展示模塊,該模塊用于展示整個(gè)礦區(qū)內(nèi)車輛統(tǒng)計(jì)信息,包括:基于vue和echarts創(chuàng)建可視化大屏,展示當(dāng)前礦區(qū)內(nèi)所有車輛位置、車輛種類和數(shù)量分布以及統(tǒng)計(jì)信息;實(shí)時(shí)獲取礦區(qū)內(nèi)車輛產(chǎn)生的異常事件并產(chǎn)生報(bào)警信息,包括超速、超轉(zhuǎn)角、宕機(jī)。
43、本發(fā)明的有益效果包括:識(shí)別準(zhǔn)確度高、響應(yīng)速度快和全面可視化。
44、為了提高系統(tǒng)的處理效率,增加消息中間件kafka集群,通過消息隊(duì)列緩沖數(shù)據(jù),保證系統(tǒng)的可用性以及可重放功能。同時(shí),為了加快數(shù)據(jù)流的消費(fèi),使用flink對(duì)kafkatopic進(jìn)行消費(fèi),加快了數(shù)據(jù)的響應(yīng)速度。與此同時(shí),為了適應(yīng)不斷增長的數(shù)據(jù)負(fù)載需求,使用hbase分布式列數(shù)據(jù)庫對(duì)處理過的數(shù)據(jù)進(jìn)行存儲(chǔ),同時(shí)巧妙的設(shè)計(jì)表的key,便于數(shù)據(jù)均勻的散列到不同的庫表中。此外,本發(fā)明使用web技術(shù)開發(fā)了一種可視化的監(jiān)控界面,將統(tǒng)計(jì)的事件結(jié)果通過圖表、曲線等方式實(shí)時(shí)展示,方便用戶直觀觀察,從而解決了無法全面可視化的問題。