內容簡介
《縱橫大數據:雲計算數據基礎設施》編輯推薦:1.NoSQL,NewSQL,
Hadoop,InfiniData等各種雲計算、大數據技術全面解讀。2.《縱橫大數據:雲計算數據基礎設施》通過對企業
大數據戰略、數據架構規劃、大數據和
雲計算技術的深入解析,高屋建瓴又深入淺出地解答了大數據,雲計算上的重要的方向性和技術性問題。3.甲骨文大中華區技術戰略部總經理劉松、中科院博導劉世平等6位業內專家聯袂推薦。4.十二五國家重點圖書出版規劃項目。
大數據的概念很火,但人們對它的認識卻是混亂的:有人說大數據就是指所有的數據,有人說大數據是指線上
行為、日誌等半結構/非結構化的數據形態,有人說大數據就是以Hadoop為代表的新技術……到底什麼是大數據?同樣風風火火了很久的雲計算與大數據有什麼關係?令人眼花繚亂的眾多大數據技術的本質是什麼?各有什麼優缺點?爭論不休的“小變大”與“大變小”技術策略到底孰正孰邪?企業究竟應該如何定位與使用大數據,難道是為了Hadoop而Hadoop?未來的技術方向究竟如何?本書結合現代企業
數據管理實踐,從策略、技術、套用、企業數據架構等多個維度,體系化地對大數據及相關技術進行了全面深入的論述:首先對大數據相關概念予以澄清;接著深入剖析各種大數據技術的內在本質,指出其各自的優缺點、適用場景與相互關係;同時對大數據技術“分”與“合”這兩種廣受爭議的技術策略的內在聯繫進行了分析與討論,明確指出現代數據管理技術的發展趨勢;最後結合大數據時代企業新一代數據架構規劃的實際,對大數據及相關技術在企業數據體系中的具體定位給出了切實可行的建議,並且面向雲數據中心建設,提出了大數據云——雲計算數據基礎設施的概念與方法。
作者簡介
北京大學計算科學技術系博士後,中國航空史研究會會員,
科技部中小企業創新基金評審專家,第一屆中國軟體十大傑出青年候選人。1992年起從事軟體的設計、開發與管理工作,涉及信息系統、數據管理、圖形圖像、嵌入式系統及工業設計與生產等多個領域,目前為止主持設計與開發大中型軟體系統與產品二十餘項;在國內外核心期刊上發表科技論文20餘篇,被美國EI《工程索引》檢索6篇。曾任北京北大青鳥信息工程有限責任公司總工程師,北京青鳥華光科技有限公司技術管理部部長、總經理助理、總工程師,大唐微電子科技有限公司高級項目經理等職;自2003年起,在北美從事軟體系統分析與設計工作近七年之久。現任北京安德爾國際軟體有限公司總經理,董事,北京先進數通科技有限公司BI事業部
首席架構師。科技部中小企業創新基金評審委員中國航空史研究會會員公安部安防技術專家委員會委員中國青年科技工作者協會會員
圖書目錄
第1部分 大數據概論
第1章 大數據與雲計算2
1.1雲計算概論3
1.2大數據概論4
1.2.1現代數據管理需求分析4
1.2.2大數據的引入9
1.2.3大數據的定義與特徵10
1.2.4大數據與網際網路12
1.2.5大數據戰略、大數據與大數據技術14
1.3大數據的技術實現——雲計算15
1.4本章小結16
第2章 關係資料庫的挑戰與應對17
2.1關係資料庫技術的核心特徵18
2.2主流關係資料庫的挑戰22
2.2.1經典DBMS的挑戰22
2.2.2SharedDisk23
2.2.3SharedNothing24
2.3改進型關係資料庫26
2.3.1技術改進26
2.3.2主要產品代表30
2.4本章小結40
第3章 非SQL技術簡介41
3.1大數據技術家族42
3.1.1NoSQL42
3.1.2關係資料庫聯邦NewSQL42
3.1.3分散式海量檔案管理43
3.1.4MapReduce43
3.2分與合——雲計算的兩種技術路線44
3.3本章小結44
第2部分 “分”為雲——數據切分
第4章 NoSQL46
4.1NoSQL的引入47
4.1.1概念詮釋與特徵分析47
4.1.2NoSQL的本質50
4.2NoSQL家族52
4.2.1NoSQL產品目錄與分類52
4.2.2Hadoop之HBase54
4.2.3Facebook之Cassandra58
4.2.4MongoDB與CouchDB61
4.2.5OracleNoSQLDB63
4.2.6Memcached與Redis65
4.2.7圖資料庫Neo4J65
4.2.8其他NoSQL資料庫67
4.2.9問題與疑惑67
4.3NoSQL技術探研68
4.3.1NoSQL理論基礎68
4.3.2NoSQL技術手段75
4.3.3NoSQL技術解析83
4.4NoSQL與關係資料庫88
4.5本章小結89
第5章 NewSQL——關係資料庫聯邦90
5.1資料庫聯邦的引入91
5.1.1企業業務數據管理面臨的問題91
5.1.2垂直分庫92
5.1.3水平分表93
5.1.4讀寫分離95
5.1.5聯邦的引入97
5.2“聯邦”的設計與實踐99
5.2.1企業級“聯邦”架構設計99
5.2.2公共基礎服務設計103
5.2.3聯邦的元資料庫106
5.2.4聯邦的套用實踐107
5.3“聯邦”技術分析108
5.3.1關於“垂直分庫”108
5.3.2如何“水平分表”110
5.3.3關於“讀寫分離”112
5.3.4基本方法——分布與聚合114
5.3.5關於分散式事務116
5.3.6關聯操作117
5.2.7冗餘策略119
5.2.8異步解耦策略120
5.2.9使用快取122
5.2.10其他問題123
5.4資料庫聯邦、NoSQL與主流關係資料庫124
5.4.1技術與套用——八仙過海,各顯神通124
5.4.2網際網路的神話126
5.5本章小結128
第6章 檔案系統聯邦129
6.1問題的引入130
6.1.1關於幾個數據概念的澄清130
6.1.2檔案數據管理的困難131
6.1.3檔案系統聯邦的引入133
6.2典型開源技術介紹135
6.2.1MogileFS135
6.2.2FastDFS136
6.2.3MogileFS與FastDFS的對比138
6.3技術分析139
6.4本章小結140
第7章 平民化的分布計算——MapReduce141
7.1分散式計算概述142
7.1.1幾個概念的澄清142
7.1.2分散式計算技術綜述143
7.1.3MapReduce的引入147
7.2MapReduce技術介紹148
7.2.1設計思想148
7.2.2MapReduce框架介紹152
7.3MapReduce技術分析160
7.3.1關於效率160
7.3.2關於擴展性162
7.3.3關於可靠性與可用性163
7.3.4關於MapReduce與關係資料庫164
7.3.5關於適用的數據類型167
7.3.6關於數據存儲與管理168
7.4MapReduce的套用實踐169
7.5本章小結170
第8章 後Hadoop時代171
8.1Hadoop體系及其困惑172
8.2Google的新三駕馬車173
8.2.1新一代搜尋引擎Caffeine173
8.2.2大規模圖處理系統Pregel174
8.2.3Dremel——秒級實現PB級數據分析175
8.3SymphonyMapReduce181
8.4後Hadoop時代即將來臨181
8.5本章小結183
第9章 InfiniData—一種關係型雲資料庫的設計與實踐184
9.1現代企業數據管理需求再分析185
9.1.1新的企業數據需求——海量關係數據管理185
9.1.2技術分析187
9.2關係型雲資料庫架構設計188
9.2.1關係型雲資料庫的引入188
9.2.2技術架構設計189
9.3雲存儲層192
9.3.1邏輯架構193
9.3.2物理架構194
9.3.3關係模型雲存儲元196
9.4雲計算層198
9.4.1MapReduce雲計算引擎198
9.4.2集群式雲計算引擎200
9.4.3兩種引擎的比較201
9.5雲存儲索引層202
9.5.1存儲索引的管理202
9.5.2索引雲運行時動態創建203
9.6技術分析203
9.7本章小結205
第3部分 雲計算的分與合
第10章 合為“雲”——數據整合208
10.1數據整合的需求分析209
10.2存儲整合雲210
10.3資料庫整合雲211
10.4本章小結213
第11章 關於分與合的討論214
11.1困惑——分與合,孰是孰非?215
11.2分為技,合為神216
11.3分為雨,合為雲——大數據云217
11.4數據管理技術發展趨勢總結219
11.4.1數據管理物理基礎設施發展趨勢219
11.4.2數據管理軟基礎設施發展趨勢220
11.5本章小結221
第12章 企業大數據技術體系與雲計算數據基礎設施222
12.1現代企業數據管理需求再分析223
12.2新一代企業數據體系建設225
12.2.1新一代企業數據體系建設的定義與內容225
12.2.2新一代企業數據分類體系228
12.2.3新一代企業數據分布與流轉規劃230
12.3大數據技術在企業數據架構中的定位234
12.3.1技術規劃戰略234
12.3.2大數據技術架構規劃235
12.3.3典型場景——電子渠道線上行為分析238
12.4雲計算數據基礎設施概念的引入240
12.5本章小結242
後記——超越技術243
參考文獻245
序言
“雲計算”與“大數據”應該說是目前IT界最為熱門的兩個概念了。雲計算以各種軟硬體資源新的消費與交付模式為核心理念,被普遍認為將會成為未來社會最為深遠的革新。而現實卻是:在多“雲”的天空,成功的實踐卻少得可憐,致使其很多情況下只是充當了一個時髦的噱頭。
令人遺憾的是,如今風頭已遠遠蓋過“雲計算”的“大數據”,其現實情況與此類似。大數據概念最初是伴隨著Hadoop等開源技術的推廣而出現的,在國內外眾多網際網路公司依靠它們取得巨大成功的強力推動下,傳統數據管理技術的地位受到了嚴重的挑戰,似乎不知Hadoop、不用Hadoop就會落後!但如何才能在本企業或者某個具體需求中正確有效地使用這些新技術呢?這至今依然是眾多企業技術決策者的困惑。
大多數企業目前對大數據潮流的熱烈回響其實是“雷聲大,雨點小”,其中相當一部分是不分青紅皂白,純粹為了Hadoop而Hadoop,很少有產生實際成效的案例。本書認為,要正確回答這些問題,給出合適的決策,必須對這些技術本身進行較為深入的了解與分析,然後結合自己企業的實際,做出自己的判斷。任何其他企業的經驗都不可以照搬照抄;任何資料中關於各種技術的適用場景描述,即使是正確的,也都有其特殊的上下文環境,不可以當成普遍真理去盲目遵從。這裡所說的對技術的了解,並不是指具體如何去使用它,而是指其內在本質、特點與相互聯繫,這些往往比使用方法更重要,也是本書區別於其他大數據資料的主要特點之一。
首先,讓我們看看雲計算與大數據的關係,目前人們對此的理解更是混亂不堪,有人認為兩者完全不同,有人則認為大數據技術其實就是雲計算。對“雲”,最開始,人們普遍認為那是一種採用一堆閒散資源完成一件重大任務的技術。後來,人們又意識到現代社會對“雲”的詮釋,其實更多的是指一種以服務為主的商業模式,而不是一種技術。現在,絕大多數人對“雲”的理解停留於此,認為“雲計算”與技術無關的人大都是這種思路。但在對“雲”業務模式的實踐中卻發現,要搞“雲”服務,必須從技術手段與商業模式兩個維度同時入手才有意義,只擁有其中任何一個方面都是不行的,甚至可以說前者要比後者重要得多。大多數情況下,在“雲”能適用的領域內,如果沒有前者,後者所能提供的服務水平自然也就很有限,從而也就自然失去了“雲”的含義。所以說,雲計算的本質是商業模式,但其核心卻仍然是技術問題。
而雲在技術層面的核心問題又是什麼呢?有人認為是“小變大”的分散式計算,有人認為是“大變小”的虛擬化,而本書認為,雲計算最核心的問題是數據,具體地講,是現代業務環境下的數據管理問題,也就是能實現海量、多類型、高負載、高性能、低成本需求的數據管理技術,這實際上就是傳統數據管理技術在現代的最大挑戰。這其中最耀眼的,就是各種新興的大數據家族成員的出現,包括開源體系的Hadoop、各種NoSQL資料庫、NewSQL資料庫(關係資料庫聯邦)、
分散式檔案系統等,甚至還包括非開源體系的新一代關係資料庫。這樣看來,“大數據”應該是“雲計算”業務模式得以實現在數據管理層面的核心技術支撐,兩者密不可分。
而從純技術的角度看,“雲計算”概念最初出現時就是指採用網路互聯起來的設備共同完成一項龐大任務的技術策略,而Hadoop等流行大數據技術的核心思路大多如此。因此,我們又可以說:“雲計算”是大數據的技術實現方法。這便是雲計算與大數據的聯繫,兩者無論是在業務上,還是技術上,都是相互依存的。一句話,無論叫什麼名稱,其實都是代表現代IT發展的最新進展而已。
再來看看各種流行的大數據技術本身,包括Hadoop,NoSQL,NewSQL,甚至一些新一代的關係資料庫等。對它們,在現代數據管理領域內,目前的狀態卻是:人們普遍困惑的並不是能不能掌握這些技術的具體用法,而是到底什麼時候,在什麼場景下,如何定位與使用這些技術?這主要表現在以下幾個方面。
一是如何定位新舊技術。即指新興的以Hadoop為代表的開源技術,與傳統的關係資料庫技術,到底是新技術徹底顛覆傳統技術,還是兩者共存?如果是共存,如何共存?這是目前各個企業普遍感到困惑的最重要的問題。
二是部分技術人員對新事物只是盲從。大家在套用實踐中或多或少地會遇到一些困難,於是很多技術人員就會把希望寄托在新出現的技術上,認為只要一用上如Hadoop或NoSQL這些新東西,目前的問題就會迎刃而解。接下來就立即緊張地投入到新技術的學習與使用上去,而不做是否適合自己需求的合理判斷。很顯然,這種對新技術的崇拜是盲目的。
三是各種技術之間出現了互相攻擊、互相否定的態勢。一度以來,傳統的主流關係資料庫(如Oracle,DB2等)在實踐中出現了一些問題,主要是對高負荷環境下的海量數據套用出現了力不從心的現象,同時,其水平擴展性的限制與高昂的成本問題使客戶越來越難以忍受。於是,一些非關係型的NoSQL資料庫,或者一些低端資料庫集群方案(如MySQL集群)就在一些場合替代了主流的商業資料庫,並且表現出很優秀的性價比;另外,有些企業在分析領域也出現了以Hadoop MapReduce等開源產品全面替代關係型數據倉庫的現象。於是,便出現了一種思潮,認為關係資料庫最終將退出歷史舞台。而另有一部分人則認為,所謂極其成功的新技術,只是曇花一現的暫時現象而已,傳統的關係資料庫經過改良以後,依然會是數據管理領域的王者,其他的技術會像30多年前關係資料庫與其他數據管理技術之爭的結果一樣,逐漸消失。這些觀點中,大多都是憑直覺、憑感覺、憑個人經驗的判斷得出,雖然不能說是武斷,但如果沒有令人信服的技術分析做支撐,就很難說誰對誰錯。
四是新技術本身在實踐中也出現了很多的問題。例如Hadoop MapReduce,雖然已經出現了Hadoop 2.0中的各項重要改進,但相信只要是真正用過它的人都知道,其在方便性、可靠性、可用性、效率等方面都還很不盡如人意。筆者記得一位很熟悉Hadoop的朋友說:“如果企業能用關係資料庫解決問題,就儘量不要用它!”再如Twitter放棄了用Cassandra替代MySQL的決策,Digg使用Cassandra後出現的一系列嚴重問題等,都使很多人開始重新審視這些新技術。
其實,究其根本,以上現象出現的主要原因是:人們只是去學習如何使用這些新技術,卻很少獨立思考,對它們進行較為深入的學習與剖析;很少在設計思想、技術架構、內在本質等方面將它們與其他技術進行對比,以能在真正掌握後,做出屬於自己、適合自己的判斷。而這些又正是本書的主體內容。
如果在資料庫技術領域繼續探究,會發現NoSQL技術雖然適合海量數據的快速存取,卻無法滿足較複雜的關係模型數據管理及人們對習慣使用SQL語言的要求,而標準的關係資料庫在水平擴展性上又嚴重受限。那么,是否存在一種技術,既可以使用關係模型存儲數據,使用SQL運算元據,又可以像NoSQL一樣方便擴展?於是,本書還與讀者分享了筆者自主研發的一個關係型雲資料庫的設計與實踐,它既不同於目前流行的Hadoop/NoSQL等開源技術,也不同於傳統的關係資料庫,是一種介於兩者之間的技術模式,目前的狀態正好滿足Hadoop與傳統關係資料庫都不太適用的企業級海量歷史數據管理的需求,並已經在實踐中取得一定的成果。接著,由該自主產品的設計實踐活動出發,我們產生了對Hadoop本身許多固有技術問題更大膽的、更進一步的深入思考:PB級海量數據的批量分析能不能比Hadoop再提高一個數量級,例如,達到秒級?在保守的認識中,這樣的要求似乎是不合理的,也是不可能實現的。然而大數據領域最新的技術進展—Hadoop的締造者Google近年來一系列更前沿的、被稱為“Google新三駕馬車”的研究成果,通過模式(Schema)的回歸與精巧的設計,已經向這樣似乎是“不可能的任務”的宏偉目標邁出了一大步。這使我們意識到:技術的發展瞬息萬變,Hadoop本身已不見得有多么先進了,想要在實踐中做出正確的決策,就必須不斷學習,勇於創新,不斷經歷破與立的過程,而不能故步自封,原地不動。
除了需要對各種大數據技術手段進行深入剖析以外,當今IT界還在雲計算技術兩個不同的技術策略上有著廣泛的爭議,即“分”為雲與“合”為雲,前者是指數據切分後以小變大,後者是指以大變小,將分散的小資源集中整合起來管理後,再將資源進行統一的按需調度與分配。兩者都稱自己是雲計算技術(或者說是大數據技術)的正宗,相互攻擊與否定的現象極為激烈,並且各自都有堅實的成功實踐為基礎。表現最明顯的就是以TB為代表的新興網際網路技術力量與IBM、Oracle等老牌的資料庫廠商之間關於以“分”為主的開源技術及以“合”為主的一體機技術之間的爭論與競爭,可以說已經到了白熱化的階段。他們各說各話,各有千秋,已經成為企業技術決策者的主要困惑之一。而實際上,經過研究與分析,很容易就可以發現,他們所爭論的“分”與“合”,看起來是完全相反的,實際上並不矛盾,其實是你中有我,我中有你,兩者是有機結合的統一體,在現代數據管理的需求中都有各自的定位。企業所要做的並不是對技術策略進行非你即他的選擇,而是根據自己的實際情況與需求,對各種技術與產品進行合理的定位;同時,更加重要的工作並不是某一項技術的正確定位與使用,而是能站在雲數據中心建設的高度,將傳統關係資料庫資源與Hadoop集群資源集中起來形成
PaaS平台,再對外提供分散的、數據相關的雲服務,包括資料庫雲與Hadoop平台雲,可以將之統稱為大數據云。將大數據的話題提高到這樣的層面,雖然相關的資源池調度與分配技術也非常重要,但更重要的卻已經是面向雲計算的大數據服務模式了。
另一方面,雖然關係資料庫將與Hadoop等技術共存的思想被大多數人接受,也是本書所認同的觀點,但廣大讀者可能還注意到一個現象:新興的Hadoop/NoSQL等非SQL技術在不斷發展的過程中,已經在逐步引進一些原本屬於SQL技術體系的功能,如索引與事務;而關係資料庫領域,也在逐步將這些新興的技術引入其技術體系,如AsterData與最新Oracle 12C所具備的InDB MapReduce功能,都是除原有的SQL引擎以外,在其資料庫內引入MapReduce處理引擎。那么,未來數據管理技術的發展趨勢究竟如何呢?我們說,在物理基礎設施上,分散式集群架構應該是未來發展的大趨勢,而在軟基礎設施層面,雖然SQL與非SQL技術體系在相當長的時間內會共存,但未來的趨勢是相互融合的。現在看來,起碼對數據管理技術來講,開源是大趨勢,摒棄產品銷售為主導的商業模式,以技術服務為主體應該是各大廠商應該儘早考慮的策略。
在本書最後,筆者結合企業數據架構規劃的實際,針對當今各個企業在回響大數據潮流時最為關心、最為困惑的問題:“到底如何在本企業實施與推廣大數據”給出了切實可行的建議。可以看到,企業引入大數據的本質就是:以適合更多更廣的數據源,以及提供更強大的數據管理處理能力為目標,面向新時代的業務規劃(如網際網路金融),對現有數據體系的各個層面(包括採集、傳輸、加工、集成、分析、展現等)進行全面改造,推出大數據時代的新一代企業級數據架構,並將其作為現代企業IT架構的重要組成部分之一。筆者認為,企業引入雲計算與大數據的戰略思想應該是:“業務上是改造,技術上是改進;業務上是創新,技術上是補充”,僅供企業參考。
最後藉此機會向王建波、李鵬、葛蓀葳等朋友表示感謝,與他們的討論使我受益匪淺,也一併感謝所有對我的寫作有過幫助的人。希望本書是一個成功的嘗試,同時也希望能為廣大讀者與企業的相關設計、規劃與實踐活動提供有用的借鑑與幫助。
何小朝
2014年2月
名人推薦
大數據概念雖然很火,但對企業來講,卻依然存在很多亟待解決的問題:以Hadoop為代表的新興技術在網際網路企業取得了巨大的成功,而金融、電信等傳統行業應該如何借鑑?這些新興技術與過去我們熟悉的關係資料庫技術之間是什麼關係,它們會徹底顛覆關係資料庫嗎?各種大數據技術的本質特徵究竟是什麼?在現代企業數據體系建設中,新興的Hadoop等技術到底應該如何正確定位?本書作者結合自身經驗對這些問題進行了解答,並且可以引發企業結合自己的實際進行深入的思考,值得一讀。
——中國建設銀行廈門開發中心總工程師陳銘新
關於雲計算、大數據、網際網路等互相滲透、依存的概念,目前著述眾多,其角度不同,對象各異,但缺乏一個從策略到實踐的清晰指南。何博士結合自己在大數據和雲計算上的豐富經驗,通過企業大數據戰略、數據架構規劃、大數據和雲計算技術的深入解析,高屋建瓴又深入淺出地解答了大數據、雲計算上重要的方向性和技術性問題。本書觀點犀利,有戰略高度,有技術細節,自成體系。對企業大數據策略的建立、技術方向的確定和具體實施有重要指導意義。
——泰康人壽首席信息官劉大力
2013年年初就流行一個說法:2013年是大數據元年。現在看來這個說法一點不為過。隨著網際網路金融、移動套用的火爆,大數據已經不再是一個模糊的、深不可測的概念,它的相關套用已經開始進入並且影響人們的日常生活,很多企業也把大數據提升到公司的戰略發展層面加以考慮。在大數據套用火爆的環境下,很多人卻忽略了它的底層技術架構。事實上,根據不同的套用需求,選擇合適的大數據技術,規劃合適的基礎技術架構,以應對未來的發展,對於企業的大數據戰略來說仍然是至關重要的。本書作者何小朝博士長期從事並行處理、雲計算、Hadoop等領域的諮詢、規劃和研發工作,本書充分體現了小朝在此領域的經驗積累,緊密結合企業數據建設實踐,對企業的大數據規劃建設給出具體實用的指導意見,通過對各種技術的深入剖析,指出它們本質性的特點,使讀者能更好地了解各種技術的適用場景。
——文思海輝高級副總裁王闖舟
大數據很火,連央視新聞都拿大數據說事,但何為大數據?大數據與傳統的資料庫、BI有何關聯?為何高到各國政府的領導人,低到普通編程人員都覺得不知道大數據就落伍了?這需要在概念上,在技術實現上,在產品選擇上,在研發/投資的方向上,釐清思路,不要人云亦云,把握錯了方向與路線。我覺得該著作應該能夠解答當下大家普遍關心與疑惑的問題,希望各位讀者能通過閱讀本書找到一個正確的解答。
——華勝天成首席技術官楊準