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