內容提要
為什麼要寫這本書?
李克強總理提出“大眾創業,萬眾創新”。在如此美好的大環境下,網際網路創業如火如荼。各種模式的O2O,各種精彩的移動App,突然之間都冒了出來,正所謂“忽如一夜春風來,千樹萬樹梨花開”。而在其中,大數據因為蘊含著巨大的商業價值,成為這個時代的趨勢之一。眾人都希望利用好這個“魔棒”,為自己的事業開疆擴土。可是,就筆者在業界的經歷來看,真正能挖掘大數據潛力的公司少之又少。筆者一直很好奇,中國的相關人才如此之多,商業市場又如此之大,何以至如此境地呢?為了找到答案,筆者閱讀了不少觀察性文章,也走訪了一些業內的從業者,發現目前的一大窘境是:大數據技術、產品和商業的結合度還遠遠不夠。導致這個現狀的原因有很多,具體分析主要有以下幾點:
涉及範圍廣:“大數據”本身是一個比較抽象的概念,任何關乎大規模數據的處理,都可以稱為“大數據”。因此它既包括了很多已有的技術,如數據挖掘、機器學習、商業智慧型等,又包括了近幾年誕生的新技術,如NoSQL相關的生態系統。而且,一個商業需求也可能會涉及多個相關技術。
技術含量高:數據挖掘和機器學習之類的算法和大規模數據處理的架構,相對於普通的套用開發而言,需要更多的理論知識和實踐經驗積累。而商業價值的挖掘程度卻往往取決於使用的技術深度。越是鑽研得深入,所產生的價值就會越大。
發展速度快:最近幾年,算法方面有不少的創新,如深度學習(Deep Learning);系統架構也在不斷升級,如Hadoop的第二代框架Yarn、Storm、Spark等實時流式計算,技術的更新換代非常頻繁。但是,商業的發展需要技術系統能夠隨時應變,快速回響,這與技術的飛速發展本身又存在衝突。
成熟方案少:大數據的技術多數是免費的,這對於盈利模式而言無疑是有利的,不過代價就是存在一定的穩定性和易用性問題。現在有一些大型的技術公司提供了更成熟的解決方案,但是價格不菲,對於經費並不寬裕的初創公司而言選擇餘地太少。
以上這些因素都會形成進入大數據領域的門檻,而高門檻勢必會導致大數據在工業界套用的步伐放緩。為了解決這個問題,企業需要培養自己的複合型人才,要求業務人員懂技術、技術人員懂業務。只有如此才能讓公司使用合適的工具、獲得準確的數據、制定合理的方案。
然而,激烈的市場競爭,膨脹的用戶需求,不會給創業公司太多的時間去揮霍。在黑夜之中不斷摸索的人們,需要明燈指引前進的方向。雖然目前市面上已有一些相關圖書做了不錯的嘗試,但是它們大多數偏向兩個極端:一端是面向金融、經濟、社會和管理類等非技術型讀者,講述概念、定義、背景和業界的成功案例等;另一端是面向程式設計師、算法工程師、架構師和數據科學家等純技術型讀者,講述具體的技術框架、編程範例、系統調試等。能同時覆蓋兩者的圖書可謂鳳毛麟角。因此,筆者萌生了通過一本書來幫助企業快速地建立複合型團隊,將合理的業務需求儘快轉化為實際產品的想法。筆者在寫作過程中,力求:
易讀易懂。通過生動的案例和形象的比喻來解讀難點,降低技術理解的門檻。這樣就能夠讓偏向業務的人員更容易理解大數據背後的運作原理,促進他們和技術人員的溝通及協作。
可實踐性強。通過分享需要大量實踐才能積累的寶貴經驗,最大程度地針對業務需求和技術方案之間的空白進行彌補。這將有利於技術人員針對不同的業務需求,規劃更為合理的技術方案。
本書通過講述一個虛擬的(如有雷同純屬巧合)網際網路O2O創業故事,逐步展開介紹各個階段可能遇到的大數據課題、業務需求,以及相對應的技術方案,甚至是實踐解析。讓讀者身臨其境,一起來探尋大數據的奧秘。對於想進一步深入研究技術實現細節的讀者,也給出了繼續閱讀的方向和指導性建議。筆者衷心希望,無論是技術專家、產品經理,還是業務人員,只要閱讀了本書便都能愉快地遨遊在大數據的海洋中。
讀者對象
根據本書撰寫的起心動念,筆者覺得其內容適合如下讀者:
中小網際網路創業公司的CIO、CTO和技術骨幹。他們可以獲知常見的網際網路公司從創業初期到中期這個階段里,數據平台需要滿足怎樣的業務需求(當然,也包括業務方和產品經理所說的“XXOO”了),技術上通常會面臨哪些挑戰,以及如何解決。
中小網際網路創業公司的產品經理和項目經理。個人認為,在不久的將來,最炙手可熱的產品經理或項目經理一定是懂一些技術的。技術背景將幫助產品經理和項目經理更好地理解哪些是技術上可以實現的,如果可以實現又大致需要多少開發資源。此外,本書所提及的案例也許能提供一些產品設計上的靈感和啟發。
中小網際網路創業公司的CEO、合伙人。讀懂這本書, CIO、CTO和產品VP的招募,不用靠第三方和人力資源,因為你可以自己來選。這絕對可以幫助公司少走彎路,加速發展。
剛剛起步的算法和架構工程師。很多剛剛畢業或工作沒多久的朋友,學了一身本領,對新技術也很有熱情,苦於沒有太多實踐的機會。書中的故事濃縮了不少業界實踐的經驗和心得,如能融會貫通對他們將很有裨益。同時,覆蓋面較廣的技術課題概述也為他們繼續深入研究提供了方向和指導。
夢想家。最後的最後,本書也獻給那些希望通過大數據技術進行網際網路創業的人們。也許現在你既不是“CXO”(CEO、CIO、CTO、CPO、COO等的統稱),也不是產品經理或項目經理,可是你有自己的創業夢想,那么這本書也獻給你。
當然,由於側重點不同,因此本書並不適合鑽研技術細節的程式設計師和編程專家,不過仍然可以在書中找到重要的參考圖書指導。同時,本書也不適合關注巨觀行業發展的商務人士。
如何閱讀本書
為了達到深入淺出、通俗易懂的效果,本書的第一大部分概述了大數據的主要技術,包括大數據的獲取、存儲、處理,還有架構設計的基本理念,以及常用的訊息和快取機制。這一部分你會發現關於Nutch、Flume、Hadoop、HBase、Redis、Hive、Kafka、Spark、Storm等的簡介。對於數據處理的高級技術,本書著墨不少,但不乏對於信息檢索和數據挖掘課題的探討。例如站內搜尋引擎、推薦系統、廣告系統、聚類、分類和線性回歸等。由於商業需求尤其看重實際產出,因此第一部分的最後還會分析常見的效果和性能評估。相信這部分對於構建讀者的大數據知識體系會很有幫助。在每一章的最後,我們還會給出重要的參考圖書,以便於讀者繼續深入學習。
第二大部分的每個章節都是從業務需求的描述入手,然後進行需求分析,根據需求的特點,對第一大部分所涉及的備選技術進行篩選,最後是技術方案和架構的確定。不同的商業需求可能會使用類似的技術點。但是具體使用方式不會雷同,根據不同的數據集合、不同的套用場景和不同的進階難度,我們為讀者提供了反覆溫習和加深印象的機會。
作者簡介
黃申,博士,IBM Almaden研究院科學家,畢業於上海交通大學計算機科學與工程專業,師從俞勇教授。微軟學者,IBMExtremeBlue天才計畫成員。長期專注於大數據相關的搜尋、推薦、廣告以及用戶精準化領域。曾在微軟亞洲研究院、eBay中國、沃爾瑪1號店和大潤發飛牛網擔任要職,帶隊完成了若干公司級的戰略項目。同時著有20多篇國際論文和10多項國際專利,兼任《計算機工程》期刊特邀審稿專家。因其對業界的卓越貢獻,2015年獲得美國政府頒發的“美國傑出人才”稱號。
目錄
推薦序一
推薦序二
前 言
第1章 抉擇 1
第2章 數據收集 4
2.1 網際網路數據收集 4
2.1.1 網路爬蟲 5
2.1.2 Apache Nutch簡介 11
2.1.3 Heritrix簡介 14
2.2 內部數據收集 15
2.2.1 Apache Flume簡介 17
2.2.2 Facebook Scribe和Logstash 21
2.3 本章心得 21
2.4 參考資料 22
第3章 數據存儲 23
3.1 持久化存儲 23
3.1.1 Hadoop和HDFS 25
3.1.2 HBase簡介 28
3.1.3 MongoDB 35
3.2 非持久化存儲 37
3.2.1 快取和散列 37
3.2.2 Memcached和Berkeley DB簡介 41
3.2.3 Redis簡介 41
3.3 本章心得 44
3.4 參考資料 44
第4章 數據處理 46
4.1 離線批量處理 46
4.1.1 Hadoop的MapReduce 47
4.1.2 Spark簡介 52
4.1.3 Hive簡介 53
4.1.4 Pig、Impala和Spark SQL 56
4.2 提升及時性:訊息機制 58
4.2.1 ActiveMQ簡介 60
4.2.2 Kafka簡介 61
4.3 線上實時處理 63
4.3.1 Storm簡介 63
4.3.2 Spark Streaming簡介 66
4.4 本章心得 66
4.5 參考資料 67
第5章 信息檢索 69
5.1 基本理念 70
5.2 相關性 70
5.2.1 布爾模型 70
5.2.2 基於排序的布爾模型 71
5.2.3 向量空間模型 74
5.2.4 語言模型 75
5.3 及時性 77
5.4 與資料庫查詢的對比 81
5.5 搜尋引擎 82
5.5.1 Web搜尋中的連結分析 83
5.5.2 電子商務中的商品排序 86
5.5.3 多因素和基於學習的排序 88
5.5.4 系統框架 89
5.5.5 Lucene簡介 93
5.5.6 Solr簡介 98
5.5.7 Elasticsearch簡介 104
5.6 推薦系統 108
5.6.1 推薦的核心要素 109
5.6.2 推薦系統的分類 110
5.6.3 混合模型 115
5.6.4 系統架構 116
5.6.5 Mahout 116
5.7 線上廣告 119
5.8 本章心得 127
5.9 參考資料 128
第6章 數據挖掘 130
6.1 基本理念 131
6.2 數據的表示和預處理 133
6.3 機器學習算法 136
6.4 挖掘工具 157
6.5 本章心得 165
6.6 參考資料 165
第7章 效能評估 167
7.1 效果評估 168
7.2 性能評估 190
7.3 本章心得 202
7.4 參考資料 202
第8章 大數據技術全景 204
第9章 商品太多啦!需要搜尋引擎 207
9.1 業務需求 207
9.2 產品設計和技術選型 208
9.3 實現方案 211
第10章 能否更主動?還需要推薦引擎 223
10.1 業務需求 223
10.2 產品設計和技術選型 225
10.3 實現方案 230
第11章 這樣做的效果如何 241
11.1 業務需求 241
11.2 產品設計和技術選型 242
11.3 實現方案 243
第12章 這個搜尋有點遜 258
12.1 業務需求:還要搜得更多 258
12.2 “還要搜得更多”:產品設計和技術選型 259
12.3 “還要搜得更多”的方案實現 261
12.4 業務需求:還要搜得更準 265
12.5 “還要搜得更準”:產品設計和技術選型 266
12.6 “還要搜得更準”的方案實現 271
12.7 業務需求:還要更快 273
12.8 還要“變”得更快:產品設計和技術選型 274
12.9 還要“搜”得更快:產品設計和技術選型 275
12.10 業務需求:給點提示吧 280
12.11 給點提示吧:產品設計和技術選型 282
第13章 支持更高效的運營 287
13.1 業務需求:網際網路時代的CRM 287
13.2 網際網路時代的CRM:產品設計和技術選型 288
13.3 業務需求:抓住搗蛋鬼 291
13.4 抓住搗蛋鬼:產品設計和技術選型 292
13.5 業務需求:銷售之戰 295
13.6 銷售之戰:產品設計和技術選型 296
後記 299