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