摘要:
摘要: 研究產品相關大數據資源組織存儲與檢索查詢技術,提出在Hadoop平臺基礎上對產品大數據資源進行分塊存儲。基于MapReduce并行架構模型,提出多副本一致性Hash數據存儲算法,算法充分考慮了數據的相關性和時空屬性,并優化了Hadoop平臺的數據劃分策略和數據塊規格調整。通過對數據的優化存儲布局,采用多源并行連接檢索方法和多通道數據融合特征提取技術實現產品大數據信息檢索,提高了數據資源管理效率。實驗表明和標準Hadoop方案比較,多源并行連接數據檢索的執行時間為其31.9%。
1. 引言
計算機的發展和網絡通信技術日趨成熟,數據規模的增長在給人們帶來便利生活的同時也讓從大量數據中汲取有用信息變得困難,如何從中檢索到有用數據是目前需要面對的重要問題 [1] [2] [3]。其中有產品相關的數據資源包含生產車間監測視頻圖像及產品相關數據及文檔、物料跟蹤數據、加工數據、生產流通數據等,其存在著數據資源規模大,種類多,來源不同且分散分布的特點 [4] [5] [6]。傳統的分布式數據庫受數據庫存儲能力限制,存在著架構存儲能力有限,對數據的管理與發布支持相對較弱,管理效率低的問題 [7] [8] [9]。
目前,針對傳統分布式數據庫存在的問題,龐書杰 [10] 提出了一種基于Hash的關聯規則并行優化算法(HP-AR),通過對數據庫統計頻繁項集部分的并行處理結合輔助Hash表簡化挖掘過程滿足了面對大規模數據集時挖掘隱藏關聯規則的需求。潘俊輝等學者 [11] 針對基本算法Apriori的改進,提出了一種基于壓縮矩陣的優化算法,該算法使用MapReduce計算模型對數據庫進行分塊,之后對數據庫的關聯規則的挖掘結果進行合并,得出頻繁項集。Aisha Siddiqa等學者 [12] 為了評估不同存儲架構的性能,使用Brewer的CAP定理比較和分析了現有方法,提出了一種定義明確的大數據存儲技術分類法。
本文針對目前存在的數據管理效率低、檢索速度慢等問題基于Hadoop平臺,結合分布式、分層結構的存儲優化和并行處理等技術,提出了一種多副本一致性Hash數據存儲算法,將數據集中的數據按照相關性以及時空屬性進行分塊處理,提高了數據處理的效率。同時在Hadoop MapReduce并行框架的基礎上,設計了一種多源并行連接數據檢索算法,實驗結果表明,同傳統Hadoop方案相比,多源并行連接數據檢索算法的運行速度明顯加快。
2. 產品大數據存儲優化研究
2.1. 數據存儲及數據分布策略
基于數據相關性的多副本一致性Hash數據存儲算法(Multi-copy Consistency Hash Algorithm Based on Data Correlation, CMCHA),進行Hadoop的數據布局優化,優化技術路線:盡可能集中存儲相關聯的數據,數據檢索和分析時在映射階段完成主要工作,使由映射端到約減端數據通信負載消耗降低,系統整體數據檢索和分析性能得到提高。每種跟蹤過程數據的類型和格式不同,可將數據的具體采集位置和時間作為數據檢索和分析時的關鍵字。
通常Hadoop平臺將數據存儲為3個副本,一份在本地,一份在同機架內不同節點上,一份在不同機架的某一節點上。為減少整體數據傳輸帶寬消耗和數據讀取時間延時,HDFS讓讀取應用程序讀取距離它最近的副本數據。
存儲算法考慮如下3方面的相關性:數據采集地點相關性、數據采集時間相關性和自定義數據相關性。利用一致性Hash算法,按照采集地點編號對數據副本1進行Hash映射;按照采集時間戳對數據副本2進行Hash映射;相關系數作為跟蹤過程數據的一個重要屬性,按照自定義相關系數對數據副本3進行Hash映射,實現不同的數據查詢和數據分析需求。根據應用系統需要自定義數據相關性,給相關系數賦值,算法設計過程中構建配置流程如圖1所示的Hash環。
Figure 1. CMCHA flow
圖1. CMCHA算法流程
步驟1:通過配置文件預定義跟蹤過程數據的相關系數以及冗余的副本數量,定義冗余副本數量為3;
步驟2:計算集群中每個數據節點的Hash值,配置到0~232的Hash環區間上;
步驟3:基于跟蹤過程數據的時間及空間屬性和相關系數計算數據的Hash值。根據數據來源位置ID,在云平臺下對第1份副本數據①,計算Hash值1,映射到Hash環上;對第2份數據②,根據跟蹤過程數據的采集時間戳,計算Hash值2,并映射到Hash環上。對第3份數據③,根據數據的相關系數計算其Hash值3,并映射到Hash環上。可配置大于3的副本數量,交替按照這3種方式計算其Hash值i,并依次映射到Hash環上,滿足更高的數據存儲可靠性;
步驟4:確定數據的存儲位置,根據數據Hash值和數據節點Hash值在CMCHA算法配置流程圖中按順時針方向將數據映射到距離其最近的節點(如將數據①映射到節點A上);
步驟5:如果節點空間不足或在映射過程出現異常,則跳過該節點尋找下一個存放節點。
2.2. 數據存儲優化研究
按照所屬大文件,所有分塊數據存儲為一個文件,分塊數據基于Hadoop分布式存儲調度策略,被分散存放在不同的分布式存儲節點上,每個分塊數據設置相應的存儲副本率,為便于數據檢索該存儲策略另外定義和維護分塊數據的索引鍵名。
每個大文件包含的每個分塊數據通過< key, value >記錄形式存儲到HDFS中,記為< Blk-ID, Data >,數據類型為< int, byte[] >,Blk-ID表示數據分塊順序號,Data表示數據分塊的二進制數據,通過給定的Blk-ID可得到對應數據分塊的二進制字節數據。大文件數據分塊存儲方法如圖2。
HDFS的設計目標是存儲大文件,其數據塊規格默認為64 MB,遠大于512B的物理磁盤的塊大小。HDFS文件訪問時間主要包括系統尋址時間和數據傳輸時間,文件傳輸效率 ηeffectηeffect 計算公式如下:
Figure 2. Block storage process of large file
圖2. 大文件分塊存儲流程
其中, tttt 表示數據傳輸時間, tt=Sblockvtt=Sblockv; tsts 表示系統尋址時間; SblockSblock 表示數據塊規格; vv 表示數據傳輸速度。
從(1)可看出 ηeffectηeffect 小于1。通常在數據分布和索引方法確定情況下, tsts 和 vv 是確定的值,要提高 ηeffectηeffect 應增加 SblockSblock。在HDFS中,通過dfs.block.size參數設置數據塊 SblockSblock 的規格。如果規格設置過大會降低系統負載均衡性,在調整數據塊的規格時應綜合考慮進入系統的數據規模、數據傳輸率和負載均衡性。
3. 數據多源并行連接檢索
產品數據跟蹤管理系統對在線監測的多個監測點以及相關參數進行綜合檢索,查詢條件是監測位置ID、采樣時間或位置和時間聯合條件等。檢索內容包括位置信息(數據采集點設備名稱、設備運行時間、采集位置等)、環境信息(生產車間的溫度、濕度、氣壓等)、生產數據(捕撈時間、捕撈批次、數量等)等多源數據,需要將不同來源的數據進行數據連接。如在產品加工過程質量控制參數的綜合檢索過程中需要連接3個數據文件:1) 加工過程數據文件(表1),其中采樣批次即為產品批次碼;2) 質量控制參數檢測數據文件(表2);3) 檢測環境文件(表3),其中檢測位置編碼代表“車間–工段–班組–工位”。按時間進行的綜合查詢生成在2020年3月14日9:00~9:20的綜合檢測結果數據,形成質量檢測數據列表,包括位置信息和環境信息。此過程需要將3個數據文件按照查詢條件進行連接,形成滿足綜合查詢要求的查詢結果數據列表,如表4。
位置ID | 采集時間 | 采樣批次 |
DL082 | 2020-03-14 9:08 | 202003140103100 |
DL083 | 2020-03-14 9:18 | 202003140103300 |
DL081 | 2020-03-14 9:10 | 202003140103200 |
Table 1. Processing data file
表1. 加工過程數據文件
位置 | 采集時間 | 采樣批次 | 采樣信息 |
DL083 | 2020-03-14 9:10 | 202003140103200 | 31.9/7.58/50.2 |
DL081 | 2020-03-14 9:00 | 202003140103300 | 32.5/7.55/50.5 |
DL082 | 2020-03-14 9:08 | 202003140103100 | 32.2/7.57/50.4 |
DL082 | 2020-03-17 9:00 | 202003140103100 | 11.7/10.1/62.2 |
Table 2. Quality inspection data file
表2. 質量參數檢測數據文件
位置ID | 檢測位置 | 采集時間 | 溫度℃ | 濕度 |
DL081 | ZZ01-I-02-B | 2017-03-14 8:00 | 39 | 65 |
DL082 | ZZ01-I-02-A1 | 2017-03-14 8:10 | 38 | 63 |
DL083 | ZZ02-II-01-A1 | 2017-03-14 8:11 | 38 | 59 |
Table 3. Detection position data file
表3. 檢測環境數據文件
位置ID | 檢測位置 | 采集時間 | 溫度/℃ | 濕度 | 采樣批次 | 采樣信息 |
DL081 | ZZ01-A-026-B | 2017-03-14 9:00 | 39 | 65 | 201703140103300 | 32.5/7.55/50.5 |
DL082 | ZZ01-A-026-A1 | 2017-03-14 9:08 | 38 | 63 | 201703140103100 | 32.2/7.57/50.4 |
DL083 | ZZ02-B-017-A1 | 2017-03-14 9:10 | 38 | 59 | 201703140103200 | 31.9/7.58/50.2 |
Table 4. Results of date join
表4. 數據連接結果
按照數據檢索需求和數據格式描述,設計并行過濾連接檢索算法,算法在映射端執行,設計的主要依據是為節省網絡流量傳輸,提高檢索效率,過濾和連接在映射過程進行,避免要執行的檢索操作在約減過程進行。為使數據連接時所需數據聚集到同一個數據節點,采用基于數據相關性的多副本一致性Hash算法進行數據分布。算法流程:1) 根據檢索條件過濾掉不符合檢索條件的數據;2) 根據連接檢索需求,確定數據連接的組鍵(group key):檢測位置ID、時間戳或相關系數;3) 用數據文件名作為標簽,標記各數據源的各個記錄;4) 將相同屬性值的記錄根據連接組鍵劃分到一組,按照檢索條件進行數據連接。
數據進行優化存儲分布之后進入數據連接映射階段,此階段在本地節點進行相應任務操作,結果傳輸到HDFS,數據的優化分布及映射端連接模式流程如圖3所示。
Figure 3. Optimized data distribution and map data join mode
圖3. 數據的優化分布及映射端數據連接模式
4. 算例驗證
4.1. Hadoop平臺建設
采用10節點即10臺服務器建設Hadoop集群平臺,指定集群中一個節點為NameNode,指定另一臺不同的節點為JobTracker,均是主控節點。余下節點為客戶端,作為DataNode也作為TaskTracker。操作系統采用Windows;部署:虛擬機軟件Vmvare;Vmvare安裝好一臺Windows虛擬機后,導出或者克隆出另外兩臺虛擬機,連接為橋連,確保虛擬機和主機ip地址在同一個ip段內,可以相互通信。設置數據塊規格為64 MB,對應4個CPU內核,各計算節點都分配4個任務網格,其中3個為映射計算任務網格,1個為約減計算任務網格。對集群的整體數據傳輸性能進行基準測試。
4.2. 算法性能驗證
為測試數據存儲分布優化后多源連接檢索查詢算法的性能,將前述針對產品大數據連接算法和基于標準Hadoop平臺的連接算法進行分析比對驗證。分析使用實驗室研發的“產品大數據追溯系統”中采集存儲的數據集,如表5。
文件名 | 副本數 | 文件大小 | 占用空間 | 記錄數 |
加工過程 | 3 | 627 kB | 1881 kB | 1910 |
質量檢測 | 3 | 370 GB | 1110 GB | 13.62 M |
檢測環境 | 3 | 215 MB | 645 MB | 4175 |
Table 5. Real data set for join query
表5. 算法驗證真實數據集
1) 多源并行連接檢索運行時間變化趨勢
選擇3種典型連接查詢條件進行基于CMCHA多源并行連接檢索查詢算法的運行測試,記錄每種條件下算法的運行時間。查詢結構化語言SQL語句的描述如表6。
類型 | 條件 | 查詢語句 |
全連接 | 不設置 |
Select位置ID,檢測位置,采集時間,溫度,濕度,采樣批次,采樣信息 From加工過程,質量參數檢測,檢測環境 Where加工過程,位置ID = 質量參數檢測,位置ID = 檢測環境,位置ID |
位置條件 連接 |
檢測 工位 |
Select位置ID,檢測位置,采集時間,溫度,濕度,采樣批次,采樣信息 From加工過程,質量參數檢測,檢測環境 Where加工過程,位置ID = 質量參數檢測,位置ID = 檢測環境,位置ID and位置ID between [ID1, IDn] |
時間條件 連接 | 時間 |
Select位置ID,檢測位置,采集時間,溫度,濕度,采樣批次,采樣信息 From加工過程,質量參數檢測,檢測環境 Where加工過程,位置ID = 質量參數檢測,位置ID = 檢測環境,位置ID and采集時間between [T1, Tn] |
Table 6. SQL description of join query
表6. 連接查詢實驗類SQL描述
實驗過程中在數據集中選取不同規模的子集,從10萬條記錄遞增至數據全集(13.76 M條),基于CMCHA的多數據源并行連接檢索算法運行時間變化趨勢及運行時間與數據規模的關系如圖4。可以看出,應用了CMCHA數據存儲算法優化后,數據檢索運行時間隨著數據規模的增長而增長平緩。由于對數據存儲布局采用CMCHA進行了優化,且在映射過程中完成綜合檢索查詢操作,網絡通信量有效降低,保證了查詢性能的穩定性。
Figure 4. Execution time and variation trend of data join
圖4. 多源連接檢索運行時間變化趨勢
2) 數據連接檢索運行時間比較
使用基于標準Hadoop平臺的約減端連接檢索處理算法和基于CMCHA的多源并行數據連接檢索算法,針對選取的13.76 M條樣本數據全集,分別執行全連接、以檢測位置為查詢條件和以時間為查詢條件的連接檢索操作,運行時間比較結果如圖5,后一算法的運行時間分別為前一算法運行時間的32.9%、32.5%和32.1%。CMCHA算法在運行時間上遠小于標準Hadoop算法,而且隨著事務條數的增加,雖然CMCHA算法運行時間也在增加,但是兩者的差距也在逐漸變大,當數據量逐漸越大時,CMCHA算法的優勢也越來越明顯。數據存儲優化布局后提高了多數據源相關數據聚集性,映射任務中的數據連接在本地就能完成,減少了映射端到約減端的數據通信,也降低了約減任務的啟動對性能的影響,所以算法的運行效率明顯提高。
Figure 5. Execution time comparison of data join based on 2 algorithms
圖5. 兩種算法多源連接運行時間比較
5. 結論
針對產品大數據資源,基于Hadoop平臺,采用分布式、分層結構的存儲優化和并行處理等技術,提出了多副本一致性Hash數據存儲算法,按照產品主屬性、相關系數和時間戳,在數據集群中按照規則聚集具有相關性的數據,提高數據處理效率。基于該算法設計了Hadoop平臺下多源并行連接數據檢索算法,測試證明通過數據的存儲分布優化,算例的運行速度明顯加快,和標準Hadoop方案比較,多源并行連接數據檢索的執行時間為其31.9%。
審核編輯:湯梓紅
?
評論