大數據叢書程序員
大數據日知錄:架構與算法(大數據領域專家力做,專一大數據架構和算法,全面梳理大數據相關技術)算法
張俊林 著 數據庫
ISBN 978-7-121-24153-6編程
2014年9月出版緩存
訂價:69.00元 服務器
404頁數據結構
16開架構
編輯推薦app
這是一本心血之做,歷時3年,質量上乘。框架
從架構與算法的角度,比較全面地分門別類梳理了大數據相關技術。
本書內容緊跟技術前沿,講解深刻淺出,適合大數據領域全部技術人員。
書中還列有做者優選的高質量文獻,能爲讀者節省選擇的時間,絕對值得一讀。
內容提要
大數據是當前最爲流行的熱點概念之一,其已由技術名詞衍生到對不少行業產生顛覆性影響的社會現象,做爲最明確的技術發展趨勢之一,基於大數據的各類新型產品必將會對每一個人的平常生活產生日益重要的影響。
《大數據日知錄:架構與算法》從架構與算法角度全面梳理了大數據存儲與處理的相關技術。大數據技術具備涉及的知識點異常衆多且正處於快速演進發展過程當中等特色,其技術點包括底層的硬件體系結構、相關的基礎理論、大規模數據存儲系統、分佈式架構設計、各類不一樣應用場景下的差別化系統設計思路、機器學習與數據挖掘並行算法以及層出不窮的新架構、新系統等。《大數據日知錄:架構與算法》對衆多紛繁蕪雜的相關技術文獻和系統進行了擇優汰劣並系統性地對相關知識分門別類地進行整理和介紹,將大數據相關技術分爲大數據基礎理論、大數據系統體系結構、大數據存儲,以及包含批處理、流式計算、交互式數據分析、圖數據庫、並行機器學習的架構與算法以及增量計算等技術分支在內的大數據處理等幾個大的方向。經過這種體系化的知識梳理與講解,相信對於讀者總體和系統地瞭解、吸取和掌握相關的優秀技術有極大的幫助與促進做用。
《大數據日知錄:架構與算法》的讀者對象包括對NoSQL 系統及大數據處理感興趣的全部技術人員,以及有志於投身到大數據處理方向從事架構師、算法工程師、數據科學家等相關職業的在校本科生及研究生。
目錄
第0 章 當談論大數據時咱們在談什麼................ 1
0.1 大數據是什麼.......................... 2
0.2 大數據之翼:技術範型轉換......................................... 4
0.3 大數據商業鍊金術................................ 6
0.4 「大數據」在路上................................................... 7
第1 章 數據分片與路由.............................................. 9
1.1 抽象模型.......................................................10
1.2 哈希分片(Hash Partition) ..............................11
1.2.1 Round Robin....................................11
1.2.2 虛擬桶(Virtual Buckets) ..........................12
1.2.3 一致性哈希(Consistent Hashing) ...........................13
1.3 範圍分片(Range Partition) ......................................18
參考文獻......................................19
第2 章 數據複製與一致性................................................20
2.1 基本原則與設計理念............................21
2.1.1 原教旨CAP 主義..............................................21
2.1.2 CAP 重裝上陣(CAP Reloaded).............................23
2.1.3 ACID 原則...............................................24
2.1.4 BASE 原則.................................................24
2.1.5 CAP/ACID/BASE 三者的關係...........................25
2.1.6 冪等性(Idempotent)........................................26
2.2 一致性模型分類.................................................26
2.2.1 強一致性............................................27
2.2.2 最終一致性........................................28
2.2.3 因果一致性.............................28
2.2.4 「讀你所寫」一致性....................................29
2.2.5 會話一致性....................................29
2.2.6 單調讀一致性..............................................30
2.2.7 單調寫一致性.....................................................30
2.3 副本更新策略...........................30
2.3.1 同時更新..........................................30
2.3.2 主從式更新.....................................31
2.3.3 任意節點更新......................................32
2.4 一致性協議...........................................................32
2.4.1 兩階段提交協議(Two-Phrase Commit,2PC)..........................33
2.4.2 向量時鐘(Vector Clock) ..............................38
2.4.3 RWN 協議.................................................40
2.4.4 Paxos 協議.............................................42
2.4.5 Raft 協議.............................................45
參考文獻................................................49
第3 章 大數據經常使用的算法與數據結構....................................51
3.1 布隆過濾器(Bloom Filter) ............................51
3.1.1 基本原理.............................................52
3.1.2 誤判率及相關計算..........................................52
3.1.3 改進:計數Bloom Filter....................................53
3.1.4 應用............................................54
3.2 SkipList............................................55
3.3 LSM 樹........................................58
3.4 Merkle 哈希樹(Merkle Hash Tree) .............................62
3.4.1 Merkle 樹基本原理..................................................62
3.4.2 Dynamo 中的應用.........................................63
3.4.3 比特幣中的應用..................................................63
3.5 Snappy 與LZSS 算法..........................................65
3.5.1 LZSS 算法.............................................65
3.5.2 Snappy..........................................67
3.6 Cuckoo 哈希(Cuckoo Hashing) ..................................67
3.6.1 基本原理...............................................68
3.6.2 應用:SILT 存儲系統.........................................68
參考文獻...................................................70
第4 章 集羣資源管理與調度.......................................71
4.1 資源管理抽象模型...................................72
4.1.1 概念模型....................................72
4.1.2 通用架構...............................................73
4.2 調度系統設計的基本問題.....................................74
4.2.1 資源異質性與工做負載異質性............................74
4.2.2 數據局部性(Data Locality) ........................................75
4.2.3 搶佔式調度與非搶佔式調度...................................75
4.2.4 資源分配粒度(Allocation Granularity) .............76
4.2.5 餓死(Starvation)與死鎖(Dead Lock)問題...........................76
4.2.6 資源隔離方法........................................77
4.3 資源管理與調度系統範型.............................77
4.3.1 集中式調度器(Monolithic Scheduler).......................78
4.3.2 兩級調度器(Two-Level Scheduler) .........................79
4.3.3 狀態共享調度器(Shared-State Scheduler) ....................79
4.4 資源調度策略...............................................81
4.4.1 FIFO 調度策略..........................................81
4.4.2 公平調度器(Fair Scheduler)......................81
4.4.3 能力調度器(Capacity Scheduler) ..........................82
4.4.4 延遲調度策略(Delay Scheduling)............................82
4.4.5 主資源公平調度策略(Dominant Resource Fair Scheduling).............82
4.5 Mesos .................................84
4.6 YARN......................................87
參考文獻..............................................90
第5 章 分佈式協調系統...................................91
5.1 Chubby 鎖服務...............................92
5.1.1 系統架構........................................93
5.1.2 數據模型..................................94
5.1.3 會話與KeepAlive 機制...............................95
5.1.4 客戶端緩存.......................................95
5.2 ZooKeeper ................................96
5.2.1 體系結構...........................................96
5.2.2 數據模型(Data Model) .............................97
5.2.3 API ...............................98
5.2.4 ZooKeeper 的典型應用場景..................................98
5.2.5 ZooKeeper 的實際應用.......................................103
參考文獻...................................104
第6 章 分佈式通訊..............................106
6.1 序列化與遠程過程調用框架..................................107
6.1.1 Protocol Buffer 與Thrift .....................108
6.1.2 Avro...............................109
6.2 消息隊列.....................................110
6.2.1 常見的消息隊列系統......................................110
6.2.2 Kafka .......................111
6.3 應用層多播通訊(Application-Level Multi-Broadcast)........114
6.3.1 概述...............................114
6.3.2 Gossip 協議...........................115
參考文獻..........................118
第7 章 數據通道.........................................120
7.1 Log 數據收集.................................120
7.1.1 Chukwa........................121
7.1.2 Scribe......................122
7.2 數據總線......................................123
7.2.1 Databus............................125
7.2.2 Wormhole .......................127
7.3 數據導入/導出...........................................128
參考文獻.............................129
第8 章 分佈式文件系統....................................131
8.1 Google 文件系統(GFS) .................................132
8.1.1 GFS 設計原則...........................................132
8.1.2 GFS 總體架構..............................133
8.1.3 GFS 主控服務器..................................134
8.1.4 系統交互行爲.................................136
8.1.5 Colossus ........................137
8.2 HDFS ..........................138
8.2.1 HDFS 總體架構.................................139
8.2.2 HA 方案..............................140
8.2.3 NameNode 聯盟........................143
8.3 HayStack 存儲系統....................................145
8.3.1 HayStack 總體架構.................................146
8.3.2 目錄服務..................................147
8.3.3 HayStack 緩存...........................................148
8.3.4 HayStack 存儲系統的實現...............................148
8.4 文件存儲佈局.........................................150
8.4.1 行式存儲........................................151
8.4.2 列式存儲...........................................151
8.4.3 混合式存儲........................................156
8.5 糾刪碼(Erasure Code).............................158
8.5.1 Reed-Solomon 編碼...............................159
8.5.2 LRC 編碼.....................................164
8.5.3 HDFS-RAID 架構.........................166
參考文獻.....................................166
第9 章 內存KV 數據庫...................................168
9.1 RAMCloud ..............................169
9.1.1 RAMCloud 總體架構................................169
9.1.2 數據副本管理與數據恢復................................170
9.2 Redis....................................172
9.3 MemBase ...............................173
參考文獻................................................175
第10 章 列式數據庫...........................................176
10.1 BigTable....................................177
10.1.1 BigTable 的數據模型..........................177
10.1.2 BigTable 的總體結構................................178
10.1.3 BigTable 的管理數據.............................179
10.1.4 主控服務器(Master Server)......................181
10.1.5 子表服務器(Tablet Server) ....................182
10.2 PNUTS 存儲系統........................................186
10.2.1 PNUTS 的總體架構..............................186
10.2.2 存儲單元...............................187
10.2.3 子表控制器與數據路由器..................................187
10.2.4 雅虎消息代理.............................188
10.2.5 數據一致性.........................................189
10.3 MegaStore..................................................190
10.3.1 實體羣組切分......................191
10.3.2 數據模型........................................192
10.3.3 數據讀/寫與備份.................................193
10.4 Spanner .........................................194
10.4.1 SpanServer 軟件棧.........................................195
10.4.2 數據模型.........................................196
10.4.3 TrueTime ...........................................196
參考文獻..............................................197
第11 章 大規模批處理系統...................................199
11.1 MapReduce 計算模型與架構................................200
11.1.1 計算模型.......................................201
11.1.2 系統架構......................................203
11.1.3 MapReduce 計算的特色及不足......................................206
11.2 MapReduce 計算模式...........................206
11.2.1 求和模式(Summarization Pattern)................207
11.2.2 過濾模式(Filtering Pattern) ................208
11.2.3 組織數據模式(Data Organization Pattern) .....................210
11.2.4 Join 模式(Join Pattern)......................212
11.3 DAG 計算模型..........................................214
11.3.1 DAG 計算系統的三層結構............................214
11.3.2 Dryad .......................................215
11.3.3 FlumeJava 和Tez ........................................217
參考文獻...........................................218
第12 章 流式計算........................................219
12.1 流式計算系統架構....................................222
12.1.1 主從架構............................................222
12.1.2 P2P 架構.....................................................223
12.1.3 Samza 架構..........................................224
12.2 DAG 拓撲結構..........................................224
12.2.1 計算節點.....................................................225
12.2.2 數據流..............................................226
12.2.3 拓撲結構..................................226
12.3 送達保證(Delivery Guarantees)..............................229
12.3.1 Storm 的送達保證機制.................................230
12.3.2 MillWheel 的「剛好送達一次」機制...........................233
12.4 狀態持久化...........................................234
12.4.1 容錯的三種模式....................................234
12.4.2 Storm 的狀態持久化.......................................236
12.4.3 MillWheel 和Samza 的狀態持久化......................237
參考文獻............................................238
第13 章 交互式數據分析...................................240
13.1 Hive 係數據倉庫.................................242
13.1.1 Hive .....................................242
13.1.2 StingerInitiative ................................250
13.2 Shark 係數據倉庫..................................251
13.2.1 Shark 架構.........................................252
13.2.2 部分DAG 執行引擎(PDE) ........................253
13.2.3 數據共同分片.........................................254
13.3 Dremel 係數據倉庫...................................254
13.3.1 Dremel...........................255
13.3.2 PowerDrill ..........................258
13.3.3 Impala.................................261
13.3.4 Presto...............................264
13.4 混合係數據倉庫......................................265
參考文獻.................................269
第14 章 圖數據庫:架構與算法................................271
14.1 在線查詢類圖數據庫...........................272
14.1.1 三層結構.........................272
14.1.2 TAO 圖數據庫.................................273
14.2 常見圖挖掘問題..........................................277
14.2.1 PageRank 計算.......................................278
14.2.2 單源最短路徑(Single Source Shortest Path) ..................278
14.2.3 二部圖最大匹配.............................279
14.3 離線挖掘數據分片..............................................279
14.3.1 切邊法(Edge-Cut)......................................280
14.3.2 切點法(Vertex-Cut)...............................282
14.4 離線挖掘計算模型...................................284
14.4.1 以節點爲中心的編程模型..........................284
14.4.2 GAS 編程模型...........................................285
14.4.3 同步執行模型.....................................286
14.4.4 異步執行模型...................................290
14.5 離線挖掘圖數據庫.................................292
14.5.1 Pregel..........................292
14.5.2 Giraph...............................299
14.5.3 GraphChi ............................301
14.5.4 PowerGraph.......................307
參考文獻.......................................311
第15 章 機器學習:範型與架構.........................................313
15.1 分佈式機器學習...........................................314
15.1.1 機器學習簡介.............................................314
15.1.2 數據並行VS.模型並行.....................................316
15.2 分佈式機器學習範型.....................317
15.2.1 三種範型...................................318
15.2.2 MapReduce 迭代計算模型........................319
15.2.3 BSP 計算模型...................................321
15.2.4 SSP 模型............................323
15.3 分佈式機器學習架構...................................324
15.3.1 MapReduce 系列..................................325
15.3.2 Spark 及MLBase ..........................................327
15.3.3 參數服務器(Parameter Server).............332
參考文獻................................................335
第16 章 機器學習:分佈式算法...............................337
16.1 計算廣告:邏輯迴歸.......................................338
16.1.1 邏輯迴歸(Logistic Regression,LR).............................338
16.1.2 並行隨機梯度降低(Parallel Stochastic Gradient Descent)............341
16.1.3 批學習並行邏輯迴歸..................................341
16.2 推薦系統:矩陣分解................................................344
16.2.1 矩陣分解方法.......................................344
16.2.2 ALS-WR 算法............................................346
16.2.3 並行版ALS-WR 算法..............................347
16.3 搜索引擎:機器學習排序................................347
16.3.1 機器學習排序簡介.................................348
16.3.2 LambdaMART.................................349
16.3.3 分佈式LambdaMART........................................351
16.4 天然語言處理:文檔類似性計算.......................................352
16.5 社交挖掘:譜聚類.................................355
16.5.1 社交挖掘實例...............................355
16.5.2 譜聚類....................................356
16.5.3 並行版譜聚類..........................................358
16.6 深度學習:DistBelief .............................................358
16.6.1 深度學習簡介........................................359
16.6.2 DistBelief.....................360
參考文獻.........................................364
第17 章 增量計算..........................................366
17.1 增量計算模式...........................367
17.1.1 兩種計算模式...............................367
17.1.2 Hadoop 平臺下增量計算的通常模式.............................368
17.2 Percolator................................370
17.2.1 事務支持..........................................371
17.2.2 「觀察/通知」體系結構...........................373
17.3 Kineograph ............................374
17.3.1 總體架構.........................................375
17.3.2 增量計算機制....................................375
17.4 DryadInc ....................................376
參考文獻..............................................................377
附錄A 硬件體系結構及經常使用性能指標......................................378
附錄B 大數據必讀文獻....................................380
做者簡介
張俊林是技術書籍《這就是搜索引擎:核心技術詳解》(該書榮獲全國第十二屆輸出版優秀圖書獎)的做者,目前擔任暢捷通智能平臺總監。在此以前,張俊林曾經在阿里巴巴搜索技術中心、百度商務搜索部鳳巢廣告平臺以及新浪微博搜索部及數據系統部擔任資深技術專家,新浪微博技術委員會成員,負責算法策略方向。他還曾是智能信息聚合網站「玩聚網」的聯合創始人之一。他的研發興趣集中在:搜索技術、推薦系統、社交挖掘、天然語言處理與大數據算法架構等方面,並在以上領域有多年工業界實踐經驗。
張俊林本科畢業於天津大學管理學院,1999年至2004年在中科院軟件所直接攻讀博士學位,研究方向是信息檢索理論與天然語言處理,就學期間曾在ACL/COLING/IJCNLP等國際頂級會議發表多篇學術論文,另外,他在此期間領導設計的搜索系統曾在美國國防部DARPA主持的TREC第二屆高精度檢索系統評測中在17支國際高水平研究團隊激烈競爭中勝出,並取得綜合排名第一名的優異成績。
媒體評論
我和俊林接觸很少但神交已久,幾年前我看過他一本搜索方面的技術書籍,以爲寫得至關不錯,今後俊林的書都是必然要收藏的。看了這本書,感受和上一本同樣出色。和其餘介紹大數據技術的書相比,這本書的涉及面至關廣,覆蓋了當前大數據技術(分佈式計算、大規 模文件系統、NoSQL數據庫、經常使用數據結構和算法、批處理和流式計算、圖數據庫、分佈式機器學習等)的方方面面。實在且實用,我想是這本書最大的特色,誠摯推薦對大數據技術感興趣的讀者閱讀。
王斌
中國科學院信息工程研究所研究員、博士生導師
《大數據》《信息檢索導論》譯者
本書區別於市場上已有的衆多大數據概念類書籍,重點講述瞭解決大數據問題的算法與架構,全書邏輯清晰,重點突出,講述複雜算法時圖文並茂,能夠看出做者將實際工做經驗結合理論,在本書上花了不少心血,相信能幫助從事大數據工做的全部工程技術人員。
張棟
原百度科學家,鳳巢系統架構師;原Google研究員,機器學習專家
此書內容跨度很大,可稱爲大數據領域「從入門到精通」的教科書,很是全面且系統化。人人都在談論大數據,但事實上並無人告訴你們大數據究竟是什麼、涵蓋哪些方面,而此書能夠給出答案。
劉子正
新浪微博平臺及大數據總經理
這是一本大數據技術的百科全書——從大數據的存儲結構、內容管理,講到集羣任務調度、分佈式數據通訊、流行的各種新式數據庫的介紹,還有基於機器學習技術的大數據實現以及大數據挖掘應用範例等內容,既一應俱全,又深刻淺出。俊林的這本心血之做,是大數據研發人員絕好的技術嚮導。
陳運文
盛大文學首席數據官
大數據已成爲上到國家領導人,下到媒體會議必談話題,但大數據的應用時代纔剛剛開始,各大互聯網公司都奇缺熟悉Hadoop、分佈式系統開發和數據分析挖掘的人才,張俊林這本書全面展現了大數據相關的技術,理論算法和實踐,有廣度有深度,對於但願掌握大數據技術的開發者是必備利器。
蔣濤
CSDN總裁、《程序員》雜誌創始人
前言
像移動互聯網、O2O、可穿戴設備等概念同樣,「大數據」從甫一提出到颶風般席捲並風靡全球,從最初的技術名詞到造成滲透各行各業的社會現象,所耗時間僅幾年而已,其興也勃焉。
那麼,大數據是否會像不少曾經火熱如今已難覓蹤影的流行概念同樣,未來某日,人們靜心擡眼,發現風已去而水波不興,徒留夕陽下波光粼粼的漣漪,讓人不由哀嘆其亡也忽焉?
本書的背景
目前看彷彿有此跡象,當一個概念火爆到從街頭隨便抓一個路人,他都能跟你口若懸河地侃侃而談;當一個新名詞鋪天蓋地而來,讓你熟悉到再見一次就要吐的程度,這些確實是典型的泡沫將破的徵兆。目前業已出現愈來愈多的質疑聲音,在這種狂熱的氛圍下,理性的質疑是最難能難得的,畢竟大數據歸根結底是少數派的遊戲,而現狀好像是人人都處於大數據進行時的狀態,這讓其看上去顯得不甚理性。
可是,從社會發展趨勢的角度,很明顯大數據會是目前肉眼可及的視野範圍裏能看到的最大趨勢之一。從傳統IT 業到互聯網、互聯網到移動互聯網,從以智能手機和Pad 爲主要終端載體的移動互聯網到可穿戴設備的移動互聯網,而後再到萬物互聯的物聯網,這必定是不可違抗的發展規律和前進方向。伴隨着這個趨勢必然有愈來愈多、形態愈來愈豐富的超量數據不斷產生,而大數據明顯是由此衍生出來的明確且必然的發展趨勢。
因此,歸根結底,大數據概念是個短時間內炒得過熱,可是從長期來看炒得不足的領域。再過十年若是回望如今,也許會發現:咱們今天正在巍峨羣山的山腳徘徊,試圖找出一條通往山頂的羊腸小道,如此而已。咱們固然不能盲目跟風不斷追逐切換熱點,可是忽視趨勢的力量一樣也不是一個理性的選擇。
本書的內容
以上所述是本書誕生的大背景,目前市面上陸陸續續已經有很多講大數據的書,有面向大衆的概念普及類圖書,也有講解大數據技術的書,本書屬於第二類,專一於與大數據處理有關的架構與算法,我相信這是一本比較全面地分門別類梳理大數據技術的書籍。從大約2010 年年末起我開始關注並收集整理這方面的技術資料,固然那時尚未據說過大數據的概念,如今的所謂大數據已是後來的事情了。最初引發我關注的是與NoSQL 相關的技術,尤爲是Google 和亞馬遜的一系列相關工做,當時隱約地以爲這是一種新的技術發展趨勢,甚至是一次技術範型的大轉換,因此逐步開始投入愈來愈多的精力到其中,這包括將相關技術資料分門別類地進行收集、閱讀和整理,利用業餘時間開始一章一節地慢慢寫本書,以及在實際工做中儘量地應用這些技術和系統等若干方面。
本書的寫做
斷斷續續完成本書花了大約3 年左右的時間,和最初預估的時間仍是比較吻合的,這一方面是因爲我可投入的時間自己就很少,可是仍是但願可以寫出一本高質量的技術書籍,因此不得不慢工出細活;另一方面是因爲大數據處理做爲一個新領域,其涉及的方方面面的技術點實在太多,並且正處於快速的發展過程當中。這個領域是我接觸過的領域中知識涵蓋面最廣的,從底層的硬件開始,到涉及基礎理論、大規模數據存儲系統、分佈式架構設計、各類不一樣適用場景下的差別化系統設計思路、機器學習與數據挖掘並行算法、層出不窮的新架構和新系統等,說無所不包有些誇張可是所需掌握知識點之多確實是不多見的。並且由於其處於快速發展的過程中,因此各類技術紛繁蕪雜,並沒有一個成熟的知識分類體系可供參考,須要不斷梳理相關知識點之間的相互區別和聯繫並進行分門別類,如何將紛雜多樣的技術梳理成清晰合理的章節內容曾讓我頭疼不已,固然發展到目前,整個大數據技術體系脈絡已經日漸明晰,我相信參考本書目錄能夠清晰地發現這一點。另一個阻礙是可參考的資料和系統多而雜,且質量參差不齊,須要從中汰劣餘優,儘量選出有表明性及有發展潛力的理論、方案和系統,這也是很耗費精力的過程,儘管本書每章後只列出了不多一部分參考資料,可是實際參考的文獻與系統要數倍於此,只列出精華部分是爲了縮短讀者選擇高質量文獻的過程。
十幾年前當我還在中國科學院讀書的時候,就對互聯網的蓬勃發展及其對生活和工做各方面的影響感慨不已。當時最直觀的感覺是最新的國際會議論文很容易得到,每每是會議一開完就能從網上下載到感興趣的文獻,有時候會議沒開有些做者就把論文先放在網上供人蔘考。以爲有了互聯網這麼強大的全球範圍信息便捷分享工具,儘管當時國內科研水平不算高,在最好的國際頂級會議發表論文仍是較難的事情,可是隨着互聯網的普及,科研水準應該可以得到極爲快速長足的發展,由於從追蹤最新技術進展的角度看你們的起跑線是同樣的,而中國人多的優點慢慢應該可以發揮出來。
事實上也是如此,最近幾年各類國際頂級會議中,中國人發表的論文比例愈來愈高能夠證實這一點,而很明顯這個趨勢還會進一步加快。之因此提這個,是由於大數據相關技術研發道理其實也是同樣的,儘管目前國內在這方面的實力和國外相比還有很大的差距,優秀的系統和技術方案每每都是Google、亞馬遜、Facebook、Linkedin 等這些國際知名互聯網公司提出的,國內工業界的技術水準大部分還僅僅停留在能把開源的大數據系統應用起來解決手頭碰到的問題這個階段,可是我相信在不遠的未來,國內會逐步涌現出具備國際水準的大數據系統與解決方案,其中的道理與上面所舉的學術進步的例子是同樣的。目前大部分優秀系統是開源的,相關技術文獻也很容易找到,做爲有進取心的技術人員,如今所缺少的不是沒有可參考的學習資料,相反是資料太多但參差不齊反而讓不少人無所適從,不知該如何下手。國內的技術人員只要肯下功夫、會下功夫,有好的職業發展環境和高的自我期許及技術理想,假以時日,愈來愈多的世界級水準的大數據處理系統出自中國人之手是徹底能夠指日可待的。我指望本書對於這些技術人員在全面瞭解吸取並掌握大數據處理的優秀技術過程當中,能貢獻綿薄之力。沈利也參與了本書的部分編寫工做。
致謝
感謝個人妻子、岳父、岳母,以及爸爸、媽媽,儘管歷時3 年才得以完成本書,可是如果沒有大家的全身心支持,這本書2020 年也沒法面世。
對了,還有個人女兒,親愛的雪晴,從蹣跚邁出人生第一步,到咿咿呀呀說出第一句話,我老是想起,小小的你,迷茫地站在這遍及新奇的世界裏,東張西望時無助的樣子,這老是使人心疼。
你無數人生的第一次帶給我太多歡樂,而我陪你的時間又太少太少。每次聽到你用小手咚咚敲着書房緊閉的門,這常常讓我感到惶惑,不知道這麼狠心對你是對仍是錯,可是又不得不狠下心來。我相信未來必定會後悔沒有給你更多的時間,把你介紹給這色彩斑斕而殘酷的世界,囑咐它在從此的日子裏能善待你一些。我多想陪你直到你白髮蒼蒼的歲月:在初秋的午後陽光下,看到你坐在院中的婆娑樹影裏,給你的兒孫講故事,淺笑依然,仿似今天。我能夠清楚地想象那時的場景,清晰得就像一切就發生在眼前。雖然我深切地知道這是永不可實現的奢望,但這個夢想會永遠放在我內心,就像你清澈的目光和純真的笑容同樣。
時間是咱們的朋友,也是咱們的敵人,但願大家可以原諒我。
張俊林
2014 年3 月於北京