本書全面地講述了Hadoop相關領域的重要知識和*的技術及應用。書中首先介紹了數據挖掘的基礎知識、Hadoop的基本框架和相關信息,然后系統地描述了如何在各類行業中用好Hadoop來做數據挖掘。
本書面向的主要讀者人群是想了解Hadoop與大數據的技術人員,無論他們是在互聯網企業,還是在傳統企業;無論他們從事的是技術或者運維工作,專業做數據分析,還是企業的策略官、市場官和運營官,都能從本書中找到各自所需要的內容。
本書可以幫助讀者開闊眼界和找到方法,讓他們知道如何分析實際商業場景和業務問題,構建基于Hadoop的大數據系統,通過使用數據運營,對公司業務運營帶來直接的效益。當然對于學生、教師和有志于從業大數據運營的人員來說,也是一本實用的教材。
全面論述從實際應用中提取出的數據挖掘和Hadoop相關概念和技術
使用實際案例為用戶全面介紹Hadoop,而不只是停留在理論層面上
詳細解讀Hadoop相關領域全新的技術和商業大數據應用的動態變化
大數據的價值在于商業應用
從2006 年雅虎等團隊開始研發 Hadoop 技術至今已整整10 年。在這10 年中技術發展迅速,Hadoop 上的生態系統逐漸擴大,各個行業的用戶都在基于這一新的技術來開發各種應用,還有很多企業將原先基于傳統IT 系統的應用逐步向Hadoop 上遷移。
根據Interquest Group 作的2016 年報告,排名第一的技術工種就是Data Scientist(數據科學家)。今天有大數據技術能力的同學們在找工作的時候是炙手可熱的,而他們需要掌握的一項關鍵技能就是Hadoop。
我們相信, Hadoop 會成為企業數據中心的核心,而范磊和孫元浩同學的星環科技,其核心產品也逐漸定位成企業核心的Data Hub(數據集散地)。Hadoop 經過這 10 年的發展,在2016 年開始進入一個戰略轉折點。這意味著新的技術開始逐漸取代和超越老的技術,并在各個行業迅速發展。在未來的若干年之內,取代過程還會不斷加速。
我們認為,Hadoop 技術能成功的最根本原因在于它是把傳統的集中式運算有效地轉化成分布式計算的一種有效手段。集中計算演變成分布式是一個必然趨勢,當然并不是說一定只有Hadoop 才是這個演進的唯一手段,不過它至少是可選的一個不錯的手段。
本書中有很多說法和內容是由星環科技的CTO 孫元浩同學獨家贊助的。而在解釋一些實際場景中相對棘手的問題時,為了簡單起見,直接借用了星環科技之前的一些處理問題的方法和思路。
感謝我的好朋友金官丁同學(網上化名mysqlops)提供的幫助。感謝騰訊的邱躍鵬和趙建春同學,感謝迅雷的劉智聰同學,感謝金山的朱樺同學和楊亮同學,感謝百度的朱觀胤同學。我們還要特別感謝蔡可可、胡一刀、張澤澄、唐繼瑞、李晶、譚彬同學為本書做的大量資料收集和整理工作以及唐繼瑞為本書設計的章徽。
講述大數據和Hadoop 相關概念的書已經有很多了,本書更多想做的不是新聞和概念的堆砌、示例代碼的詳解,或者是某一項技術的再一次陳述,而是從實際場景出發,為讀者們講述應用中的Hadoop 應該是怎樣的。
本書主要特點:
(1) 全面實用地論述了從實際應用中提取出的數據挖掘和Hadoop 相關概念和技術。
(2) 用實際案例為用戶介紹Hadoop,而不只是停留在理論層面。
(3) 詳解Hadoop 相關領域最新的技術和商業應用大數據應用的動態變化。
按照劉智聰同學的說法,現在的Hadoop 系統已經是基建了,幾乎所有非實時的系統都
可以在Hadoop 上實現。 而當Hadoop 生態系統上出現Spark 和Storm 之后,就算是實時系統,在很多時候也是可以輕松實現的。
作為在IT 和互聯網行業沉浮了20 年的老兵,我們覺得寫這樣一本書來講實戰應用是
非常有必要的,因為我們一直在思考:
(1) 大數據服務應該是怎樣的?
(2) 大數據究竟能夠為我們做什么?
(3) 大數據在做實際應用的時候會碰到什么樣的問題?
(4) 大數據應用的這些問題究竟應該是怎樣解決的?
(5) 怎樣以最好的方式把最新的大數據技術應用到商業系統上去?
(6) 大數據應用做到極致的時候應該是怎樣的?
Gartner 認為,到2020 年,信息將被用于重新創造、數字化或消除80%的業務流程和產品。而我們認為,技術終究是為商業來服務的,一項技術的生命力究竟如何,取決于它在真實社會和經濟場景中所發揮出的價值。
隨著近年來大數據技術的高速演變,我們預計未來3 年數據庫以及數據倉庫技術會發生巨大的變化。正如Gartner 所預計的,我們的大部分企業客戶會把數據倉庫從以前的傳統數據倉庫轉移到邏輯數據倉庫中,Hadoop 在其中會扮演非常重要的角色,很多企業應用也已經開始把Hadoop 作為數據倉庫的重要組成部分。
數據平臺市場每年創造的價值巨大,但大部分都被Oracle、IBM、Teradata 等國外巨頭瓜分,星環科技算是唯一的可以與這些國外巨頭一爭高下的國內大數據廠家,我們希望能夠有更多的國內同行投入到基于Hadoop 的數據倉庫平臺的研發之中,打造出大數據時代的杰出數據庫和數據倉庫產品,擺脫國外巨頭們對這個行業的壟斷,幫助中國科技在企業服務領域實現質的突破。
本書不是為了講述教科書式的概念,而是為了告訴大家Hadoop 究竟能夠為我們的企業做些什么。我們會從一些真實靠譜的案例出發,講述在各種場景下如何應用Hadoop。
我們盡量把這本書寫得淺顯易懂,所以并不需要讀者有太多大數據的知識或者擁有編程語言的經驗。當然,如果讀者有過Java 或者類似編程語言的經驗,對于深入理解本書的一些內容是有幫助的。
因為我們的能力所限,而且本書所覆蓋的案例來自各個不同的領域,在陳述或者描述中可能出現一些錯誤或者遺漏,歡迎讀者指出,或者也可以把你想讀到的某些場景下的Hadoop 應用反饋給我們。
本書中所有的案例均是實際案例,如果讀者覺得有虛構成分,純屬偶然。
編 者
查看全部↓
譚磊,復旦大學計算機學士,美國杜克大學計算機碩士,《NewInternet:大數據挖掘》和《區塊鏈2.0》等8本專業書籍的作者和譯者,NABA北美區塊鏈協會聯合創始人,中國工業設計協會CIO,復旦大學軟件學院碩士導師,杭州數字化產業綜合服務中心主任。
在美國微軟服務時間超過13年,曾經擔任多家公司多個層級技術管理崗位,在搜索、互聯網廣告、數據挖掘、電子商務等方面有豐富的經驗,是互聯網技術領域ZI深專家。
范磊,前英特爾亞太區大數據總監,知名大數據專家,星環科技聯合創始人兼CEO。
第1 章 大數據概念的老調重彈 ........ 1
1.1 互聯網和物聯網上的數據 2
1.1.1 互聯網上越來越多的數據被存儲 . 2
1.1.2 物聯網帶來更多的數據 ................. 4
1.2 數據能為我們做的事 ........ 5
1.2.1 用戶畫像和任何企業都需要關注的數據 ........................ 6
1.2.2 大數據的3V、4V 和N 個V ........ 7
1.2.3 從數據分析到數據挖掘 ................. 8
1.2.4 大數據處理的三個維度 ................. 9
1.3 數據挖掘中的一些基本概念 ................... 11
1.3.1 分類算法 .... 11
1.3.2 聚類算法 .... 12
1.3.3 關聯算法 .... 13
1.3.4 序列算法 .... 14
1.3.5 估測和預測 14
1.3.6 A/B Test ..... 15
1.4 數據倉庫 ................ 16
1.4.1 數據倉庫是解決大數據存儲的基礎設施 ...................... 17
1.4.2 4 種不同類型的數據倉庫 ............ 18
1.4.3 國內外數據倉庫的不同使用方式 ......... 19
1.5 不包含在本書中的內容 .. 21
1.6 這本書都講些啥 .... 22
第2 章 Hadoop 的前世今生 ........... 25
2.1 Google 的計算框架 ......... 26
2.1.1 Google 公司的三篇論文 .............. 26
2.1.2 GFS 文件系統 ..... 27
2.1.3 MapReduce 的模型和框架 .......... 28
2.1.4 BigTable 數據庫 .. 29
2.2 Hadoop 的誕生 ...... 30
2.2.1 從GFS 到HDFS . 30
2.2.2 Hadoop 的基礎計算框架MapReduce ... 31
2.2.3 從BigTable 到HBase .................. 33
2.3 Hadoop 的今天 ...... 33
2.4 Hadoop 大事記 ...... 35
第3 章 等同于大數據的Hadoop ... 37
3.1 Hadoop 理念 .......... 38
3.2 Hadoop 核心基礎架構 .... 39
3.2.1 Namenode 和Datanode ................ 39
3.2.2 Hadoop 底層的文件系統HDFS .. 40
3.2.3 Hadoop 上的數據庫HBase ......... 42
3.3 Hadoop 上的各種其他組件 ..................... 44
3.3.1 資源分配系統YARN .................. 44
3.3.2 靈活的編程語言pig..................... 46
3.3.3 數據挖掘工具Mahout ................. 48
3.3.4 專注于數據挖掘的R 語言 .......... 48
3.3.5 數據倉庫工具Hive ...................... 49
3.3.6 數據采集系統Flume ................... 51
3.4 Spark 和Hadoop .... 51
3.4.1 閃電俠出現了 ...... 51
3.4.2 大數據領域的Taylor Swift ......... 52
3.4.3 Spark 的架構 ....... 53
3.4.4 Spark 和流處理 ... 54
第4 章 Hadoop 的價值 .................. 57
4.1 大數據時代需要新的架構 ....................... 58
4.1.1 企業IT 面臨的挑戰 ..................... 58
4.1.2 數據分析要考慮的問題 ............... 59
4.1.3 新的IT 架構的需求 ..................... 60
4.2 Hadoop 能解決的問題 .... 61
4.2.1 Hadoop 適合做的事情 ................. 61
4.2.2 Hadoop 對系統數據安全性的保障 ....... 62
4.2.3 數據流與數據流處理 ................... 62
4.3 去IOE .................... 65
4.4 7 種最常見的Hadoop 和Spark 項目 ...... 71
第5 章 Hadoop 系統速成 .............. 75
5.1 Hadoop 系統搭建速成 .... 76
5.1.1 Hadoop 系統的三種運行模式 ..... 76
5.1.2 單點搭建Hadoop 系統 ................ 76
5.1.3 全分布式(多節點)搭建Hadoop 系統 ... 80
5.1.4 在Hadoop 上編程 ........................ 83
5.1.5 Hadoop 系統的典型配置 ............. 83
5.2 在云上運行Hadoop ........ 85
5.2.1 在金山云上運行Hadoop ............. 86
5.2.2 微軟的HDInsight 89
5.3 Hadoop 信息大全 .. 90
第6 章 數據倉庫和Hadoop........... 93
6.1 大數據時代的數據系統設計 ................... 94
6.1.1 分布式系統上的CAP 原理 ......... 94
6.1.2 ACID 和BASE 概念的區別 ........ 95
6.1.3 NoSQL ....... 96
6.1.4 各種數據源的整合 ..................... 100
6.2 傳統數據倉庫的瓶頸 .... 101
6.2.1 傳統數據倉庫的瓶頸之一:數據量的問題 ................ 101
6.2.2 傳統數據倉庫的瓶頸之二:數據類型的問題 ............ 102
6.2.3 傳統數據倉庫的瓶頸之三:數據處理的延時問題 .... 102
6.2.4 傳統數據倉庫的瓶頸之四:數據模型的變化問題 .... 103
6.3 Hadoop 是解決數據倉庫瓶頸的方法 .. 104
6.3.1 解決數據量的問題 ..................... 104
6.3.2 解決數據類型的問題 ................. 105
6.3.3 數據處理的速度問題 ................. 106
6.3.4 數據模型的變化問題 ................. 107
6.4 基于Hadoop 和Spark 的數據倉庫解決方案 . 108
6.4.1 基于Hadoop/Spark 結構的數據倉庫系統架構........... 108
6.4.2 分布式計算引擎 109
6.4.3 標準化的編程模型 ..................... 110
6.4.4 數據操作方式的多樣性 ............. 110
6.4.5 OLAP 交互式統計分析能力 ..... 110
6.4.6 多類型數據的處理能力 ............. 111
6.4.7 實時計算與企業數據總線 ......... 111
6.4.8 數據探索與挖掘能力 ................. 111
6.4.9 安全性和權限管理 ..................... 112
6.4.10 混合負載管理 .. 112
第7 章 在不同應用環境下的Hadoop .... 115
7.1 在存儲密集型環境中的Hadoop ........... 116
7.2 在網絡密集型環境中的Hadoop ........... 118
7.3 在運算密集型環境中的Hadoop ........... 121
7.4 Hadoop 平臺的對比和選擇 ................... 127
7.4.1 為什么會選擇商用的Hadoop 系統 .... 127
7.4.2 商用Hadoop 系統之間的選擇 .. 130
第8 章 Hadoop 在互聯網公司的應用 .... 133
8.1 Hadoop 在騰訊 .... 134
8.2 Hadoop 在Facebook 的應用 ................. 138
8.3 金山的Hadoop .... 140
8.4 迅雷公司對Hadoop 的應用 .................. 144
第9 章 Hadoop 和行業應用之一 . 147
9.1 Hadoop 和運營商 148
9.2 Hadoop 和公用事業 ...... 163
9.3 Hadoop 和“智慧工商” ....................... 175
9.4 Hadoop 和政務云 183
第10 章 Hadoop 與“衣食住行”中的“食”和“行” .... 191
10.1 Hadoop 和“食” ........ 192
10.2 Hadoop 和“行” ........ 201
第11 章 Hadoop 和行業應用之三 ......... 209
11.1 Hadoop 和金融 .. 210
11.1.1 金融的大數據屬性 ................... 210
11.1.2 金融企業的風險控制 ............... 211
11.2 Hadoop 和醫療 .. 221
11.3 Hadoop 和物流 .. 226
11.4 Hadoop 和媒體 .. 229
第12 章 特殊場景下的Hadoop 系統 ..... 237
12.1 Hadoop 和實時系統 .... 238
12.2 Hadoop 平臺的一些特殊場景實現 ..... 243
第13 章 Hadoop 系統的挑戰和應對 ...... 247
13.1 Hadoop 系統使用須知 248
13.2 Hadoop 平臺風險點預估 ..................... 250
13.2.1 Namenode 的單點故障和系統的可用性 ................... 250
13.2.2 集群硬件故障導致平臺可靠性與可用性大幅降低 251
13.2.3 Hadoop 集群大數據安全和隱私問題 ........................ 252
13.3 Hadoop 平臺硬件故障的應對機制 ..... 252
13.3.1 監控軟硬件故障的應對機制 ... 253
13.3.2 斷電處理 255
13.4 Hadoop 平臺如何真正做到高可用性 . 255
13.4.1 Hadoop 系統的高可用性冗余性保障 ........................ 256
13.4.2 Facebook 的Namenode HA 的方案 .. 256
13.4.3 TDH 的Namenode 高可用性冗余解決方案 ............. 257
13.5 Hadoop 平臺安全性和隱私性的應對機制 ... 259
13.5.1 關于安全和隱私問題的7 個事項 ..... 259
13.5.2 星環的4A 級統一安全管理解決方案 ....................... 259
13.5.3 Hadoop 系統安全Checklist ..... 262
第14 章 Hadoop 的未來 .............. 263
14.1 Hadoop 未來的發展趨勢 ..................... 264
14.1.1 對數據系統的不斷升級 ........... 264
14.1.2 機器學習 264
14.2 Hadoop 和區塊鏈 ........ 265
附錄A 專業詞匯表 ....................... 267
附錄B 引用文獻 . 271
附錄C 參考網站一覽 ................... 273
附錄D HDFS 命令行列表 ............ 275
附錄E 本書引用案例索引 ............ 278
查看全部↓
第3 章 等同于大數據的Hadoop
在本章中,我們為讀者們介紹:
�8�5 Hadoop 的核心理念是什么?
�8�5 Hadoop 的核心基礎框架上包含哪些組件?
�8�5 Hadoop 的生態系統中還有哪些有用的組件?
�8�5 Spark 有什么用?
�8�5 Spark 和Hadoop 系統有什么關聯?
Hadoop 可以處理結構化數據,同時也可以很好地處理非結構化或者半結構化數據。在今天,Hadoop 已經成為存儲、處理和分析大數據的標準平臺。 當人們說要搭建大數據平臺時,很多時候默認的就是搭建Hadoop 平臺。
本章介紹的是Hadoop 核心系統上的各個組件,以及系統上相關的其他各種組件。由于本書的重點在于Hadoop 技術的實際應用,而不是講解Hadoop 技術,所以因篇幅關系,我們并不會在本章中描述所有的Hadoop 組件。
在本章的最后,我們會為讀者介紹Spark 系統。
3.1 Hadoop 理念
標準的Hadoop 系統存儲的數據是NoSQL 模式的。關于NoSQL 模式,我們會在第6章專門講述。用一句話來說,其實Hadoop 可以存儲以下任何類型的內容。
(1) 結構化數據;
(2) 半結構化數據,比如日志文檔;
(3) 完全沒有結構的內容,比如文本文件;
(4) 二進制內容,比如音頻、視頻等。
Hadoop 系統有以下特點,如圖3-1 所示。
(1) 可靠性高。
(2) 可擴展性好。
(3) 性價比高。
(4) 靈活。
圖3-1 Hadoop 系統的特性
3.2 Hadoop 核心基礎架構
Hadoop 系統上有很多不同的組件,在本節中我們討論的是對Hadoop 起到重要作用的核心組件。
3.2.1 Namenode 和Datanode
Namenode 又稱為MasterNode,主節點; Datanode 又稱為SlaveNode,從屬節點。合在一起,Namenode 和Datanode 之間有Master 和Slave 的關系,或者說從屬關系①。對于Namenode 和Datanode 節點還有各種不同的說法,比如“管理節點”和“工作節點”等,都說明數據節點是不可以脫離主節點單獨存在的。
在Datanode 上,有一個后臺的同名進程(Datanode),用以管理數據節點上所有的數據塊。通過這個進程,數據節點會定期和主節點通信,匯報本地數據的狀況。
在Hadoop 系統進行設計的時候,對數據節點作了以下的假設。
(1) 數據節點主要用來作存儲,額外的開銷越小越好;
(2) 對于普通的硬盤來說,任何硬盤都可能會失敗;
(3) 文件和數據塊的任何一個副本都是完全一致的。
因為數據節點上采用的一般是普通硬盤,那么每塊硬盤失效的概率大概是每年4%~5%。如果我們的系統上有100 個數據節點,而每一個數據節點都有12 塊硬盤,那么平均每周都會需要更換至少一塊硬盤。
正是因為這些假設,默認Hadoop 系統上每個文件和數據塊都有三個副本,而當中間任何的一個副本出現問題的時候,系統都會把對文件和數據塊的訪問切換到其他的副本上,并會重新設置使得文件和數據塊都保持有三個副本。
對于Hadoop 的用戶來說,他們并不需要了解數據存儲的細節,也不需要知道文件的各個數據塊是存儲在哪些數據節點上的,他們只需要對文件進行操作,對應的拆分和多個副本的存儲是由系統自動完成的。
和Datanode 一樣,Namenode 節點上也有一個同名的后臺進程(Namenode),而所有的文件匹配信息則保存在一個名為fsimage 的文件中,所有新的操作修改保存在一個名為edits的文件中。edits 文件中的內容會定期寫入fsimage 文件中。
把fsimage 和edits 文件中的信息綜合起來,我們就可以知道所有的數據文件和對應的數據塊的具體位置,而這些信息都會保存在Namenode 節點的內存中。
主節點和數據節點之間的通信協議如下。
① 在計算機領域,Master 和Slave 是常用的關系詞,用來表示主導和跟隨的狀態。在數據庫領域、網絡節點上都經常用到。
(1) 每隔3s,數據節點都會發送心跳(heartbeat)信息①給Namenode 節點,所以Namenode永遠都會實時知道哪些數據節點是在線的;
(2) 每隔6h,數據節點會發送完整的數據塊報告給Namenode,所以Namenode 會知道系統上各個文件和相關數據塊的準確位置。
這里的3s 和6h 都可以配置,這兩個數值是默認值。
文件和數據存儲在數據節點的信息是保存在主節點上的,所以對于眾多數據節點來說,主節點就像是一個指揮中心或者地址黃頁。換句話說,只有主節點才能準確指引用戶對每個文件的訪問。
那么Namenode 節點一旦失效該怎么辦?我們會在第13 章中專門討論Namenode 節點的高可用性問題。
最后我們來看一下文件是如何寫入系統中的,如圖3-2 所示。
圖3-2 在Hadoop 系統上創建文件的流程
圖3-2 中提到的“合約”是Namenode 上的一個小工具,確保文件和副本能夠被安全創建。因為在一個Hadoop 系統上只有Namenode 節點才知道數據文件是如何存儲的,所以所有的讀請求都是發送給Namenode 節點,由它來進行分配的。
查看全部↓