一種無線電監測數據回放方法
【專利摘要】本發明公開了一種無線電監測數據回放方法,包括通用接口模塊、數據傳輸模塊、HBase數據庫、HDFS數據庫和歷史數據編排模塊和緩沖模塊;通用接口模塊、數據傳輸模塊、HBase數據庫和HDFS數據庫依次連接,HBase數據庫、緩沖模塊、數據傳輸模塊均與歷史數據編排模塊連接,本發明具有查詢速度快、查詢精度高,可對海量半結構化或者非結構化數據進行快速實時回放的特點。
【專利說明】
一種無線電監測數據回放方法
技術領域
[0001] 本發明涉及無線電歷史監測數據回放技術領域,尤其是涉及一種可對海量半結構 化或者非結構化數據進行快速實時回放的無線電監測數據回放方法。
【背景技術】
[0002] 無線電監測是大型運動會、國際會議等活動的安全保障和實時監督檢查的重要手 段,無線電監測工作用于掌握頻率情況、保障無線電頻率,迅速查處有害干擾。
[0003] 隨著監測設備的發展和監測需求的細化,無線電監測數據的數量呈爆炸式增長, 通常一臺設備在幾個月內的監測數據可達到TB數據級,并且為非結構化或者半結構化監控 記錄,運用傳統的存儲和處理方法已經無法滿足數據查詢的需要;其次,為了節省存儲空 間,無線電監控數據通常采用字節流的形式進行存儲,而觀測人員需要在第一時間定位并 顯示監測數據。
[0004] 目前,無線電監測數據的歷史實時回放,通常有以下兩種方案:
[0005] 采用分布式的Sqlite數據庫的形式對監測數據進行逐條存儲,每個分布式的 Sqlite大小為2G。該方法適用于低頻采樣的數據設備,且存儲監測數據的歷史跨度很小,往 往只有幾臺設備幾天的數據量。
[0006] 采用文件系統映射的方法,歷史監測數據以文件的形式保存,文件的路徑保存于 關系型數據庫并顯示給用戶,用戶通過文件逐條查詢記錄。觀測人員在查找數據時,需要逐 條觀測數據,從而定位到需要的觀測點,需耗費大量的人力精力,觀測人員事先無法概覽整 個觀測數據。
[0007]可見,目前無線電監測方法不能有效的對海量的半結構化或者非結構化的數據進 行快速實時回放。
【發明內容】
[0008] 本發明的發明目的是為了克服現有技術中的無線電監測方法對海量半結構化或 者非結構化數據進行快速實時回放的不足,提供了一種可對海量半結構化或者非結構化數 據進行快速實時回放的無線電監測數據回放方法。
[0009] 為了實現上述目的,本發明采用以下技術方案:
[0010] 一種無線電監測數據回放方法,包括通用接口模塊、數據傳輸模塊、HBase數據庫、 HDFS數據庫和歷史數據編排模塊和緩沖模塊;通用接口模塊、數據傳輸模塊、HBase數據庫 和HDFS數據庫依次連接,HBase數據庫、緩沖模塊、數據傳輸模塊均與歷史數據編排模塊連 接,
[0011] 所述回放方法包括數據編排過程、數據回放過程和回放停止過程;
[0012] 數據編排過程包括如下步驟:歷史數據編排模塊將原始監測數據的每一條記錄解 封后,讀取記錄的每個數據幀,根據每個數據幀的幀內信息生成rowkey索引,歷史數據編排 模塊將每個數據幀、與每個數據幀關聯的rowkey索引批量導入HBase數據庫及HDFS數據庫 中;HBase數據庫中設有若干個設備表。
[0013]本發明通過獨特設計的rowkey索引,將無線電監測數據逐條載入HBase數據庫中, 并有效防止監測設備過快時在時間重復時記錄的重復,支持用戶逐記錄快速查詢;通過數 據傳輸模塊的查詢條件與rowkey的對應,實現了用戶的任意、快速實時的定位并回放數據。
[0014] 作為優選,所述數據回放過程包括如下步驟:
[0015] (2-1)歷史數據編排模塊將原始監測數據的每條記錄解封后,讀取與每條記錄對 應的數據幀的幀頭,根據幀頭信息生成rowkey索引,歷史數據編排模塊通過API接口將每個 數據幀、與每個數據幀關聯的rowkey索引批量導入HBase數據庫;HBase數據庫中設有若干 個設備表;
[0016] (2-2)通用接口模塊接收用戶的查詢請求,并將查詢請求發送給數據傳輸模塊;
[0017] (2-3)數據傳輸模塊收到查詢請求后,以queryid+" query"字段查詢數據傳輸模塊 的消息表,如果查到消息表,則轉入步驟(2-4);
[0018]如果消息表不存在,數據傳輸模塊生成消息表,消息表包括傳輸集群kafka的生產 者pl、消費者cl、訂閱消息queryid+" query"、生產者p2、消費者c2和訂閱消息queryid+ U , ?? request ;
[0019] (2-4)數據傳輸模塊的kafka集群將查詢內容通過pl發送到cl,cl接收到查詢內容 后,查詢HBase的各個設備表中與查詢內容的查詢設備ID相對應的設備表,如果沒找到設備 表,則返回一個查詢失敗的消息格式;
[0020] 歷史數據編排模塊利用公式計算數據幀的延遲時間m;其中,n為查詢內 容中的用戶查詢參數;
[0021] (2-4-1)如果找到設備表,以查詢內容的記錄開始時間T1、記錄結束時間T2、服務 ID和查詢頻率查詢rowkey索引;如果找不到與服務ID或者查詢頻率匹配的rowkey索引,則 返回查詢失敗的消息;
[0022] (2-4-2)如果找到與服務ID和查詢頻率匹配并且T1 <記錄時間< T2的p個rowkey 索引構成的rowkey索引組;
[0023] (2-4-3)選擇p個rowkey索引中的記錄時間最接近T1的rowkey索引A,提取HBase數 據庫的與rowkey索引A對應的數據幀,數據編排模塊收到數據幀后,將數據幀存入緩沖模塊 中;
[0024] (2-5)查詢消息表,通過cl查詢與其對應的p2,p2接收歷史記錄后,數據幀存入緩 沖模塊的時間達到延遲時間m后,將所述數據幀發給c2,c2將數據幀發送給查詢用戶;
[0025] (2-5-1)當p>0,使p值減少1,將rowkey索弓|A從rowkey索引組中去除,轉入步驟 (1-4-3)〇
[0026]作為優選,所述回放停止過程包括如下步驟:
[0027]通用接口模塊接收用戶的查詢請求,通用接口模塊將查詢請求以XML的形式發送 給數據傳輸模塊,其中用戶查詢參數為〇;
[0028]數據傳輸模塊收到請求后,以query id+" query"字段查詢數據傳輸模塊的消息表;
[0029]數據編排模塊通過pl,cl,得到用戶的請求,得知查詢參數為0,停止給用戶發送消 息;
[0030]數據編排模塊將pi,cl退出對queryid+" query"消息的訂閱,將p2,c2退出對 queryid_" request" 消息的訂閱;同時,刪除cl,pl,c2,p2,消息queryid+" query" 和 query i d_" reque s t",并且刪除消息表。
[0031]作為優選,
[0032]所述rowkey索引包括1個字節的散列字段、4個字節的時間戳字段、1個字節的監測 服務編碼字段、4個字節的監測頻率字段和4個字節的負載字段。
[0033]本發明通過rowkey索引生成算法控制rowkey索引的長度和內容,在滿足區分各條 記錄的同時,又通過縮短rowkey索引的各個字段,有效降低了存儲空間,使歷史數據的查詢 效率有效提升。
[0034]作為優選,
[0035] 所述rowkey索引的生成過程包括時間戳字段生成步驟,散列字段生成步驟、監測 服務編碼字段生成步驟和負載編碼字段生成步驟;
[0036] 時間戳字段生成步驟如下:歷史數據編排模塊讀取每幀數據的幀頭,獲取每幀數 據的記錄時間,并將記錄時間轉化為毫秒數,將毫秒數存入時間戳字段。
[0037] 將記錄時間的毫秒數保存于rowkey的時間戳字段4個字節中,使精確到毫秒的時 間戳保存從17字節下降到4個字節,有效節約了rowkey的字節空間,提高了查詢效率。
[0038]作為優選,
[0039]所述散列字段生成步驟如下:
[0040]歷史數據編排模塊將毫秒數以256取余,其結果保存于散列字段中。
[0041 ]作為優選,
[0042] 所述監測服務編碼字段生成步驟如下:
[0043] 歷史數據編排模塊獲取每幀數據的監測服務編碼,將監測服務編碼保存在監測服 務編碼字段中。
[0044]根據國家標準規定,無線電監測需要滿足26種監測服務,分別從1到26開始編碼, 存入監測服務編碼字段中;27至265可用于后續擴展。
[0045] 作為優選,所述負載編碼字段利用如下步驟生成:
[0046] 歷史數據編排模塊獲取每幀數據的幀負載,讀取幀負載每個字段的值L;利用公式 S = 21+1計算每個字段值的變換值S,將各個字段的S相加得到S',將S'寫入rowkey索引的負 載編碼字段中。
[0047] 根據國家標準規定,無線電監測幀負載中需要實現18個選項。因此只需要占用18 位,空余的14位后續擴展用。
[0048] 因此,本發明具有如下有益效果:查詢速度快、查詢精度高,可對海量半結構化或 者非結構化數據進行快速實時回放。
【附圖說明】
[0049] 圖1是本發明的一種原理不意圖;
[0050] 圖2是本發明的數據回放過程的一種流程圖;
[0051] 圖3是本發明的回放停止過程的一種流程圖。
[0052]圖中:通用接口模塊1、數據傳輸模塊2、HBase數據庫3、歷史數據編排模塊4、消息 表5、kafka集群6、緩沖模塊7、HDFS數據庫8。
【具體實施方式】
[0053]下面結合附圖和【具體實施方式】對本發明做進一步的描述。
[0054]如圖1所示的實施例是一種無線電監測數據回放方法,包括通用接口模塊1、數據 傳輸模塊2、HBase數據庫3、HDFS數據庫8和歷史數據編排模塊4和緩沖模塊7 ;通用接口模 塊、數據傳輸模塊、ffflase數據庫和HDFS數據庫依次連接,HBase數據庫、緩沖模塊、數據傳輸 模塊均與歷史數據編排模塊連接,
[0055]數據編排過程包括如下步驟:
[0056] 歷史數據編排模塊將原始監測數據的每條記錄解封后,讀取與每條記錄對應的數 據幀的幀頭,根據幀頭信息生成rowkey索引,歷史數據編排模塊通過API接口將每個數據 幀、與每個數據幀關聯的rowkey索引批量導入HBase數據庫及HDFS數據庫中;HBase數據庫 中設有若干個設備表;HDFS數據庫用于存儲深層數據,HBase數據庫用于存儲深層數據的索 引;
[0057] 如圖2所示,數據回放過程包括如下步驟:
[0058] 步驟100,接收查詢請求
[0059] 通用接口模塊接收用戶的查詢請求,通用接口模塊將查詢請求以XML的形式發送 給數據傳輸模塊;
[0060] 步驟200,查詢消息表
[0061 ]數據傳輸模塊收到請求后,以queryid+"query"字段查詢數據傳輸模塊的消息表, 如果查到消息表,則轉入步驟400;
[0062]查到消息表,說明接收到的是再次查詢請求,數據傳輸模塊中已經有消息表,
[0063]如果消息表不存在,說明是第一次收到查詢請求,數據傳輸模塊中還沒有建立消 息表,如圖1所示的數據傳輸模塊生成消息表5,消息表包括傳輸集群kafka的生產者pi、消 費者c 1、訂閱消息query i d+" query"、生產者p 2、消費者c 2和訂閱消息query i d+ "reque s t" ; [0064] 步驟300,查詢歷史記錄
[0065]數據傳輸模塊的如圖1所示的kafka集群6將查詢內容通過pi發送到cl,cl接收到 查詢內容后,查詢HBase的各個設備表中與查詢內容的查詢設備ID相對應的設備表,如果沒 找到設備表,則返回一個查詢失敗的消息格式;
[0066]歷史數據編排模塊利用公式
?計算數據幀的延遲時間m;其中,n為查詢內 容中的用戶查詢參數,n = 2;
[0067] 步驟310,如果找到設備表,以查詢內容的記錄開始時間T1、記錄結束時間T2、服務 ID和查詢頻率查詢rowkey索引;如果找不到與服務ID或者查詢頻率匹配的rowkey索引,則 返回查詢失敗的消息;
[0068] 步驟320,如果找到與服務ID和查詢頻率匹配并且T1 <記錄時間< T2的p個rowkey 索引構成的rowkey索引組;
[0069] 步驟330,選擇p個rowkey索引中的記錄時間最接近T1的rowkey索引A,提取HBase 數據庫的與rowkey索引A對應的數據幀,數據編排模塊收到數據幀后,將數據幀存入緩沖模 塊中;
[0070] 步驟400,給查詢用戶返回歷史記錄
[0071] 查詢消息表,通過cl查詢與其對應的p2,p2接收歷史記錄后,達到延遲時間m后,將 所述數據幀發給c2,c2將數據幀發送給查詢用戶;
[0072] 步驟410,當p>0,使p值減少1,將rowkey索弓|A從rowkey索引組中去除,轉入步驟 330〇
[0073] rowkey索引包括1個字節的散列字段、4個字節的時間戳字段、1個字節的監測服務 編碼字段、4個字節的監測頻率字段和4個字節的負載字段。
[0074] 其中,rowkey索引的生成過程包括時間戳字段生成步驟,散列字段生成步驟、監測 服務編碼字段生成步驟和負載編碼字段生成步驟;
[0075] 時間戳字段生成步驟:歷史數據編排模塊讀取每幀數據的幀頭,獲取每幀數據的 記錄時間,并將記錄時間轉化為毫秒數,將毫秒數存入時間戳字段。
[0076]散列字段生成步驟:
[0077]歷史數據編排模塊將毫秒數以256取余,其結果保存于散列字段中。
[0078]監測服務編碼字段生成步驟:
[0079] 歷史數據編排模塊獲取每幀數據的監測服務編碼,將監測服務編碼保存在監測服 務編碼字段中。
[0080] 負載編碼字段利用如下步驟生成:
[0081] 歷史數據編排模塊獲取每幀數據的幀負載,讀取幀負載每個字段的值L;利用公式 S = 21+1計算每個字段值的變換值S,將各個字段的S相加得到S',將S'寫入rowkey索引的負 載編碼字段中。
[0082] 歷史數據編排模塊讀取每幀數據的幀頭,獲取每幀數據的記錄時間,并將記錄時 間轉化為毫秒數,將毫秒數存入時間戳字段。
[0083] 例如,某幀數據的監測服務編碼和監測記錄為〈監測服務編號:5,(幀頭: 20160511121415879,幀負載:DT = 3 DT = 6 DT = 8 fre = 91.8)>;表示該幀數據由服務編號 為5的監測服務產生,且幀頭中時間為2016年05月11日12點14分15秒879毫秒,幀負載中含 有的選項值為2、6、8,監測頻率為9 1 . 8MHZ ;歷史數據編排模塊將幀頭中的 20160511121415879 時間轉化為毫秒數 1462896855879,對毫秒數 1462896855879 取256 的余 為71;歷史數據編排模塊將71放入rowkey的散列字段中,將1462896855879放入rowkey的時 間戳字段中,將監測服務編碼5放入rowkey的監測服務編碼中,將幀負載中的91.8頻率放入 rowkey字段的監測頻率字段中,利用公式S = 2L+1計算每個字段值的變換值S,DT = 3 DT = 6 DT = 8的變換值S分別為9,65,257; S' =9+65+257 = 333;最終形成的rowkey索引的字段值為 711462896855879 5 91.8 333,即rowkey索引用14個字節表示了散列字段、時間戳字段、監 測服務編碼字段、監測頻率字段、負載編碼字段。
[0084] 如圖3所示,回放停止過程包括如下步驟:
[0085] 步驟1000,接收查詢請求
[0086] 通用接口模塊接收用戶的查詢請求,通用接口模塊將查詢請求以XML的形式發送 給數據傳輸模塊,其中用戶查詢參數為〇;
[0087] 步驟2000,查詢消息表
[0088]數據傳輸模塊收到請求后,以query id+" query"字段查詢數據傳輸模塊的消息表; [0089] 步驟3000,給查詢用戶返回結果
[0090] 數據編排模塊通過pi,cl,得到用戶的請求,得知查詢參數為0,停止給用戶發送消 息;
[0091] 步驟4000,刪除消息表
[0092]數據編排模塊將pi,cl退出對queryid+" query"消息的訂閱,將p2,c2退出對 queryid_" request" 消息的訂閱;同時,刪除cl,pl,c2,p2,消息queryid+" query" 和 queryid_"request",并且刪除消息表;至此,完成用戶的停止請求。
[0093]經過試驗計算,本發明的大數據實時回放方法在PB級的監控數據能以秒級或者毫 秒級定位到用戶所需要的數據,快速呈現給用戶,同時用戶能夠通過用戶查詢參數控制獲 取數據的速度,實現了大數據環境下用戶的按需獲取數據;得益于rowkey索引帶有幀負載 內容的設計,在采集過快、幀相同時也不會出現幀重復和丟失的現象;并且通過rowkey索引 的生成算法,能夠節省HBase的region server的50%的存儲空間,減少了磁盤的存儲空間, 通過幀負載內容到rowkey的映射算法,大大提升了大數據的查詢效率。
[0094]應理解,本實施例僅用于說明本發明而不用于限制本發明的范圍。此外應理解,在 閱讀了本發明講授的內容之后,本領域技術人員可以對本發明作各種改動或修改,這些等 價形式同樣落于本申請所附權利要求書所限定的范圍。
【主權項】
1. 一種無線電監測數據回放方法,其特征是,包括通用接口模塊(I)、數據傳輸模塊 (2 )、HBase數據庫(3 )、HDFS數據庫(8)和歷史數據編排模塊(4)和緩沖模塊(7);通用接口模 塊、數據傳輸模塊、HBase數據庫和HDFS數據庫依次連接,HBase數據庫、緩沖模塊、數據傳輸 模塊均與歷史數據編排模塊連接, 所述回放方法包括數據編排過程、數據回放過程和回放停止過程; 數據編排過程包括如下步驟:歷史數據編排模塊將原始監測數據的每一條記錄解封 后,讀取記錄的每個數據幀,根據每個數據幀的幀內信息生成rowkey索引,歷史數據編排模 塊將每個數據幀、與每個數據幀關聯的rowkey索引批量導入HBase數據庫及HDFS數據庫中; HBase數據庫中設有若干個設備表。2. 根據權利要求1所述的無線電監測數據回放方法,其特征是,所述數據回放過程包括 如下步驟: (2-1)歷史數據編排模塊將原始監測數據的每條記錄解封后,讀取與每條記錄對應的 數據幀的幀頭,根據幀頭信息生成rowkey索引,歷史數據編排模塊通過API接口將每個數據 幀、與每個數據幀關聯的rowkey索引批量導入HBase數據庫;HBase數據庫中設有若干個設 備表; (2-2)通用接口模塊接收用戶的查詢請求,并將查詢請求發送給數據傳輸模塊; (2-3)數據傳輸模塊收到查詢請求后,以queryid+" query"字段查詢數據傳輸模塊的消 息表,如果查到消息表,則轉入步驟(2-4); 如果消息表不存在,數據傳輸模塊生成消息表(5 ),消息表包括傳輸集群k a f ka的生產 者pl、消費者cl、訂閱消息query id+" query"、生產者p2、消費者c2和訂閱消息query id+ U , request ; (2-4)數據傳輸模塊的kafka集群(6)將查詢內容通過pl發送到cl,cI接收到查詢內容 后,查詢HBase的各個設備表中與查詢內容的查詢設備ID相對應的設備表,如果沒找到設備 表,則返回一個查詢失敗的消息格式; 歷史數據編排模塊利用公式m = ^計算數據幀的延遲時間m;其中,η為查詢內容中 η 的用戶查詢參數; (2-4-1)如果找到設備表,以查詢內容的記錄開始時間T1、記錄結束時間Τ2、服務ID和 查詢頻率查詢rowkey索引;如果找不到與服務ID或者查詢頻率匹配的rowkey索引,則返回 查詢失敗的消息; (2-4-2)如果找到與服務ID和查詢頻率匹配并且Tl <記錄時間< T2的p個rowkey索引 構成的rowkey索引組; (2-4-3)選擇p個rowkey索引中的記錄時間最接近Tl的rowkey索引A,提取HBase數據庫 的與rowkey索引A對應的數據幀,數據編排模塊收到數據幀后,將數據幀存入緩沖模塊中; (2-5)查詢消息表,通過cl查詢與其對應的p2,p2接收歷史記錄后,數據幀存入緩沖模 塊的時間達到延遲時間m后,將所述數據幀發給c2,c2將數據幀發送給查詢用戶; (2-5-1)當p>0,使p值減少1,將rowkey索引A從rowkey索引組中去除,轉入步驟(1-4-3)〇3. 根據權利要求1所述的無線電監測數據回放方法,其特征是,所述回放停止過程包括 如下步驟: 通用接口模塊接收用戶的查詢請求,通用接口模塊將查詢請求以XML的形式發送給數 據傳輸模塊,其中用戶查詢參數為〇; 數據傳輸模塊收到請求后,以queryid+" query"字段查詢數據傳輸模塊的消息表; 數據編排模塊通過pl,cl,得到用戶的請求,得知查詢參數為0,停止給用戶發送消息; 數據編排模塊將PI,C1退出對queryid+" query"消息的訂閱,將p2,c2退出對queryid」' request" 消息的訂閱;同時,刪除cl,pl,c2,p2,消息queryid+" query" 和query id_" request",并且刪除消息表。4. 根據權利要求1所述的無線電監測數據回放方法,其特征是,所述rowkey索引包括I 個字節的散列字段、4個字節的時間戳字段、1個字節的監測服務編碼字段、4個字節的監測 頻率字段和4個字節的負載字段。5. 根據權利要求1所述的無線電監測數據回放方法,其特征是,所述rowkey索引的生成 過程包括時間戳字段生成步驟,散列字段生成步驟、監測服務編碼字段生成步驟和負載編 碼字段生成步驟; 時間戳字段生成步驟如下:歷史數據編排模塊讀取每幀數據的幀頭,獲取每幀數據的 記錄時間,并將記錄時間轉化為毫秒數,將毫秒數存入時間戳字段。6. 根據權利要求5所述的無線電監測數據回放方法,其特征是,所述散列字段生成步驟 如下: 歷史數據編排模塊將毫秒數以256取余,其結果保存于散列字段中。7. 根據權利要求5所述的無線電監測數據回放方法,其特征是,所述監測服務編碼字段 生成步驟如下: 歷史數據編排模塊獲取每幀數據的監測服務編碼,將監測服務編碼保存在監測服務編 碼字段中。8. 根據權利要求5或6或7所述的無線電監測數據回放方法,其特征是,所述負載編碼字 段利用如下步驟生成: 歷史數據編排模塊獲取每幀數據的幀負載,讀取幀負載每個字段的值L;利用公式S = 2l + 1計算每個字段值的變換值S,將各個字段的S相加得到S7,將S7寫入rowkey索引的負載編 碼字段中。
【文檔編號】G06F17/30GK105893596SQ201610246633
【公開日】2016年8月24日
【申請日】2016年4月18日
【發明人】馬高峰, 黃劍琪, 凌文杰, 呂靈通, 趙智航
【申請人】華信咨詢設計研究院有限公司