葉飛+單超群++孫娟
摘要:云計算在搜索引擎、大規模數據計算等方面的能力和價值已逐漸被社會認可。Hadoop技術作為云計算技術的開源實現,對云計算技術的發展起到了十分重要的作用。由于Hadoop的發展時間比較短暫,系統中仍然有很多地方可以去完善和改進,才能更加充分地發揮其系統性能。本文以浙江省免疫規劃平臺兩個具體業務功能為例,探討在Hadoop平臺下如何進一步提升海量數據多條件查詢及離線統計性能。
關鍵詞:Hadoop;免疫規劃;多條件查詢;離線統計
中圖分類號:TP311.13 文獻標識碼:A 文章編號:1007-9416(2017)03-0245-01
1 實例分析
浙江省免疫規劃管理系統數據庫共有297張數據表,最大的數據表“epi_childinfo”進行全表掃描統計行數。該表共有12383850行,237列,數據容量達到65.5G。集中存放的兒童個案數超過1500萬,保存的兒童接種記錄信息超過 2.5 億條。隨著成人/臨時接種業務的開展,數據量在不斷激增。2014年,平臺經過改造實現整體從oracle單機運行架構轉為Hadoop分布式架構。改造完成后,利用了分布式計算技術在一定程度上緩解了模糊查詢和大數據量統計計算的壓力,但仍不能達到理想的效果,需要進一步針對業務功能進行優化。
2 硬件環境
本次實驗使用了十臺2U的X86服務器,組建的Hadoop集群(2個NameNode,8個DataNode),每個單節點配置相同,節點服務器軟硬件配置如下:
硬件:CPU:2*Intel Xeon E5-2620v2 2.0GHz;內存:128G;硬盤:2*2T SATA。
軟件:操作系統:Centos Linux 6.4;
Hadoop版本:2.5;
Hbase版本:0.98.6;
Elasticsearch版本:1.3.1。
3 海量數據多條件查詢
3.1 場景描述
全省范圍、全部戶籍類型、2008年1月1日~2013年12月31日出生的兒童,查詢已經接種“OPV、IPV、五聯疫苗”三種疫苗中任意疫苗3個劑次的兒童數量和個案明細。
3.2 優化思路
考慮到hbase本身具有支持高并發毫秒級數據讀取的能力,查詢的主要瓶頸應該是如何根據多條件組合快速搜索到對應數據的rowkey,因此利用Coprocessor和MR任務方法把hbase的數據和基于Lucene的Elasticsearch的分布式全文索引引擎整合建立索引,實現實時創建索引并進行搜索,有效的保證了海量數據中多條件組合查詢的性能。
3.3 優化結果
測試結果: 150并發 無負載;
查詢時間: 3.736秒 0.8秒;
點擊下一頁: 1.8秒 0.8秒;
點擊末頁: 1.2秒 0.8秒;
CPU最大/最小負載:7.1%/30.9% 無。
4 大數據量離線統計
4.1 場景描述
適齡兒童個案免疫規劃疫苗接種率(全程接種率)統計:
全省范圍、全部戶籍類型、2008年1月1日~2013年12月31日出生的兒童,統計“卡介苗、乙肝1-3、脊灰1-3、百白破1-3、麻類1、乙腦1、A群流腦1-2、甲肝1”單苗/單劑次接種率和全程接種率。
4.2 優化思路
考慮到離線數據的計算量、復雜度以及多表關聯的問題,采用專有的高效列式內存存儲格式和為內存優化的Spark計算引擎,相比廣泛使用的Map/Reduce框架消除了頻繁的I/O磁盤訪問。此外,Spark引擎還采用了輕量級的調度框架和多線程計算模型,相比Map/Reduce中的進程模型具有極低的調度和啟動開銷,主要優化如下:
(1)數據結構的優化:利用hbase列式數據庫的特性,把兒童個案和接種記錄表整合成寬表,減少關聯查詢,提高查詢效率。 (2)利用基于內存計算引擎的Spark,配合Holodesk緩存數據供Spark高速訪問,進一步提升Spark的統計交互性能。利用高度優化的高速SQL引擎運行于Spark之上進一步提升和保證海量數據離線統計的性能。
4.3 優化結果
測試結果:150并發 無負載;
查詢時間:395秒 375秒。
5 結語
Hadoop技術作為一款能夠對大數據進行分布式系統基礎架構,具有簡單的并行編程模型,龐大的數據存儲能力和高效的計算能力為用戶提供了良好體驗。但是簡單利用分布式架構的確能夠提升性能,但要發揮分布式架構的真正的性能,仍需要針對具體業務特點進行優化。
參考文獻
[1]李聰穎,等.基于Hadoop的交互式大數據分析查詢處理方法[J].計算機技術與發展,2016,26(8):134-137.
[2]辛大欣,劉飛.Hadoop集群性能優化技術研究[J].電腦知識與技術,2011,7(22):5484-5486.