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