綜上所述,大資料時代的資料存在如下幾個特點:多源異構、分布廣泛、動态增長、先有資料後有模式。正是這些與傳統資料管理迥然不同的特點,使得大資料時代的資料管理面臨着新的挑戰,下面會對其中的主要挑戰進行詳細分析。
資料的廣泛存在性使得資料越來越多地散布于不同的資料管理系統中,為了便于進行資料分析,需要進行資料內建。資料內建看起來并不是一個新的問題,但是大資料時代的資料內建卻有新的需求,是以也面臨着新的挑戰。
1)廣泛的異構性。傳統的資料內建也會面對資料異構的問題,但是在大資料時代這種異構性出現了新的變化。主要展現在:①資料類型從以結構化資料為主轉向結構化、半結構化、非結構化三者的融合。②資料産生方式的多樣性帶來了資料源的變化。傳統的電子資料主要産生于伺服器或者是個人計算機,這些裝置位置相對固定。随着移動終端的快速發展,手機、平闆電腦和gps等産生的資料量呈現爆炸式增長,且産生的資料帶有很明顯的時空特性。③資料存儲方式發生變化。傳統資料主要存儲在關系資料庫中,但越來越多的資料迫使人們開始采用新的資料存儲方式來應對資料爆炸,比如存儲在hadoop的hdfs中。這就必然要求在內建的過程中進行資料轉換,而這種轉換的過程是非常複雜和難以管理的。
2)資料品質。資料量大不一定就代表資訊量或者資料價值的增大,相反很多時候意味着資訊垃圾的泛濫。一方面很難有單個系統能夠容納下從不同資料源內建的海量資料;另一方面如果在內建的過程中僅僅簡單地将所有資料聚集在一起而不進行任何資料清洗,會使得過多的無用資料幹擾後續的資料分析過程。大資料時代的資料清洗過程必須更加謹慎,因為相對細微的有用資訊混雜在龐大的資料量中。如果資訊清洗的粒度過細,很容易将有用的資訊過濾掉;清洗的粒度過粗,又無法達到真正的清洗效果,是以在質與量之間需要進行仔細的考量和權衡。
傳統意義上的資料分析主要針對結構化資料展開,且已經形成了一整套行之有效的分析體系。首先利用資料庫來存儲結構化資料,在此基礎上建構資料倉庫,根據需要建構資料立方體進行聯機分析處理(online analytical processing,olap),可以進行多個次元的下鑽(drill-down)或上卷(roll-up)操作。對于從資料中提煉更深層次的知識的需求導緻資料挖掘技術的産生,并促使人們發明了聚類、關聯分析等一系列在實踐中行之有效的方法。這一整套處理流程在處理相對較少的結構化資料時極為高效。但是随着大資料時代的到來,半結構化和非結構化資料量的迅猛增長給傳統的分析技術帶來了巨大的沖擊和挑戰,主要展現在如下幾方面。
1)資料處理的實時性。随着時間的流逝,資料中所蘊含的知識價值往往也在衰減,是以很多領域對于資料的實時處理有需求。随着大資料時代的到來,更多應用場景的資料分析從離線轉向了線上,開始出現實時處理的需求,比如kdd 2012最佳論文[3]所探讨的實時廣告競價問題。大資料時代的資料實時處理面臨着一些新的挑戰,主要展現在資料處理模式的選擇及改進上。在實時處理的模式選擇中,主要有三種思路,即流處理模式、批處理模式以及二者的融合。相關研究成果在上一節已經有詳細介紹。雖然已有的研究成果很多,但是仍未有一個通用的大資料實時處理架構。各種工具實作實時處理的方法不一,支援的應用類型都相對有限,這導緻實際應用中往往需要根據自己的業務需求和應用場景對現有技術和工具進行改造。
2)動态變化環境中索引的設計。關系資料庫中的索引能夠加速查詢速率,但是傳統的資料管理中模式基本不會發生變化,是以在其上建構索引主要考慮的是索引建立、更新等的效率。大資料時代的資料模式随着資料量的不斷變化可能會處于不斷的變化之中,這就要求索引結構的設計要簡單、高效,能夠在資料模式發生變化時很快進行調整來适應。在資料模式變更的假設前提下設計新的索引方案将是大資料時代的主要挑戰之一。
3)先驗知識的缺乏。傳統分析主要針對結構化資料展開,這些資料在以關系模型進行存儲的同時就隐含了這些資料内部關系等先驗知識。比如我們知道所要分析的對象會有哪些屬性,通過屬性我們又能大緻了解其可能的取值範圍等。這些知識使得我們在進行資料分析之前就已經對資料有了一定的了解。而在面對大資料分析時,一方面是半結構化和非結構化資料的存在,這些資料很難以類似結構化資料的方式建構出其内部的正式關系;另一方面很多資料以流的形式源源不斷地到來,對這些需要實時處理的資料很難有足夠的時間去建立先驗知識。
隐私問題由來已久,計算機的出現使得越來越多的資料以數字化形式存儲在計算機中,網際網路的發展則使資料更加容易産生和傳播,資料隐私問題越來越嚴重。
1)隐性的資料暴露。很多時候人們會有意識地将自己的行為隐藏起來,試圖達到隐私保護的目的。但是網際網路,尤其是社交網絡的出現,使得人們在不同的地點産生越來越多的資料足迹。這種資料具有累積性和關聯性,單個地點的資訊可能不會暴露使用者的隐私,但是如果有辦法将某個人的很多行為從不同的獨立地點聚集在一起,他的隐私就很可能會暴露,因為有關他的資訊已經足夠多了,這種隐性的資料暴露往往是個人無法預知和控制的。從技術層面來說,可以通過資料抽取和內建來實作使用者隐私的擷取。而在現實中通過所謂的“人肉搜尋”的方式往往能更快速、準确地得到結果,這種人肉搜尋的方式實質就是衆包。大資料時代的隐私保護面臨着技術和人力層面的雙重考驗。
2)資料公開與隐私保護的沖突。如果僅僅為了保護隐私就将所有的資料加以隐藏,那麼資料的價值根本無法展現。資料公開是非常有必要的,政府可以從公開的資料中來了解整個國民經濟社會的運作,以便更好地指導社會運轉。企業則可以從公開的資料中了解客戶的行為,進而推出具有針對性的産品和服務,最大化其利益。研究者則可以利用公開的資料,從社會、經濟、技術等不同的角度來進行研究。是以大資料時代的隐私性主要展現在不暴露使用者敏感資訊的前提下進行有效的資料挖掘,這有别于傳統的資訊安全領域更加關注檔案的私密性等安全屬性的情況。統計資料庫資料研究中最早開展資料隐私性技術方面的研究,近年來此項技術逐漸成為相關領域的研究熱點,比如很多學者緻力于隐私保護資料挖掘[4]方面的研究。主要集中于研究新型的資料釋出技術,嘗試在盡可能少地損失資料資訊的同時最大化地隐藏使用者隐私。但是資料資訊量和隐私之間是有沖突的,是以尚未出現非常好的解決辦法。dwork于2006年提出了新的差分隐私(differential privacy)[5]
方法。差分隐私保護技術可能是解決大資料中隐私保護問題的一個方向,但是這項技術離實際應用還很遠。
3)資料動态性。大資料時代資料的快速變化除了要求有新的資料處理技術應對之外,也給隐私保護帶來了新的挑戰。現有隐私保護技術主要基于靜态資料集,而在現實中資料模式和資料内容時刻都在發生着變化。是以在這種更加複雜的環境下實作對動态資料的利用和隐私保護将更具挑戰性。
在能源價格上漲、資料中心存儲規模不斷擴大的今天,高能耗已逐漸成為制約大資料快速發展的一個主要瓶頸。從小型叢集到大規模資料中心都面臨着降低能耗的問題,但是尚未引起足夠多的重視,相關的研究成果也較少。在大資料管理系統中,能耗主要由兩大部分組成:硬體能耗和軟體能耗,二者之中又以硬體能耗為主。在理想狀态下,整個大資料管理系統的能耗應該與系統使用率成正比。但是實際情況并不符合預期,系統使用率較低時仍然有較高的能量消耗[6]。針對這個問題,《紐約時報》和麥肯錫公司經過一年的聯合調查,最終在《紐約時報》上發表文章“power, pollution and the internet”[7]。調查顯示google資料中心年耗電量約為300萬瓦,而facebook則在60萬瓦左右。最令人驚訝的是在這些巨大的能耗中,隻有6%~12%的能量被用來響應使用者的查詢并進行計算。絕大部分的電能用以確定伺服器處于閑置狀态,以應對突如其來的網絡流量高峰,這種類型的功耗最高可以占到資料中心所有能耗的80%。從已有的一些研究成果來看,可以考慮以下兩個方面來改善大資料能耗問題。
1)采用新型低功耗硬體。從《紐約時報》的調查中可以知道絕大部分的能量都耗費在磁盤上。在空閑的狀态下,傳統的磁盤仍然具有很高的能耗,并且随着系統使用率的提高,能耗也在逐漸升高。新型非易失存儲器件的出現給大資料管理系統帶來了新的希望,如閃存、pcm等新型存儲硬體具有低能耗的特性。雖然随着系統使用率的提高,閃存、pcm等的能耗也有所升高,但是其總體能耗仍遠遠低于傳統磁盤。
2)引入可再生的新能源。資料中心所使用的電能絕大部分都是從不可再生的能源中産生的。如果能夠在大資料存儲和進行中引入諸如太陽能、風能之類的可再生能源,将在很大程度上緩解對不可再生能源的消耗問題。這方面的工作很少,參考文獻[8]探讨了如何利用太陽能建構一個綠色環保的資料庫。
硬體的快速更新換代有力地促進了大資料的發展,但是這也在一定程度上造成了大量不同架構硬體共存的局面。日益複雜的硬體環境給大資料管理帶來的主要挑戰有如下兩點。
1)硬體異構性帶來的大資料處理難題。整個資料中心(叢集)内部不同機器之間的性能會存在明顯的差别,因為不同時期購入的不同廠商的伺服器在iops、cpu處理速度等性能方面會有很大的差異。這就導緻了硬體環境的異構性,而這種異構性會給大資料的處理帶來諸多問題。一個典型的例子就是在mapreduce任務過程中,其總的處理時間很大程度上取決于map過程中處理時間最長的節點。如果叢集中硬體的性能差異過大,則會導緻大量的計算時間浪費在性能較好的伺服器等待性能較差的伺服器上。在這種情況下伺服器的線性增長并不一定會帶來計算能力的線性增長,因為“木桶效應”制約了整個叢集的性能。一般的解決方案是考慮硬體異構的環境下将不同計算強度的任務智能地配置設定給計算能力不同的伺服器,但是當這種異構環境的規模擴充到數以萬計的叢集時問題将變得極為複雜。
2)新硬體給大資料處理帶來的變革。所有的軟體系統都建構在傳統的計算機體系結構(即cpu-記憶體-硬碟三級結構)之上。cpu的發展一直遵循着摩爾定律,且其架構已經從單核轉入多核,是以需要深入研究如何讓軟體更好地利用cpu多核心之間的并發機制。由于機械特性的限制,基于磁性媒體的機械硬碟(hard disk drive,hdd)的讀寫速率在過去幾十年中提升不大,而且未來也不太可能出現革命性提升。基于閃存的固态硬碟(solid state disk,ssd)的出現從硬體層為存儲系統結構的革新提供了支援,為計算機存儲技術的發展和存儲能效的提高帶來了新的契機。ssd具有很多優良特性,主要包括極高的讀寫性能、較好的抗震性、較低的功耗、較小的體積等,是以正得到越來越廣泛的應用。但是直接将ssd應用到現有的軟體上并不一定會帶來軟體性能的大幅提升,比如ssd的讀寫速率是hdd的60~150倍,基于ssd的資料庫系統的查詢時間卻僅僅提升了不到10倍[9]。
二者之間的巨大差距主要是由ssd的一些特性造成的,這些特性包括ssd寫前擦除特性導緻的讀寫操作代價不對稱、ssd存儲晶片的擦除次數有限等。軟體設計之時必須仔細考慮這些特性才能夠充分利用ssd的優良特性。與大容量磁盤和磁盤陣列相比,固态硬碟的存儲容量相對較低,機關容量的價格遠高于磁盤,不同類型的固态硬碟産品性能差異較大。且将固态硬碟直接替換磁盤應用到現有的存儲體系中難以充分發揮其性能。是以現階段可以考慮通過建構hdd和ssd的混合存儲系統來解決大資料處理問題。目前混合存儲系統的實作主要有三種思路:hdd作為記憶體的擴充充當ssd寫緩沖;hdd和ssd同時用作二級存儲;ssd用作記憶體的擴充充當hdd讀寫緩沖。國外的google、facebook,國内的百度、淘寶等公司已經開始在實際營運環境中大規模使用混合存儲系統來提升整體性能。在這三級結構之中,記憶體的發展處于一個相對緩慢的階段,一直沒有出現革命性變化。建構任何一個軟體系統都會假設記憶體是一個容量有限的易失結構體。随着以pcm為代表的scm的出現,未來的記憶體極有可能會兼具現在記憶體和磁盤的雙重特性,即處理速度極快且非易失。雖然pcm尚未有可以大規模量産的産品推出,但是各大主流廠商都對其非常重視,三星電子在2012年國際固态電路會議(isscc 2012)上發表了采用20 nm工藝制程的容量為8 gb的pcm元件。一旦pcm能夠大規模投入使用,必将給現有的大資料處理帶來一場根本性變革。譬如前面提到的流處理模式就可以不再将記憶體的大小限制作為算法設計過程中的一個主要考慮因素。