大數據出現的原因:
大多數的技術突破來源于實際的產品需要,大數據最初誕生于谷歌的搜索引擎中。隨著web2.0時代的發展,互聯網上數據量呈獻爆炸式的增長,為了滿足信息搜索的需要,對大規模數據的存儲提出了非常強勁的需要。基于成本的考慮,通過提升硬件來解決大批量數據的搜索越來越不切實際,于是谷歌提出了一種基于軟件的可靠文件存儲體系GFS,使用普通的PC機來并行支撐大規模的存儲。存進去的數據是低價值的,只有對數據進行過加工才能滿足實際的應用需要,于是谷歌又創造了MapReduce這一計算模型,該模型能夠利用集群的力量將復雜的運算拆分到每一臺普通PC上,計算完成后通過匯總得到最終的計算結果,這樣就能夠通過直接增加機器數量就獲得更好的運算能力了。
有了GFS和MapReduce之后,文件的存儲和運算得到了解決,這時候又出現了新的問題。GFS的隨機讀寫能力很差,而谷歌有需要一種來存放格式化數據的數據庫,原本通過單機的數據庫就能解決的問題到了谷歌那里就悲劇了,于是神器的谷歌就又開發了一套BigTable系統,利用GFS的文件存儲系統外加一個分布式的鎖管理系統Chubby就設計出來了BigTable這樣一個列式的數據庫系統。
在谷歌完成了上述的系統后,就把其中的思想作為論文發布出來了,基于這些論文,出現了一個用JAVA寫的類GFS開源項目Hadoop,最開始hadoop的贊助人是yahoo,后來這個項目成了Apche的頂級項目。
大數據的解決方案:
谷歌的那一套系統是閉源的,開源的Hadoop于是就廣泛傳播開來了。
?
和谷歌那套系統類似,Hadoop的最核心的存儲層叫做HDFS,全稱是Hadoop文件存儲系統,有了存儲系統還要有分析系統,于是就有了開源版本的MapReduce,類似的參照BigTable就有了Hbase。一開源之后整個系統用的人就多了,于是大家都像要各種各樣的特性。facebook的那些人覺得mapreduce程序太難寫,于是就開發了Hive,Hive就是一套能把SQL語句轉成Mapreduce的工具,有了這套工具只要你會SQL就可以來Hadoop上寫mapreduce程序分析數據了。對了,參考chubby,我們有了開源的ZooKeeper來作為分布式鎖服務的提供者。
由于Hadoop最開始設計是用來跑文件的,對于數據的批處理來說這沒什么問題,有一天突然大家想要一個實時的查詢服務,數據這么大,要滿足實時查詢首先要拋開的是mapreduce,因為它真的好慢。2008年的時候一家叫Cloudera的公司出現了,他們的目標是要做hadoop界的redhat,把各種外圍系統打包進去組成一個完整的生態系統,后來他們開發出來了impala,impala的速度比mapreduce在實時分析上的效率有了幾十倍的提升,后來hadoop的創始人Doug Cutting也加入了cloudera。這時候學院派也開始發力了,加州大學伯克利分校開發出來了Spark來做實時查詢處理,剛開始Spark的語法好詭異,后來慢慢出現了Shark項目,漸漸的使得Spark向SQL語法靠近。
未來的發展趨勢:
時代的發展決定了未來幾乎就要變成數據的時代了,在這樣的一個時代,大數據的需求越來越深,摒棄過去的抽樣調查,改為全量的統計分析,從一些原本無意義的數據中挖掘價值。當前大數據已經開始逐漸服務于我們的生活,搜索、科學、用戶分析。。。
為了進一步提供大數據的分析能力,內存計算的概念在未來還會持續很長的時間,通過內存計算,摒棄磁盤IO對性能的天花板作用,將運算的結果以實時的方式呈獻在我們面前。
大數據數量龐大,格式多樣化。大量數據由家庭、制造工廠和辦公場所的各種設備、互聯網事務交易、社交網絡的活動、自動化傳感器、移動設備以及科研儀器等生成。它的爆炸式增長已超出了傳統IT基礎架構的處理能力,給企業和社會帶來嚴峻的數據管理問題。因此必須開發新的數據架構,圍繞“數據收集、數據管理、數據分析、知識形成、智慧行動”的全過程,開發使用這些數據,釋放出更多數據的隱藏價值。
一、大數據建設思路
1)數據的獲得
大數據產生的根本原因在于感知式系統的廣泛使用。隨著技術的發展,人們已經有能力制造極其微小的帶有處理功能的傳感器,并開始將這些設備廣泛的布置于社會的各個角落,通過這些設備來對整個社會的運轉進行監控。這些設備會源源不斷的產生新數據,這種數據的產生方式是自動的。因此在數據收集方面,要對來自網絡包括物聯網、社交網絡和機構信息系統的數據附上時空標志,去偽存真,盡可能收集異源甚至是異構的數據,必要時還可與歷史數據對照,多角度驗證數據的全面性和可信性。
2)數據的匯集和存儲
數據只有不斷流動和充分共享,才有生命力。應在各專用數據庫建設的基礎上,通過數據集成,實現各級各類信息系統的數據交換和數據共享。 數據存儲要達到低成本、低能耗、高可靠性目標,通常要用到冗余配置、分布化和云計算技術,在存儲時要按照一定規則對數據進行分類,通過過濾和去重,減少存儲量,同時加入便于日后檢索的標簽。
3)數據的管理
大數據管理的技術也層出不窮。在眾多技術中,有6種數據管理技術普遍被關注,即分布式存儲與計算、內存數據庫技術、列式數據庫技術、云數據庫、非關系型的數據庫、移動數據庫技術。其中分布式存儲與計算受關注度最高。上圖是一個圖書數據管理系統。
4)數據的分析
數據分析處理:有些行業的數據涉及上百個參數,其復雜性不僅體現在數據樣本本身,更體現在多源異構、多實體和多空間之間的交互動態性,難以用傳統的方法描述與度量,處理的復雜度很大,需要將高維圖像等多媒體數據降維后度量與處理,利用上下文關聯進行語義分析,從大量動態而且可能是模棱兩可的數據中綜合信息,并導出可理解的內容。大數據的處理類型很多,主要的處理模式可以分為流處理和批處理兩種。批處理是先存儲后處理,而流處理則是直接處理數據。挖掘的任務主要是關聯分析、聚類分析、分類、預測、時序模式和偏差分析等。
5)大數據的價值:決策支持系統
大數據的神奇之處就是通過對過去和現在的數據進行分析,它能夠精確預測未來;通過對組織內部的和外部的數據整合,它能夠洞察事物之間的相關關系;通過對海量數據的挖掘,它能夠代替人腦,承擔起企業和社會管理的職責。
6)數據的使用
大數據有三層內涵:一是數據量巨大、來源多樣和類型多樣的數據集;二是新型的數據處理和分析技術;三是運用數據分析形成價值。大數據對科學研究、經濟建設、社會發展和文化生活等各個領域正在產生革命性的影響。大數據應用的關鍵,也是其必要條件,就在于“IT”與“經營”的融合,當然,這里的經營的內涵可以非常廣泛,小至一個零售門店的經營,大至一個城市的經營。
二、大數據基本架構
基于上述大數據的特征,通過傳統IT技術存儲和處理大數據成本高昂。一個企業要大力發展大數據應用首先需要解決兩個問題:一是低成本、快速地對海量、多類別的數據進行抽取和存儲;二是使用新的技術對數據進行分析和挖掘,為企業創造價值。因此,大數據的存儲和處理與云計算技術密不可分,在當前的技術條件下,基于廉價硬件的分布式系統(如Hadoop等)被認為是最適合處理大數據的技術平臺。
Hadoop是一個分布式的基礎架構,能夠讓用戶方便高效地利用運算資源和處理海量數據,目前已在很多大型互聯網企業得到了廣泛應用,如亞馬遜、Facebook和Yahoo等。其是一個開放式的架構,架構成員也在不斷擴充完善中,通常架構如圖2所示:
Hadoop體系架構
(1)Hadoop最底層是一個HDFS(Hadoop Distributed File System,分布式文件系統),存儲在HDFS中的文件先被分成塊,然后再將這些塊復制到多個主機中(DataNode,數據節點)。
(2)Hadoop的核心是MapReduce(映射和化簡編程模型)引擎,Map意為將單個任務分解為多個,而Reduce則意為將分解后的多任務結果匯總,該引擎由JobTrackers(工作追蹤,對應命名節點)和TaskTrackers(任務追蹤,對應數據節點)組成。當處理大數據查詢時,MapReduce會將任務分解在多個節點處理,從而提高了數據處理的效率,避免了單機性能瓶頸限制。
(3)Hive是Hadoop架構中的數據倉庫,主要用于靜態的結構以及需要經常分析的工作。Hbase主要作為面向列的數據庫運行在HDFS上,可存儲PB級的數據。Hbase利用MapReduce來處理內部的海量數據,并能在海量數據中定位所需的數據且訪問它。
(4)Sqoop是為數據的互操作性而設計,可以從關系數據庫導入數據到Hadoop,并能直接導入到HDFS或Hive。
(5)Zookeeper在Hadoop架構中負責應用程序的協調工作,以保持Hadoop集群內的同步工作。
(6)Thrift是一個軟件框架,用來進行可擴展且跨語言的服務的開發,最初由Facebook開發,是構建在各種編程語言間無縫結合的、高效的服務。
Hadoop核心設計
Hbase——分布式數據存儲系統
Client:使用HBase RPC機制與HMaster和HRegionServer進行通信
Zookeeper:協同服務管理,HMaster通過Zookeepe可以隨時感知各個HRegionServer的健康狀況
HMaster: 管理用戶對表的增刪改查操作
HRegionServer:HBase中最核心的模塊,主要負責響應用戶I/O請求,向HDFS文件系統中讀寫數據
HRegion:Hbase中分布式存儲的最小單元,可以理解成一個Table
HStore:HBase存儲的核心。由MemStore和StoreFile組成。
HLog:每次用戶操作寫入Memstore的同時,也會寫一份數據到HLog文件
結合上述Hadoop架構功能,大數據平臺系統功能建議如圖所示:
應用系統:對于大多數企業而言,運營領域的應用是大數據最核心的應用,之前企業主要使用來自生產經營中的各種報表數據,但隨著大數據時代的到來,來自于互聯網、物聯網、各種傳感器的海量數據撲面而至。于是,一些企業開始挖掘和利用這些數據,來推動運營效率的提升。
數據平臺:借助大數據平臺,未來的互聯網絡將可以讓商家更了解消費者的使用習慣,從而改進使用體驗。基于大數據基礎上的相應分析,能夠更有針對性的改進用戶體驗,同時挖掘新的商業機會。
數據源:數據源是指數據庫應用程序所使用的數據庫或者數據庫服務器。豐富的數據源是大數據產業發展的前提。數據源在不斷拓展,越來越多樣化。如:智能汽車可以把動態行駛過程變成數據,嵌入到生產設備里的物聯網可以把生產過程和設備動態狀況變成數據。對數據源的不斷拓展不僅能帶來采集設備的發展,而且可以通過控制新的數據源更好地控制數據的價值。然而我國數字化的數據資源總量遠遠低于美歐,就已有有限的數據資源來說,還存在標準化、準確性、完整性低,利用價值不高的情況,這大大降低了數據的價值。
三、大數據的目標效果
通過大數據的引入和部署,可以達到如下效果:
1)數據整合
·統一數據模型:承載企業數據模型,促進企業各域數據邏輯模型的統一;
·統一數據標準:統一建立標準的數據編碼目錄,實現企業數據的標準化與統一存儲;
·統一數據視圖:實現統一數據視圖,使企業在客戶、產品和資源等視角獲取到一致的信息。
2)數據質量管控
·數據質量校驗:根據規則對所存儲的數據進行一致性、完整性和準確性的校驗,保證數據的一致性、完整性和準確性;
·數據質量管控:通過建立企業數據的質量標準、數據管控的組織、數據管控的流程,對數據質量進行統一管控,以達到數據質量逐步完善。
3)數據共享
·消除網狀接口,建立大數據共享中心,為各業務系統提供共享數據,降低接口復雜度,提高系統間接口效率與質量;
·以實時或準實時的方式將整合或計算好的數據向外系統提供。
4)數據應用
·查詢應用:平臺實現條件不固定、不可預見、格式靈活的按需查詢功能;
·固定報表應用:視統計維度和指標固定的分析結果的展示,可根據業務系統的需求,分析產生各種業務報表數據等;
·動態分析應用:按關心的維度和指標對數據進行主題性的分析,動態分析應用中維度和指標不固定。
四、總結
基于分布式技術構建的大數據平臺能夠有效降低數據存儲成本,提升數據分析處理效率,并具備海量數據、高并發場景的支撐能力,可大幅縮短數據查詢響應時間,滿足企業各上層應用的數據需求。
評論
查看更多