企業(yè)級(jí)大數(shù)據(jù)平臺(tái)構(gòu)建:架構(gòu)與實(shí)現(xiàn)
定 價(jià):69 元
叢書(shū)名:大數(shù)據(jù)技術(shù)叢書(shū)
- 作者:朱凱
- 出版時(shí)間:2018/4/1
- ISBN:9787111595953
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP274
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:1
- 開(kāi)本:16開(kāi)
這是一部教你如何從0到1架構(gòu)與實(shí)現(xiàn)一個(gè)企業(yè)級(jí)大數(shù)據(jù)平臺(tái)的著作,是作者在大數(shù)據(jù)和系統(tǒng)架構(gòu)領(lǐng)域超過(guò)20000小時(shí)的經(jīng)驗(yàn)總結(jié)。作者從橫向視角出發(fā),手把手教你如何拉通Hadoop體系技術(shù)棧,以此搭建一個(gè)真實(shí)可用、安全可靠的大數(shù)據(jù)平臺(tái)。通過(guò)閱讀本書(shū),一定能從本書(shū)的內(nèi)容中找到靈感和思路來(lái)應(yīng)對(duì)實(shí)際工作中面對(duì)的問(wèn)題。
目前市面上有很多Hadoop體系相關(guān)技術(shù)的書(shū)籍,比如像Hadoop、Spark這類火爆的技術(shù)已經(jīng)有大量的專業(yè)書(shū)籍進(jìn)行講解。但是這類書(shū)籍多是以縱向的視角去講解某一個(gè)具體的技術(shù)。而本書(shū)以橫向的視角出發(fā),橫向拉通Hadoop體系技術(shù)棧,以構(gòu)建一個(gè)真實(shí)可用、安全可靠的企業(yè)級(jí)大數(shù)據(jù)平臺(tái)為目標(biāo)來(lái)撰寫(xiě),本書(shū)以講解實(shí)際操作部署為主,其中特別描述了安全部分。同時(shí)在講解的過(guò)程中穿插介紹各種技術(shù)棧核心概念和背景, 幫助讀者進(jìn)行知識(shí)的應(yīng)用與整合。目前市場(chǎng)上這類橫向拉通Hadoop體系技術(shù)棧的數(shù)據(jù)并不多見(jiàn)。
Preface?前 言為什么要寫(xiě)這本書(shū)近年來(lái),大數(shù)據(jù)這個(gè)概念越來(lái)越火爆,特別是在國(guó)家層面,大數(shù)據(jù)被提升到了國(guó)家戰(zhàn)略的高度。在這樣的背景下,很多傳統(tǒng)企業(yè)開(kāi)始涉足大數(shù)據(jù)領(lǐng)域并研發(fā)自己的大數(shù)據(jù)技術(shù)平臺(tái)。在這股技術(shù)升級(jí)與轉(zhuǎn)型的浪潮中,傳統(tǒng)領(lǐng)域的程序員紛紛轉(zhuǎn)型投向大數(shù)據(jù)的懷抱。目前大數(shù)據(jù)技術(shù)開(kāi)源領(lǐng)域以Hadoop生態(tài)構(gòu)建的技術(shù)體系為主,F(xiàn)在市面上有很多與Hadoop體系相關(guān)的技術(shù)書(shū)籍,Hadoop、Spark這類火爆的技術(shù)已經(jīng)有大量?jī)?yōu)秀的專業(yè)書(shū)籍進(jìn)行講解。但我發(fā)現(xiàn)這類書(shū)籍多是以縱向的視角去講解某一類具體的技術(shù),而大數(shù)據(jù)領(lǐng)域涉及的知識(shí)繁多,在構(gòu)建大數(shù)據(jù)平臺(tái)的過(guò)程中我們不僅需要精通單個(gè)技術(shù)組件的知識(shí),還需要擁有橫向整合拉通Hadoop體系技術(shù)棧的能力。而這類橫向拉通Hadoop體系技術(shù)棧的書(shū)籍并不多見(jiàn)。所以我將自己在構(gòu)建大數(shù)據(jù)平臺(tái)上的一些經(jīng)驗(yàn)和實(shí)踐進(jìn)行了整理,分享給各位讀者。希望本書(shū)能夠?yàn)楦魑蛔x者構(gòu)建大數(shù)據(jù)平臺(tái)或解決方案提供一定的幫助。
讀者對(duì)象想了解大數(shù)據(jù)技術(shù),想進(jìn)入大數(shù)據(jù)領(lǐng)域的工程師:作為一個(gè)想進(jìn)入大數(shù)據(jù)領(lǐng)域的“新人”,你可以通過(guò)本書(shū)從宏觀的視角迅速對(duì)大數(shù)據(jù)的基礎(chǔ)設(shè)施和技術(shù)棧有一個(gè)全面的認(rèn)識(shí)和了解。本書(shū)可以作為你的入門(mén)指南和技術(shù)棧索引目錄。
大數(shù)據(jù)領(lǐng)域的中高級(jí)工程師:作為一個(gè)大數(shù)據(jù)領(lǐng)域的中高級(jí)工程師,對(duì)Hadoop生態(tài)體系的技術(shù)應(yīng)該早已運(yùn)用自如。通過(guò)本書(shū)的學(xué)習(xí),相信你對(duì)大數(shù)據(jù)領(lǐng)域多種技術(shù)棧的整合會(huì)有一個(gè)更深刻的認(rèn)識(shí)。同時(shí)本書(shū)中的一些平臺(tái)級(jí)方案也會(huì)幫助你提升在平臺(tái)架構(gòu)方面的造詣。
平臺(tái)架構(gòu)師:作為一個(gè)平臺(tái)架構(gòu)師,本書(shū)中的一些解決方案和設(shè)計(jì)思路可以作為你進(jìn)行系統(tǒng)架構(gòu)的參考資料。
本書(shū)主要內(nèi)容本書(shū)從企業(yè)的實(shí)際需求出發(fā),完整地介紹了構(gòu)建一個(gè)真實(shí)可用、安全可靠的企業(yè)級(jí)大數(shù)據(jù)平臺(tái)所需要運(yùn)用的知識(shí)體系,并詳細(xì)地描述了構(gòu)建企業(yè)級(jí)大數(shù)據(jù)平臺(tái)的設(shè)計(jì)方案和實(shí)施步驟。
本書(shū)邏輯上可分為3大部分,共8章,每個(gè)章節(jié)循序漸進(jìn):
第一部分(第1、2章)描述了企業(yè)級(jí)大數(shù)據(jù)平臺(tái)的需求和能力。
第二部分(第3~5章)著重講述了如何去搭建并配置一個(gè)大數(shù)據(jù)平臺(tái),以及如何構(gòu)建非常重要的平臺(tái)安全方案。
第三部分(第6~8章)以實(shí)戰(zhàn)的形式講解如何以Java編碼的方式實(shí)現(xiàn)平臺(tái)的基礎(chǔ)管理功能,以提升其易用性與可用性。
具體各章內(nèi)容如下:
第1章 闡述企業(yè)級(jí)大數(shù)據(jù)平臺(tái)的重要性,并解釋了為什么需要構(gòu)建一個(gè)統(tǒng)一的企業(yè)級(jí)大數(shù)據(jù)平臺(tái)。接著介紹作為一個(gè)企業(yè)級(jí)大數(shù)據(jù)平臺(tái)應(yīng)當(dāng)具備的能力,并解釋其原因。
第2章 介紹通過(guò)Hadoop生態(tài)體系去構(gòu)建一個(gè)企業(yè)級(jí)大數(shù)據(jù)平臺(tái)可以使用的技術(shù)棧,如HDFS、HBase、Spark等,并一一介紹了它們的核心概念。
第3章 介紹集群管理工具Ambari,并站在集群服務(wù)器的角度分類解釋如何去設(shè)計(jì)一個(gè)Hadoop集群,詳細(xì)描述了如何使用Ambari來(lái)安裝、管理和監(jiān)控一個(gè)Hadoop集群。
第4章 介紹企業(yè)級(jí)大數(shù)據(jù)平臺(tái)中非常重要的安全部分。首先闡述了企業(yè)級(jí)大數(shù)據(jù)平臺(tái)面臨的一些安全隱患,接著展示了一套初級(jí)解決方案并介紹了如何使用Knox和Ranger解決訪問(wèn)控制和數(shù)據(jù)授權(quán)與管理的問(wèn)題。
第5章 著重介紹Hadoop服務(wù)的安全方案,并說(shuō)明如何通過(guò)Kerberos協(xié)議等一系列措施來(lái)保障Hadoop集群的安全。
第6章 闡述大數(shù)據(jù)平臺(tái)在易用性上的一些遺留問(wèn)題,接著介紹如何通過(guò)CAS實(shí)現(xiàn)平臺(tái)的單點(diǎn)登錄功能,最后描述如何使用Java程序?qū)崿F(xiàn)統(tǒng)一的用戶管理服務(wù)。
第7章 簡(jiǎn)單闡述服務(wù)化的重要性以及如何將大數(shù)據(jù)平臺(tái)管理端的功能封裝成RESTful服務(wù)。首先介紹了如何使用Spring-Boot快速搭建一套R(shí)ESTful服務(wù)的程序框架,接著詳細(xì)描述如何實(shí)現(xiàn)Kerberos用戶查詢、Hive數(shù)據(jù)倉(cāng)庫(kù)查詢和元數(shù)據(jù)查詢等一系列RESTful服務(wù)。
第8章 介紹如何使用Java程序?qū)崿F(xiàn)Spark的任務(wù)提交與任務(wù)調(diào)度功能。首先著重介紹使用Java程序?qū)崿F(xiàn)Spark任務(wù)提交到Y(jié)ARN的三種方式,接著描述如何通過(guò)Quartz實(shí)現(xiàn)任務(wù)調(diào)度功能。
如何閱讀本書(shū)本書(shū)內(nèi)容會(huì)涉及大數(shù)據(jù)領(lǐng)域相關(guān)的技術(shù)知識(shí),所以假定讀者已具有一定的編程經(jīng)驗(yàn),了解分布式、多線程、集群等概念。本書(shū)部分內(nèi)容涉及集群服務(wù)的實(shí)戰(zhàn)安裝示例,所以需要準(zhǔn)備至少兩臺(tái)用于搭建測(cè)試環(huán)境的Linux服務(wù)器或虛擬機(jī)。
勘誤和支持由于水平有限,編寫(xiě)時(shí)間倉(cāng)促,書(shū)中難免會(huì)出現(xiàn)一些錯(cuò)誤或者不準(zhǔn)確的地方,懇請(qǐng)讀者批評(píng)指正。為此,我特意創(chuàng)建了一個(gè)提供在線支持與應(yīng)急方案的站點(diǎn)https://github.com/nauu/bigdatabook。你可以將書(shū)中的錯(cuò)誤發(fā)布在Bug勘誤表頁(yè)面中,如果你遇到任何問(wèn)題,也可以訪問(wèn)Q&A頁(yè)面,我將盡量在線上為讀者提供最滿意的解答。如果你有更多的寶貴意見(jiàn),也歡迎發(fā)送郵件至郵箱yawface@gmail.com或者訪問(wèn)新浪微博http://weibo.com/boness,期待能夠得到你們的真摯反饋。
致謝感謝我的家人,如果沒(méi)有你們的悉心照顧和鼓勵(lì),我不可能完成本書(shū)。
感謝我的公司遠(yuǎn)光軟件,為我提供了學(xué)習(xí)和成長(zhǎng)的環(huán)境,本書(shū)中的很多知識(shí)都來(lái)自工作中的實(shí)踐。
感謝我的摯友李根,為本書(shū)提出了許多寶貴的建議。
感謝我的同事兼伙伴們——解來(lái)甲、張琛、楊柯、潘登、胡藝、李國(guó)威、陳世賓、陳澤華,以及名單之外的更多朋友,感謝你們?cè)诠ぷ髦械恼疹櫤椭С,十分榮幸能夠與你們?cè)谶@個(gè)富有激情和活力的團(tuán)隊(duì)共事。
感謝機(jī)械工業(yè)出版社華章公司的編輯楊福川老師、孫海亮老師,在這一年多的時(shí)間中始終支持我的寫(xiě)作,你們的鼓勵(lì)和幫助引導(dǎo)我順利地完成全部書(shū)稿。
朱 凱
目 錄?Contents
推薦序 思者常新,厚積薄發(fā)
前 言
第1章 淺談企業(yè)級(jí)大數(shù)據(jù)平臺(tái)的重要性 1
1.1 缺乏統(tǒng)一大數(shù)據(jù)平臺(tái)的問(wèn)題 2
1.1.1 資源浪費(fèi) 2
1.1.2 數(shù)據(jù)孤島 2
1.1.3 服務(wù)孤島 3
1.1.4 安全存疑 3
1.1.5 缺乏可維護(hù)性和可擴(kuò)展性 3
1.1.6 缺乏可復(fù)制性 4
1.2 構(gòu)建統(tǒng)一大數(shù)據(jù)平臺(tái)的優(yōu)勢(shì) 4
1.3 企業(yè)級(jí)大數(shù)據(jù)平臺(tái)需要具備的基本能力 6
1.3.1 集群管理與監(jiān)控 7
1.3.2 數(shù)據(jù)接入 7
1.3.3 數(shù)據(jù)存儲(chǔ)與查詢 7
1.3.4 數(shù)據(jù)計(jì)算 8
1.3.5 平臺(tái)安全與管理 10
1.4 平臺(tái)輔助工具 12
1.5 本章小結(jié) 13
第2章 企業(yè)級(jí)大數(shù)據(jù)平臺(tái)技術(shù)棧介紹 15
2.1 HDFS 16
2.1.1 概述 16
2.1.2 RAID技術(shù) 17
2.1.3 核心設(shè)計(jì)目標(biāo) 18
2.1.4 命名空間 19
2.1.5 數(shù)據(jù)模型 20
2.1.6 Namenode和Datanode 20
2.1.7 使用場(chǎng)景 21
2.2 Zookeeper 22
2.2.1 概述 22
2.2.2 核心特性 23
2.2.3 命名空間 24
2.2.4 數(shù)據(jù)模型 24
2.2.5 節(jié)點(diǎn)狀態(tài)監(jiān)聽(tīng) 25
2.2.6 原子消息廣播協(xié)議 25
2.2.7 使用場(chǎng)景 32
2.3 HBase 33
2.3.1 概述 33
2.3.2 數(shù)據(jù)模型 34
2.3.3 Regions 34
2.3.4 HBase Master 35
2.3.5 Region Server 36
2.3.6 MemStore與HFile 37
2.3.7 使用場(chǎng)景 37
2.4 YARN 38
2.4.1 概述 38
2.4.2 資源模型和Container 40
2.4.3 ResourceManager 40
2.4.4 ApplicationMaster 40
2.4.5 NodeManager 41
2.4.6 單一集群架構(gòu) 41
2.4.7 工作流程 41
2.4.8 使用場(chǎng)景 43
2.5 Spark 43
2.5.1 概述 43
2.5.2 數(shù)據(jù)模型 45
2.5.3 編程模型和作業(yè)調(diào)度 45
2.5.4 依賴 46
2.5.5 容錯(cuò) 47
2.5.6 集群模式 47
2.5.7 使用場(chǎng)景 48
2.6 本章小結(jié) 49
第3章 使用Ambari安裝Hadoop集群 50
3.1 概述 50
3.2 集群設(shè)計(jì) 52
3.2.1 主控節(jié)點(diǎn) 52
3.2.2 存儲(chǔ)與計(jì)算節(jié)點(diǎn) 53
3.2.3 安全認(rèn)證與管理節(jié)點(diǎn) 54
3.2.4 協(xié)同管理與其他節(jié)點(diǎn) 54
3.3 Ambari的安裝、配置與啟動(dòng) 55
3.3.1 安裝前的準(zhǔn)備 55
3.3.2 安裝Ambari-Server 62
3.3.3 Ambari-Server目錄結(jié)構(gòu) 64
3.3.4 配置Ambari-Server 65
3.3.5 啟動(dòng)Ambari-Server 66
3.4 新建集群 67
3.4.1 設(shè)置集群名稱并配置HDP安裝包 67
3.4.2 配置集群 69
3.5 Ambari控制臺(tái)功能簡(jiǎn)介 77
3.5.1 集群服務(wù)管理 78
3.5.2 集群服務(wù)配置 80
3.5.3 輔助工具 82
3.6 本章小結(jié) 86
第4章 構(gòu)建企業(yè)級(jí)平臺(tái)安全方案 87
4.1 淺談企業(yè)級(jí)大數(shù)據(jù)平臺(tái)面臨的安全隱患 88
4.1.1 缺乏統(tǒng)一的訪問(wèn)控制機(jī)制 88
4.1.2 缺乏統(tǒng)一的資源授權(quán)策略 88
4.1.3 缺乏Hadoop服務(wù)安全保障 89
4.2 初級(jí)安全方案 89
4.2.1 訪問(wèn)控制 89
4.2.2 數(shù)據(jù)授權(quán)與管理 97
4.3 本章小結(jié) 110
第5章 Hadoop服務(wù)安全方案 111
5.1 Kerberos協(xié)議簡(jiǎn)介 111
5.2 使用FreeIPA安裝Kerberos和LDAP 113
5.2.1 安裝FreeIPA 115
5.2.2 IPA-Server管理控制臺(tái)功能介紹 119
5.2.3 IPA CLI功能介紹 122
5.3 開(kāi)啟Ambari的Kerberos安全選項(xiàng) 127
5.3.1 集成前的準(zhǔn)備 127
5.3.2 集成IPA 129
5.3.3 測(cè)試Kerberos認(rèn)證 133
5.4 本章小結(jié) 136
第6章 單點(diǎn)登錄與用戶管理 137
6.1 集成單點(diǎn)登錄 139
6.1.1 CAS簡(jiǎn)介 140
6.1.2 安裝CAS-Server 141
6.1.3 集成Knox網(wǎng)關(guān)與CAS-
Server 148
6.1.4 集成Ranger與CAS-Server 151
6.1.5 集成Ambari與CAS-Server 152
6.2 實(shí)現(xiàn)統(tǒng)一的用戶管理系統(tǒng) 155
6.3 使用Java程序調(diào)用腳本 161
6.4 創(chuàng)建Ranger擴(kuò)展用戶 166
6.5 本章小結(jié) 169
第7章 搭建平臺(tái)管理端RESTful服務(wù) 170
7.1 搭建RESTful服務(wù)框架 170
7.2 用戶查詢 174
7.2.1 引入LDAP模塊 174
7.2.2 配置LDAP 174
7.2.3 實(shí)現(xiàn)持久層 177
7.2.4 實(shí)現(xiàn)服務(wù)層 181
7.2.5 實(shí)現(xiàn)RESTful服務(wù) 181
7.2.6 整合用戶管理 183
7.3 RESTful服務(wù)安全認(rèn)證 184
7.3.1 用戶登錄服務(wù) 185
7.3.2 使用JWT認(rèn)證 185
7.3.3 創(chuàng)建用戶登錄RESTful服務(wù) 188
7.3.4 認(rèn)證過(guò)濾器 194
7.3.5 測(cè)試服務(wù)安全認(rèn)證 198
7.4 數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)查詢 200
7.4.1 創(chuàng)建JDBC連接 200
7.4.2 Kerberos登錄 202
7.4.3 使用JDBC協(xié)議查詢 202
7.4.4 實(shí)現(xiàn)服務(wù)層與RESTful服務(wù) 206
7.4.5 測(cè)試查詢 207
7.5 數(shù)據(jù)倉(cāng)庫(kù)元數(shù)據(jù)查詢 208
7.5.1 使用query服務(wù)查詢數(shù)倉(cāng)元數(shù)據(jù) 208
7.5.2 引入JdbcTemplate模塊 209
7.5.3 增加Hive元數(shù)據(jù)庫(kù)配置 210
7.5.4 實(shí)現(xiàn)元數(shù)據(jù)持久層 211
7.5.5 實(shí)現(xiàn)元數(shù)據(jù)服務(wù)層與RESTful服務(wù) 216
7.5.6 測(cè)試元數(shù)據(jù)查詢 218
7.6 本章小結(jié) 219
第8章 Spark任務(wù)與調(diào)度服務(wù) 220
8.1 提交Spark任務(wù)的3種方式 220
8.1.1 使用Spark-Submit腳本提交 220
8.1.2 使用Spark Client提交 226
8.1.3 使用YARN RESTful API提交 229
8.2 查詢Spark日志 234
8.3 任務(wù)調(diào)度 236
8.3.1 引入Quartz模塊 237
8.3.2 增加Quartz配置 237
8.3.