【 摘 要 】 隨著大數(shù)據(jù)時代的到來,對大數(shù)據(jù)的處理變得越來越重要。本文對如何處理大數(shù)據(jù)進(jìn)行了分析,研究了大數(shù)據(jù)處理的相關(guān)技術(shù),包括數(shù)據(jù)存儲架構(gòu)、數(shù)據(jù)結(jié)構(gòu)處理、極限存儲處理等方面。最后,對大數(shù)據(jù)的未來發(fā)展進(jìn)行了展望。
【 關(guān)鍵詞 】 大數(shù)據(jù);數(shù)據(jù)處理;數(shù)據(jù)存儲
1 引言
隨著云計算、移動互聯(lián)、物聯(lián)網(wǎng)、新技術(shù)與應(yīng)用的不斷涌現(xiàn),大數(shù)據(jù)的處理變得越來越重要。根據(jù)統(tǒng)計數(shù)據(jù)顯示,超過50%的企業(yè)目前每日生成的數(shù)據(jù)量在1TB以上,超過10TB的有10%,而更讓人吃驚的是有5%的企業(yè)每日生成的數(shù)據(jù)量已經(jīng)達(dá)到了50TB以上。特別是在金融、互聯(lián)網(wǎng)、電信等行業(yè),幾乎已經(jīng)到了“數(shù)據(jù)就是業(yè)務(wù)本身”的地步。隨著大數(shù)據(jù)時代的到來,數(shù)據(jù)本身對于一個企業(yè)來說變得越來越有價值,如果企業(yè)不能有效利用數(shù)據(jù)挖掘商業(yè)價值,就不可能在現(xiàn)代商業(yè)中取得行業(yè)領(lǐng)先地位。
2 大數(shù)據(jù)處理難點(diǎn)
(1)數(shù)據(jù)量大 數(shù)據(jù)庫每天處理的數(shù)據(jù)量達(dá)到TB級、PB級甚至EB級,不僅給數(shù)據(jù)處理帶來了很大的難度,而且對數(shù)據(jù)存儲、服務(wù)器性能以及安全等方面都帶來了一系列問題。
(2)結(jié)構(gòu)化和非結(jié)構(gòu)化大量并存 存儲的大數(shù)據(jù)中不僅僅包括結(jié)構(gòu)化的數(shù)據(jù),也包括一些非結(jié)構(gòu)化的數(shù)據(jù),這些數(shù)據(jù)不僅通過數(shù)據(jù)庫結(jié)合在一塊,而且要并用一個統(tǒng)一平臺來解決所有的數(shù)據(jù)問題。
(3)數(shù)據(jù)的快速增長 由于大數(shù)據(jù)的增長速度一般是PB級增長,不僅要考慮到存儲系統(tǒng)的吞吐量以及CPU的并發(fā)處理能力,還要考慮到數(shù)據(jù)庫高度可擴(kuò)展、可伸縮等多方面的需求。比如:①擴(kuò)展方式要簡單,容量擴(kuò)充必須通過簡單易行的方式完成,維護(hù)升級的代價要低;②線性擴(kuò)展,不是依靠增加每個單個服務(wù)器,或者單個集群的能力,而是依靠簡單的添加服務(wù)器完成。
3 大數(shù)據(jù)處理技術(shù)方法
3.1 采用基于Hadoop架構(gòu)的高性能體系結(jié)構(gòu)計算機(jī)
3.1.1 Hadoop架構(gòu)簡介
Hadoop 是一個能夠?qū)Υ髷?shù)據(jù)進(jìn)行分布式處理的軟件框架,以一種可靠、高效、可伸縮的方式進(jìn)行處理的,Hadoop主要由分布式文件系統(tǒng)HDFS和編程模型MapReduce兩部分組成。HDFS提供了海量數(shù)據(jù)的存儲,MapReduce提供了對數(shù)據(jù)的計算。
3.1.2 搭建MapReduce系統(tǒng)架構(gòu)
高性能體系結(jié)構(gòu)計算機(jī)具有非常強(qiáng)大的計算能力以及存儲能力,因此可高效率地進(jìn)行大數(shù)據(jù)處理。在高性能體系結(jié)構(gòu)計算機(jī)上進(jìn)行大數(shù)據(jù)處理,首先要兼容原有應(yīng)用程序,還要支持 MapReduce 的編程模式,不能使用傳統(tǒng)的MPI編程模式,而必須在高性能計算機(jī)上部署MapReduce 架構(gòu),如圖1所示。
其次,要對高性能體系結(jié)構(gòu)計算機(jī)存儲系統(tǒng)的讀寫速度受限進(jìn)行改進(jìn),否則會成為整個系統(tǒng)性能的瓶頸。由于高并發(fā)帶來的對集群文件系統(tǒng)的資源競爭和沖突, Lustre文件系統(tǒng)不能充分發(fā)揮并行I/O性能的優(yōu)勢。嚴(yán)重影響了高性能計算機(jī)進(jìn)行海量數(shù)據(jù)處理的高效性,因此解決的主要方法就是緩解資源的競爭,增加集群文件系統(tǒng)的條帶化塊大小或直接去掉HDFS層,讓Lustre文件系統(tǒng)直接為MapReduce層服務(wù)。這兩種方法都可以解決文件系統(tǒng)的資源競爭,最大限度的發(fā)揮存儲系統(tǒng)的并行I/O性能。
3.2 數(shù)據(jù)結(jié)構(gòu)處理
3.2.1合理進(jìn)行數(shù)據(jù)分區(qū)
存儲大數(shù)據(jù)的數(shù)據(jù)倉庫容量一般都會達(dá)到GB級別,甚至有的達(dá)到了TB級別。隨著時間的增長,表中的數(shù)據(jù)量也會大規(guī)模的增長,不但影響著數(shù)據(jù)庫的運(yùn)行效率,也增大數(shù)據(jù)庫的維護(hù)難度。對表不同的訪問模式也可能會影響性能和可用性。通過合理的數(shù)據(jù)分區(qū)這些問題會得到較好的改善。數(shù)據(jù)分區(qū)可以使數(shù)據(jù)分的更小、更容易管理,減小磁盤I/O,系統(tǒng)負(fù)荷,從而提高系統(tǒng)的運(yùn)行效率。除了合理進(jìn)行數(shù)據(jù)分區(qū)外,建立索引也是一個非常必要的。建立良好的索引是進(jìn)行數(shù)據(jù)優(yōu)化的好幫手,但建立索引要考慮到具體情況,不管是組合索引、獨(dú)立索引,索引的填充因子和聚集、非聚集索引都要考慮。例如如果是建立復(fù)合索引,應(yīng)盡可能的讓索引順序與字段順序相一致,而且要考慮只有用到復(fù)合索引中的第一個字段作為條件時,才能使用建立的復(fù)合索引,否則建立的復(fù)合索引將不會被使用,特別是針對大表的分組、排序等字段。
3.2.2優(yōu)化查詢SQL語句
大數(shù)據(jù)進(jìn)行查詢處理過程中,優(yōu)化查詢的SQL語句對大數(shù)據(jù)查詢效率的影響非常大。可以通過很多方法進(jìn)行優(yōu)化:(1)盡量避免在 where 子句中使用!=或<>操作符 ,進(jìn)行 null 值判斷,使用 or 來連接條件,前置百分號%,對字段進(jìn)行表達(dá)式操作,函數(shù)操作等情況;(2)把數(shù)據(jù)、日志、索引盡可能的放到不同的I/O設(shè)備上,這樣可以增加讀取速度;(3)根據(jù)查詢條件,建立索引,并且要優(yōu)化索引、優(yōu)化訪問方式,限制結(jié)果集的數(shù)據(jù)量,索引應(yīng)該盡量小,建議使用字節(jié)數(shù)小的列建立索引;(4)盡量使用數(shù)值型字段,若字段存儲數(shù)值型的字段盡量不要設(shè)計成字符型,否則會降低查詢和連接的性能,并會增加存儲開銷。
3.2.3 優(yōu)化分頁處理
數(shù)據(jù)庫查詢數(shù)據(jù)經(jīng)常會用到分頁處理,常規(guī)處理通常采用兩種方案:(1)使用內(nèi)存,查詢后在內(nèi)存中進(jìn)行分頁,缺點(diǎn)是占用內(nèi)存較大;(2)執(zhí)行存儲過程時在數(shù)據(jù)庫中分頁,缺點(diǎn)是依賴數(shù)據(jù)庫,查詢效率低。因此,分頁處理優(yōu)化也是對大數(shù)據(jù)處理的一個重要技術(shù)方法。
分頁處理時,可以考慮在內(nèi)存中預(yù)先加載進(jìn)一定頁數(shù)的數(shù)據(jù)來滿足部分?jǐn)?shù)據(jù)的需求,同時將所有列組合的數(shù)據(jù)進(jìn)行記錄。查詢的時候,首先到內(nèi)存中將查詢的條件與列組合的數(shù)據(jù)進(jìn)行比較,如果存在則在內(nèi)存中查詢需要的數(shù)據(jù),查詢結(jié)束后,刪掉第一頁最后的一個數(shù)據(jù)之前的所有數(shù)據(jù),另起一個監(jiān)控線程加載相應(yīng)條數(shù)進(jìn)內(nèi)存,這樣可以提高查詢的效率。
3.2.4 設(shè)計良好的數(shù)據(jù)存儲空間
對于大數(shù)據(jù)的處理,數(shù)據(jù)存儲在使用和維護(hù)中占據(jù)了核心地位。在數(shù)據(jù)量每天增長相當(dāng)大的情況下,如果采用傳統(tǒng)的存儲方式會占用相當(dāng)大的存儲空間。如何更快、更高效地獲取歷史快照數(shù)據(jù)也要依賴于優(yōu)良的數(shù)據(jù)存儲空間設(shè)計。因此,設(shè)計良好的數(shù)據(jù)存儲空間是進(jìn)行數(shù)據(jù)處理的基礎(chǔ)。極限存儲方案是當(dāng)前進(jìn)行大數(shù)據(jù)處理使用最多的數(shù)據(jù)存儲方案,很好地解決了因?yàn)橹貜?fù)存儲造成存儲空間浪費(fèi)的問題。極限存儲原理就是給數(shù)據(jù)庫中的記錄加上一個生命期。這樣數(shù)據(jù)庫中的任意一條記錄,由于存在確定的生命周期,一定對應(yīng)唯一的一個數(shù)據(jù)標(biāo)簽,而一個數(shù)據(jù)標(biāo)簽對應(yīng)符合該生命周期的記錄集合,對于歷史快照數(shù)據(jù),就可以劃分到不同的生命周期數(shù)據(jù)標(biāo)簽里去。在適當(dāng)?shù)膱龊舷率褂迷摲桨福梢源蟠蠊?jié)約存儲空間,減少/去除冗余數(shù)據(jù),降低存儲成本,提高歷史快照數(shù)據(jù)的訪問速度,表越大,極限存儲帶來的效果越是明顯。
4 結(jié)束語
大數(shù)據(jù)時代來了,大數(shù)據(jù)已經(jīng)成為現(xiàn)今業(yè)界最熱門研究課題,是未來的發(fā)展趨勢。隨著物聯(lián)網(wǎng)、4G網(wǎng)絡(luò)等的應(yīng)用,大數(shù)據(jù)從概念走向了價值化,形成了以大數(shù)據(jù)產(chǎn)業(yè)為核心的新興戰(zhàn)略性產(chǎn)業(yè)。大數(shù)據(jù)處理模式會多樣化并存,深度學(xué)習(xí)與研究大數(shù)據(jù)處理技術(shù),是對數(shù)據(jù)駕馭能力新的挑戰(zhàn)。有人預(yù)言:“大數(shù)據(jù)”所能帶來的巨大商業(yè)價值,將引領(lǐng)一場足以匹敵20世紀(jì)計算機(jī)革命的巨大變革。
參考文獻(xiàn)
[1] 黃訸等. 面向高性能計算機(jī)的海量數(shù)據(jù)處理平臺實(shí)現(xiàn)與評測[J].計算機(jī)研究與發(fā)展,2012(49).
[2] 趙浩然.論數(shù)據(jù)分區(qū)對海量數(shù)據(jù)處理的必要性[J].科學(xué)之友, 2011(33).
[3] 李莉.海量數(shù)據(jù)處理策略[J].無線互聯(lián)科技,2013(2).
[4] Apache Hadoop. [EB/OL]. http://hadoop.apache.org/.
[5] 翟巖龍等.基于Hadoop的高性能海量數(shù)據(jù)處理平臺研究 [J].計算機(jī)科學(xué),2013(3).
作者簡介:
韓江(1979-),男,碩士;主要研究方向和關(guān)注領(lǐng)域:數(shù)據(jù)庫應(yīng)用。endprint
【 摘 要 】 隨著大數(shù)據(jù)時代的到來,對大數(shù)據(jù)的處理變得越來越重要。本文對如何處理大數(shù)據(jù)進(jìn)行了分析,研究了大數(shù)據(jù)處理的相關(guān)技術(shù),包括數(shù)據(jù)存儲架構(gòu)、數(shù)據(jù)結(jié)構(gòu)處理、極限存儲處理等方面。最后,對大數(shù)據(jù)的未來發(fā)展進(jìn)行了展望。
【 關(guān)鍵詞 】 大數(shù)據(jù);數(shù)據(jù)處理;數(shù)據(jù)存儲
1 引言
隨著云計算、移動互聯(lián)、物聯(lián)網(wǎng)、新技術(shù)與應(yīng)用的不斷涌現(xiàn),大數(shù)據(jù)的處理變得越來越重要。根據(jù)統(tǒng)計數(shù)據(jù)顯示,超過50%的企業(yè)目前每日生成的數(shù)據(jù)量在1TB以上,超過10TB的有10%,而更讓人吃驚的是有5%的企業(yè)每日生成的數(shù)據(jù)量已經(jīng)達(dá)到了50TB以上。特別是在金融、互聯(lián)網(wǎng)、電信等行業(yè),幾乎已經(jīng)到了“數(shù)據(jù)就是業(yè)務(wù)本身”的地步。隨著大數(shù)據(jù)時代的到來,數(shù)據(jù)本身對于一個企業(yè)來說變得越來越有價值,如果企業(yè)不能有效利用數(shù)據(jù)挖掘商業(yè)價值,就不可能在現(xiàn)代商業(yè)中取得行業(yè)領(lǐng)先地位。
2 大數(shù)據(jù)處理難點(diǎn)
(1)數(shù)據(jù)量大 數(shù)據(jù)庫每天處理的數(shù)據(jù)量達(dá)到TB級、PB級甚至EB級,不僅給數(shù)據(jù)處理帶來了很大的難度,而且對數(shù)據(jù)存儲、服務(wù)器性能以及安全等方面都帶來了一系列問題。
(2)結(jié)構(gòu)化和非結(jié)構(gòu)化大量并存 存儲的大數(shù)據(jù)中不僅僅包括結(jié)構(gòu)化的數(shù)據(jù),也包括一些非結(jié)構(gòu)化的數(shù)據(jù),這些數(shù)據(jù)不僅通過數(shù)據(jù)庫結(jié)合在一塊,而且要并用一個統(tǒng)一平臺來解決所有的數(shù)據(jù)問題。
(3)數(shù)據(jù)的快速增長 由于大數(shù)據(jù)的增長速度一般是PB級增長,不僅要考慮到存儲系統(tǒng)的吞吐量以及CPU的并發(fā)處理能力,還要考慮到數(shù)據(jù)庫高度可擴(kuò)展、可伸縮等多方面的需求。比如:①擴(kuò)展方式要簡單,容量擴(kuò)充必須通過簡單易行的方式完成,維護(hù)升級的代價要低;②線性擴(kuò)展,不是依靠增加每個單個服務(wù)器,或者單個集群的能力,而是依靠簡單的添加服務(wù)器完成。
3 大數(shù)據(jù)處理技術(shù)方法
3.1 采用基于Hadoop架構(gòu)的高性能體系結(jié)構(gòu)計算機(jī)
3.1.1 Hadoop架構(gòu)簡介
Hadoop 是一個能夠?qū)Υ髷?shù)據(jù)進(jìn)行分布式處理的軟件框架,以一種可靠、高效、可伸縮的方式進(jìn)行處理的,Hadoop主要由分布式文件系統(tǒng)HDFS和編程模型MapReduce兩部分組成。HDFS提供了海量數(shù)據(jù)的存儲,MapReduce提供了對數(shù)據(jù)的計算。
3.1.2 搭建MapReduce系統(tǒng)架構(gòu)
高性能體系結(jié)構(gòu)計算機(jī)具有非常強(qiáng)大的計算能力以及存儲能力,因此可高效率地進(jìn)行大數(shù)據(jù)處理。在高性能體系結(jié)構(gòu)計算機(jī)上進(jìn)行大數(shù)據(jù)處理,首先要兼容原有應(yīng)用程序,還要支持 MapReduce 的編程模式,不能使用傳統(tǒng)的MPI編程模式,而必須在高性能計算機(jī)上部署MapReduce 架構(gòu),如圖1所示。
其次,要對高性能體系結(jié)構(gòu)計算機(jī)存儲系統(tǒng)的讀寫速度受限進(jìn)行改進(jìn),否則會成為整個系統(tǒng)性能的瓶頸。由于高并發(fā)帶來的對集群文件系統(tǒng)的資源競爭和沖突, Lustre文件系統(tǒng)不能充分發(fā)揮并行I/O性能的優(yōu)勢。嚴(yán)重影響了高性能計算機(jī)進(jìn)行海量數(shù)據(jù)處理的高效性,因此解決的主要方法就是緩解資源的競爭,增加集群文件系統(tǒng)的條帶化塊大小或直接去掉HDFS層,讓Lustre文件系統(tǒng)直接為MapReduce層服務(wù)。這兩種方法都可以解決文件系統(tǒng)的資源競爭,最大限度的發(fā)揮存儲系統(tǒng)的并行I/O性能。
3.2 數(shù)據(jù)結(jié)構(gòu)處理
3.2.1合理進(jìn)行數(shù)據(jù)分區(qū)
存儲大數(shù)據(jù)的數(shù)據(jù)倉庫容量一般都會達(dá)到GB級別,甚至有的達(dá)到了TB級別。隨著時間的增長,表中的數(shù)據(jù)量也會大規(guī)模的增長,不但影響著數(shù)據(jù)庫的運(yùn)行效率,也增大數(shù)據(jù)庫的維護(hù)難度。對表不同的訪問模式也可能會影響性能和可用性。通過合理的數(shù)據(jù)分區(qū)這些問題會得到較好的改善。數(shù)據(jù)分區(qū)可以使數(shù)據(jù)分的更小、更容易管理,減小磁盤I/O,系統(tǒng)負(fù)荷,從而提高系統(tǒng)的運(yùn)行效率。除了合理進(jìn)行數(shù)據(jù)分區(qū)外,建立索引也是一個非常必要的。建立良好的索引是進(jìn)行數(shù)據(jù)優(yōu)化的好幫手,但建立索引要考慮到具體情況,不管是組合索引、獨(dú)立索引,索引的填充因子和聚集、非聚集索引都要考慮。例如如果是建立復(fù)合索引,應(yīng)盡可能的讓索引順序與字段順序相一致,而且要考慮只有用到復(fù)合索引中的第一個字段作為條件時,才能使用建立的復(fù)合索引,否則建立的復(fù)合索引將不會被使用,特別是針對大表的分組、排序等字段。
3.2.2優(yōu)化查詢SQL語句
大數(shù)據(jù)進(jìn)行查詢處理過程中,優(yōu)化查詢的SQL語句對大數(shù)據(jù)查詢效率的影響非常大。可以通過很多方法進(jìn)行優(yōu)化:(1)盡量避免在 where 子句中使用!=或<>操作符 ,進(jìn)行 null 值判斷,使用 or 來連接條件,前置百分號%,對字段進(jìn)行表達(dá)式操作,函數(shù)操作等情況;(2)把數(shù)據(jù)、日志、索引盡可能的放到不同的I/O設(shè)備上,這樣可以增加讀取速度;(3)根據(jù)查詢條件,建立索引,并且要優(yōu)化索引、優(yōu)化訪問方式,限制結(jié)果集的數(shù)據(jù)量,索引應(yīng)該盡量小,建議使用字節(jié)數(shù)小的列建立索引;(4)盡量使用數(shù)值型字段,若字段存儲數(shù)值型的字段盡量不要設(shè)計成字符型,否則會降低查詢和連接的性能,并會增加存儲開銷。
3.2.3 優(yōu)化分頁處理
數(shù)據(jù)庫查詢數(shù)據(jù)經(jīng)常會用到分頁處理,常規(guī)處理通常采用兩種方案:(1)使用內(nèi)存,查詢后在內(nèi)存中進(jìn)行分頁,缺點(diǎn)是占用內(nèi)存較大;(2)執(zhí)行存儲過程時在數(shù)據(jù)庫中分頁,缺點(diǎn)是依賴數(shù)據(jù)庫,查詢效率低。因此,分頁處理優(yōu)化也是對大數(shù)據(jù)處理的一個重要技術(shù)方法。
分頁處理時,可以考慮在內(nèi)存中預(yù)先加載進(jìn)一定頁數(shù)的數(shù)據(jù)來滿足部分?jǐn)?shù)據(jù)的需求,同時將所有列組合的數(shù)據(jù)進(jìn)行記錄。查詢的時候,首先到內(nèi)存中將查詢的條件與列組合的數(shù)據(jù)進(jìn)行比較,如果存在則在內(nèi)存中查詢需要的數(shù)據(jù),查詢結(jié)束后,刪掉第一頁最后的一個數(shù)據(jù)之前的所有數(shù)據(jù),另起一個監(jiān)控線程加載相應(yīng)條數(shù)進(jìn)內(nèi)存,這樣可以提高查詢的效率。
3.2.4 設(shè)計良好的數(shù)據(jù)存儲空間
對于大數(shù)據(jù)的處理,數(shù)據(jù)存儲在使用和維護(hù)中占據(jù)了核心地位。在數(shù)據(jù)量每天增長相當(dāng)大的情況下,如果采用傳統(tǒng)的存儲方式會占用相當(dāng)大的存儲空間。如何更快、更高效地獲取歷史快照數(shù)據(jù)也要依賴于優(yōu)良的數(shù)據(jù)存儲空間設(shè)計。因此,設(shè)計良好的數(shù)據(jù)存儲空間是進(jìn)行數(shù)據(jù)處理的基礎(chǔ)。極限存儲方案是當(dāng)前進(jìn)行大數(shù)據(jù)處理使用最多的數(shù)據(jù)存儲方案,很好地解決了因?yàn)橹貜?fù)存儲造成存儲空間浪費(fèi)的問題。極限存儲原理就是給數(shù)據(jù)庫中的記錄加上一個生命期。這樣數(shù)據(jù)庫中的任意一條記錄,由于存在確定的生命周期,一定對應(yīng)唯一的一個數(shù)據(jù)標(biāo)簽,而一個數(shù)據(jù)標(biāo)簽對應(yīng)符合該生命周期的記錄集合,對于歷史快照數(shù)據(jù),就可以劃分到不同的生命周期數(shù)據(jù)標(biāo)簽里去。在適當(dāng)?shù)膱龊舷率褂迷摲桨?,可以大大?jié)約存儲空間,減少/去除冗余數(shù)據(jù),降低存儲成本,提高歷史快照數(shù)據(jù)的訪問速度,表越大,極限存儲帶來的效果越是明顯。
4 結(jié)束語
大數(shù)據(jù)時代來了,大數(shù)據(jù)已經(jīng)成為現(xiàn)今業(yè)界最熱門研究課題,是未來的發(fā)展趨勢。隨著物聯(lián)網(wǎng)、4G網(wǎng)絡(luò)等的應(yīng)用,大數(shù)據(jù)從概念走向了價值化,形成了以大數(shù)據(jù)產(chǎn)業(yè)為核心的新興戰(zhàn)略性產(chǎn)業(yè)。大數(shù)據(jù)處理模式會多樣化并存,深度學(xué)習(xí)與研究大數(shù)據(jù)處理技術(shù),是對數(shù)據(jù)駕馭能力新的挑戰(zhàn)。有人預(yù)言:“大數(shù)據(jù)”所能帶來的巨大商業(yè)價值,將引領(lǐng)一場足以匹敵20世紀(jì)計算機(jī)革命的巨大變革。
參考文獻(xiàn)
[1] 黃訸等. 面向高性能計算機(jī)的海量數(shù)據(jù)處理平臺實(shí)現(xiàn)與評測[J].計算機(jī)研究與發(fā)展,2012(49).
[2] 趙浩然.論數(shù)據(jù)分區(qū)對海量數(shù)據(jù)處理的必要性[J].科學(xué)之友, 2011(33).
[3] 李莉.海量數(shù)據(jù)處理策略[J].無線互聯(lián)科技,2013(2).
[4] Apache Hadoop. [EB/OL]. http://hadoop.apache.org/.
[5] 翟巖龍等.基于Hadoop的高性能海量數(shù)據(jù)處理平臺研究 [J].計算機(jī)科學(xué),2013(3).
作者簡介:
韓江(1979-),男,碩士;主要研究方向和關(guān)注領(lǐng)域:數(shù)據(jù)庫應(yīng)用。endprint
【 摘 要 】 隨著大數(shù)據(jù)時代的到來,對大數(shù)據(jù)的處理變得越來越重要。本文對如何處理大數(shù)據(jù)進(jìn)行了分析,研究了大數(shù)據(jù)處理的相關(guān)技術(shù),包括數(shù)據(jù)存儲架構(gòu)、數(shù)據(jù)結(jié)構(gòu)處理、極限存儲處理等方面。最后,對大數(shù)據(jù)的未來發(fā)展進(jìn)行了展望。
【 關(guān)鍵詞 】 大數(shù)據(jù);數(shù)據(jù)處理;數(shù)據(jù)存儲
1 引言
隨著云計算、移動互聯(lián)、物聯(lián)網(wǎng)、新技術(shù)與應(yīng)用的不斷涌現(xiàn),大數(shù)據(jù)的處理變得越來越重要。根據(jù)統(tǒng)計數(shù)據(jù)顯示,超過50%的企業(yè)目前每日生成的數(shù)據(jù)量在1TB以上,超過10TB的有10%,而更讓人吃驚的是有5%的企業(yè)每日生成的數(shù)據(jù)量已經(jīng)達(dá)到了50TB以上。特別是在金融、互聯(lián)網(wǎng)、電信等行業(yè),幾乎已經(jīng)到了“數(shù)據(jù)就是業(yè)務(wù)本身”的地步。隨著大數(shù)據(jù)時代的到來,數(shù)據(jù)本身對于一個企業(yè)來說變得越來越有價值,如果企業(yè)不能有效利用數(shù)據(jù)挖掘商業(yè)價值,就不可能在現(xiàn)代商業(yè)中取得行業(yè)領(lǐng)先地位。
2 大數(shù)據(jù)處理難點(diǎn)
(1)數(shù)據(jù)量大 數(shù)據(jù)庫每天處理的數(shù)據(jù)量達(dá)到TB級、PB級甚至EB級,不僅給數(shù)據(jù)處理帶來了很大的難度,而且對數(shù)據(jù)存儲、服務(wù)器性能以及安全等方面都帶來了一系列問題。
(2)結(jié)構(gòu)化和非結(jié)構(gòu)化大量并存 存儲的大數(shù)據(jù)中不僅僅包括結(jié)構(gòu)化的數(shù)據(jù),也包括一些非結(jié)構(gòu)化的數(shù)據(jù),這些數(shù)據(jù)不僅通過數(shù)據(jù)庫結(jié)合在一塊,而且要并用一個統(tǒng)一平臺來解決所有的數(shù)據(jù)問題。
(3)數(shù)據(jù)的快速增長 由于大數(shù)據(jù)的增長速度一般是PB級增長,不僅要考慮到存儲系統(tǒng)的吞吐量以及CPU的并發(fā)處理能力,還要考慮到數(shù)據(jù)庫高度可擴(kuò)展、可伸縮等多方面的需求。比如:①擴(kuò)展方式要簡單,容量擴(kuò)充必須通過簡單易行的方式完成,維護(hù)升級的代價要低;②線性擴(kuò)展,不是依靠增加每個單個服務(wù)器,或者單個集群的能力,而是依靠簡單的添加服務(wù)器完成。
3 大數(shù)據(jù)處理技術(shù)方法
3.1 采用基于Hadoop架構(gòu)的高性能體系結(jié)構(gòu)計算機(jī)
3.1.1 Hadoop架構(gòu)簡介
Hadoop 是一個能夠?qū)Υ髷?shù)據(jù)進(jìn)行分布式處理的軟件框架,以一種可靠、高效、可伸縮的方式進(jìn)行處理的,Hadoop主要由分布式文件系統(tǒng)HDFS和編程模型MapReduce兩部分組成。HDFS提供了海量數(shù)據(jù)的存儲,MapReduce提供了對數(shù)據(jù)的計算。
3.1.2 搭建MapReduce系統(tǒng)架構(gòu)
高性能體系結(jié)構(gòu)計算機(jī)具有非常強(qiáng)大的計算能力以及存儲能力,因此可高效率地進(jìn)行大數(shù)據(jù)處理。在高性能體系結(jié)構(gòu)計算機(jī)上進(jìn)行大數(shù)據(jù)處理,首先要兼容原有應(yīng)用程序,還要支持 MapReduce 的編程模式,不能使用傳統(tǒng)的MPI編程模式,而必須在高性能計算機(jī)上部署MapReduce 架構(gòu),如圖1所示。
其次,要對高性能體系結(jié)構(gòu)計算機(jī)存儲系統(tǒng)的讀寫速度受限進(jìn)行改進(jìn),否則會成為整個系統(tǒng)性能的瓶頸。由于高并發(fā)帶來的對集群文件系統(tǒng)的資源競爭和沖突, Lustre文件系統(tǒng)不能充分發(fā)揮并行I/O性能的優(yōu)勢。嚴(yán)重影響了高性能計算機(jī)進(jìn)行海量數(shù)據(jù)處理的高效性,因此解決的主要方法就是緩解資源的競爭,增加集群文件系統(tǒng)的條帶化塊大小或直接去掉HDFS層,讓Lustre文件系統(tǒng)直接為MapReduce層服務(wù)。這兩種方法都可以解決文件系統(tǒng)的資源競爭,最大限度的發(fā)揮存儲系統(tǒng)的并行I/O性能。
3.2 數(shù)據(jù)結(jié)構(gòu)處理
3.2.1合理進(jìn)行數(shù)據(jù)分區(qū)
存儲大數(shù)據(jù)的數(shù)據(jù)倉庫容量一般都會達(dá)到GB級別,甚至有的達(dá)到了TB級別。隨著時間的增長,表中的數(shù)據(jù)量也會大規(guī)模的增長,不但影響著數(shù)據(jù)庫的運(yùn)行效率,也增大數(shù)據(jù)庫的維護(hù)難度。對表不同的訪問模式也可能會影響性能和可用性。通過合理的數(shù)據(jù)分區(qū)這些問題會得到較好的改善。數(shù)據(jù)分區(qū)可以使數(shù)據(jù)分的更小、更容易管理,減小磁盤I/O,系統(tǒng)負(fù)荷,從而提高系統(tǒng)的運(yùn)行效率。除了合理進(jìn)行數(shù)據(jù)分區(qū)外,建立索引也是一個非常必要的。建立良好的索引是進(jìn)行數(shù)據(jù)優(yōu)化的好幫手,但建立索引要考慮到具體情況,不管是組合索引、獨(dú)立索引,索引的填充因子和聚集、非聚集索引都要考慮。例如如果是建立復(fù)合索引,應(yīng)盡可能的讓索引順序與字段順序相一致,而且要考慮只有用到復(fù)合索引中的第一個字段作為條件時,才能使用建立的復(fù)合索引,否則建立的復(fù)合索引將不會被使用,特別是針對大表的分組、排序等字段。
3.2.2優(yōu)化查詢SQL語句
大數(shù)據(jù)進(jìn)行查詢處理過程中,優(yōu)化查詢的SQL語句對大數(shù)據(jù)查詢效率的影響非常大??梢酝ㄟ^很多方法進(jìn)行優(yōu)化:(1)盡量避免在 where 子句中使用!=或<>操作符 ,進(jìn)行 null 值判斷,使用 or 來連接條件,前置百分號%,對字段進(jìn)行表達(dá)式操作,函數(shù)操作等情況;(2)把數(shù)據(jù)、日志、索引盡可能的放到不同的I/O設(shè)備上,這樣可以增加讀取速度;(3)根據(jù)查詢條件,建立索引,并且要優(yōu)化索引、優(yōu)化訪問方式,限制結(jié)果集的數(shù)據(jù)量,索引應(yīng)該盡量小,建議使用字節(jié)數(shù)小的列建立索引;(4)盡量使用數(shù)值型字段,若字段存儲數(shù)值型的字段盡量不要設(shè)計成字符型,否則會降低查詢和連接的性能,并會增加存儲開銷。
3.2.3 優(yōu)化分頁處理
數(shù)據(jù)庫查詢數(shù)據(jù)經(jīng)常會用到分頁處理,常規(guī)處理通常采用兩種方案:(1)使用內(nèi)存,查詢后在內(nèi)存中進(jìn)行分頁,缺點(diǎn)是占用內(nèi)存較大;(2)執(zhí)行存儲過程時在數(shù)據(jù)庫中分頁,缺點(diǎn)是依賴數(shù)據(jù)庫,查詢效率低。因此,分頁處理優(yōu)化也是對大數(shù)據(jù)處理的一個重要技術(shù)方法。
分頁處理時,可以考慮在內(nèi)存中預(yù)先加載進(jìn)一定頁數(shù)的數(shù)據(jù)來滿足部分?jǐn)?shù)據(jù)的需求,同時將所有列組合的數(shù)據(jù)進(jìn)行記錄。查詢的時候,首先到內(nèi)存中將查詢的條件與列組合的數(shù)據(jù)進(jìn)行比較,如果存在則在內(nèi)存中查詢需要的數(shù)據(jù),查詢結(jié)束后,刪掉第一頁最后的一個數(shù)據(jù)之前的所有數(shù)據(jù),另起一個監(jiān)控線程加載相應(yīng)條數(shù)進(jìn)內(nèi)存,這樣可以提高查詢的效率。
3.2.4 設(shè)計良好的數(shù)據(jù)存儲空間
對于大數(shù)據(jù)的處理,數(shù)據(jù)存儲在使用和維護(hù)中占據(jù)了核心地位。在數(shù)據(jù)量每天增長相當(dāng)大的情況下,如果采用傳統(tǒng)的存儲方式會占用相當(dāng)大的存儲空間。如何更快、更高效地獲取歷史快照數(shù)據(jù)也要依賴于優(yōu)良的數(shù)據(jù)存儲空間設(shè)計。因此,設(shè)計良好的數(shù)據(jù)存儲空間是進(jìn)行數(shù)據(jù)處理的基礎(chǔ)。極限存儲方案是當(dāng)前進(jìn)行大數(shù)據(jù)處理使用最多的數(shù)據(jù)存儲方案,很好地解決了因?yàn)橹貜?fù)存儲造成存儲空間浪費(fèi)的問題。極限存儲原理就是給數(shù)據(jù)庫中的記錄加上一個生命期。這樣數(shù)據(jù)庫中的任意一條記錄,由于存在確定的生命周期,一定對應(yīng)唯一的一個數(shù)據(jù)標(biāo)簽,而一個數(shù)據(jù)標(biāo)簽對應(yīng)符合該生命周期的記錄集合,對于歷史快照數(shù)據(jù),就可以劃分到不同的生命周期數(shù)據(jù)標(biāo)簽里去。在適當(dāng)?shù)膱龊舷率褂迷摲桨福梢源蟠蠊?jié)約存儲空間,減少/去除冗余數(shù)據(jù),降低存儲成本,提高歷史快照數(shù)據(jù)的訪問速度,表越大,極限存儲帶來的效果越是明顯。
4 結(jié)束語
大數(shù)據(jù)時代來了,大數(shù)據(jù)已經(jīng)成為現(xiàn)今業(yè)界最熱門研究課題,是未來的發(fā)展趨勢。隨著物聯(lián)網(wǎng)、4G網(wǎng)絡(luò)等的應(yīng)用,大數(shù)據(jù)從概念走向了價值化,形成了以大數(shù)據(jù)產(chǎn)業(yè)為核心的新興戰(zhàn)略性產(chǎn)業(yè)。大數(shù)據(jù)處理模式會多樣化并存,深度學(xué)習(xí)與研究大數(shù)據(jù)處理技術(shù),是對數(shù)據(jù)駕馭能力新的挑戰(zhàn)。有人預(yù)言:“大數(shù)據(jù)”所能帶來的巨大商業(yè)價值,將引領(lǐng)一場足以匹敵20世紀(jì)計算機(jī)革命的巨大變革。
參考文獻(xiàn)
[1] 黃訸等. 面向高性能計算機(jī)的海量數(shù)據(jù)處理平臺實(shí)現(xiàn)與評測[J].計算機(jī)研究與發(fā)展,2012(49).
[2] 趙浩然.論數(shù)據(jù)分區(qū)對海量數(shù)據(jù)處理的必要性[J].科學(xué)之友, 2011(33).
[3] 李莉.海量數(shù)據(jù)處理策略[J].無線互聯(lián)科技,2013(2).
[4] Apache Hadoop. [EB/OL]. http://hadoop.apache.org/.
[5] 翟巖龍等.基于Hadoop的高性能海量數(shù)據(jù)處理平臺研究 [J].計算機(jī)科學(xué),2013(3).
作者簡介:
韓江(1979-),男,碩士;主要研究方向和關(guān)注領(lǐng)域:數(shù)據(jù)庫應(yīng)用。endprint