如果你是一位在校大學生,對大數據感興趣,也知道使用的企業越來越多,市場需求更是日新月異,但苦於自己基礎不夠,心有余而力不足;也看過不少大數據方面的書籍、博客、視頻等,但感覺進步不大;如果你是一位在職人員,但目前主要使用傳統技術,雖然對大數據很有興趣,也深知其對未來的影響,但因時間不夠,雖有一定的基礎,常常也是打兩天魚、曬三天網,進展不是很理想。如果你有上述疑惑或遇到相似問題,本書正好比較適合你。
本書從OpenStack雲平台搭建、軟件部署、需求開發實現到結果展示,以縱向角度講解了生產性大數據項目上線的整個流程;以完成一個實際項目需求貫穿各章節,講述了Hadoop生態圈中互聯網爬蟲技術、Sqoop、Hive、HBase組件協同工作流程,並展示了Spark計算框架、R制圖軟件和SparkRHive組件的使用方法。
張魁
虛擬化工程師,Openstack架構師,蘇州某高校雲平台架構師,十余年Linux系統運維實踐及虛擬化開發經驗,4年Linux系統補丁開發經驗。先后在美企擔任虛擬化應用運維、服務器集群開發運維工程師或系統開發架構師,高校信息中心雲平台架構師,主要關注Openstack、Docker及分布式存儲等。
張粵磊
DBA、大數據架構師,十余年一線數據處理數據分析實戰經驗。先后在咨詢、金融、互聯網行業擔任數據平台技術負責人或架構師。主要關注大數據基礎平台、大數據模型構建和大數據分析。
劉未昕
從事IT研發和項目管理工作十余年以上。使用多種程序設計語言,目前研究方向主要是大數據生態系統,從事金融、數據倉庫等領域研發。五年以上IT行業授課、培訓經驗,並在多所高校擔任外聘講師。
吳茂貴
運籌學與控制論專業研究生學歷。畢業后主要參與數據倉庫、商務智能等方面的項目,期間做過數據處理、數據分析、數據挖掘等工作,行業涉及金融、物流、制造業等。近期主要做復雜數據存儲、清理、轉換等工作,同時在大數據方面也很有興趣並投入大量時間和精力,且將持續為之。
目錄
第1章 為什麼要自己動手做大數據系統1
1.1 大數據時代1
1.2 實戰大數據項目2
1.3 大數據演練平台2
第2章 項目背景及准備4
2.1 項目背景4
2.2 項目簡介4
2.3 項目架構4
2.4 操作系統5
2.5 數據存儲7
2.6 數據處理8
2.7 開發工具9
2.8 調試工具10
2.9 版本管理10
第3章 大數據環境搭建和配置11
3.1 各組件功能說明11
3.1.1 各種數據源的采集工具12
3.1.2 企業大數據存儲工具12
3.1.3 企業大數據系統的數據倉庫工具12
3.1.4 企業大數據系統的分析計算工具13
3.1.5 企業大數據系統的數據庫工具13
3.2 大數據系統各組件安裝部署配置13
3.2.1 安裝的前期准備工作13
3.2.2 Hadoop基礎環境安裝及配置15
3.2.3 Hive安裝及配置21
3.2.4 Sqoop安裝及配置24
3.2.5 Spark安裝及配置30
3.2.6 Zookeeper安裝及配置31
3.2.7 HBase安裝及配置33
3.3 自動化安裝及部署說明35
3.3.1 自動化安裝及部署整體架構設計35
3.3.2 大數據系統自動化部署邏輯調用關系36
3.4 本章小結43
第4章 大數據的獲取44
4.1 使用爬蟲獲取互聯網數據45
4.2 Python和Scrapy框架的安裝45
4.3 抓取和解析招聘職位信息47
4.4 職位信息的落地51
4.5 兩個爬蟲配合工作53
4.6 讓爬蟲的架構設計更加合理55
4.7 獲取數據的其他方式57
4.8 使用Sqoop同步論壇中帖子數據57
4.9 本章小結59
第5章 大數據的處理60
5.1 Hive是什麼60
5.2 為什麼使用Hive做數據倉庫建模60
5.3 飛谷項目中Hive建模步驟61
5.3.1 邏輯模型的創建62
5.3.2 物理模型的創建67
5.3.3 將爬蟲數據導入stg_job表74
5.4 使用Hive進行數據清洗轉換77
5.5 數據清洗轉換的必要性78
5.6 使用HiveQL清洗數據、提取維度信息79
5.6.1使用HQL清洗數據79
5.6.2提取維度信息82
5.7 定義HiveUDF封裝處理邏輯85
5.7.1 HiveUDF的開發、部署和調用86
5.7.2 Python版本的UDF89
5.8 使用左外連接構造聚合表rpt_job92
5.9 讓數據處理自動調度96
5.9.1 HQL的幾種執行方式96
5.9.2 HiveThrift服務99
5.9.3 使用JDBC連接Hive100
5.9.4 Python調用HiveServer服務103
5.9.5 用crontab實現的任務調度105
5.10 本章小結107
第6章 大數據的存儲108
6.1 NoSQL及HBase簡介108
6.2 HBase中的主要概念110
6.3 HBase客戶端及JavaAPI111
6.4 Hive數據導入HBase的兩種方案114
6.4.1 利用既有的JAR包實現整合114
6.4.2 手動編寫MapReduce程序116
6.5 使用JavaAPI查詢HBase中的職位信息122
6.5.1 為什麼是HBase而非Hive122
6.5.2 多條件組合查詢HBase中的職位信息123
6.6 如何顯示職位表中的某條具體信息132
6.7 本章小結133
第7章 大數據的展示134
7.1 概述134
7.2 數據分析的一般步驟135
7.3 用R來做數據分析展示135
7.3.1 在Ubuntu上安裝R135
7.3.2 R的基本使用方式137
7.4 用Hive充當R的數據來源139
7.4.1 RHive組件139
7.4.2 把R圖表整合到Web頁面中145
7.5 本章小結151
第8章 大數據的分析挖掘152
8.1 基於Spark的數據挖掘技術152
8.2 Spark和Hadoop的關系153
8.3 在Ubuntu上安裝Spark集群154
8.3.1 JDK和Hadoop的安裝154
8.3.2 安裝Scala154
8.3.3 安裝Spark155
8.4 Spark的運行方式157
8.5 使用Spark替代HadoopYarn引擎160
8.5.1 使用spark—sql查看Hive表160
8.5.2 在beeline客戶端使用Spark引擎161
8.5.3 在Java代碼中引用Spark的ThriftServer163
8.6 對招聘公司名稱做全文檢索168
8.6.1 從HDFS數據源構造JavaRDD169
8.6.2 使用SparkSQL操作RDD173
8.6.3 把RDD運行結果展現在前端174
8.7 如何把Spark用得更好175
8.8 SparkR組件的使用177
8.8.1 SparkR的安裝及啟動177
8.8.2 運行自帶的Sample例子179
8.8.3 利用SparkR生成職位統計餅圖179
8.9 本章小結181
第9章 自己動手搭建支撐大數據系統的雲平台182
9.1 雲平台架構182
9.1.1 一期雲基礎平台架構182
9.1.2 二期雲基礎平台架構184
9.2 雲平台搭建及部署185
9.2.1 安裝組件前准備185
9.2.2 Identity(Keystone)組件190
9.2.3 Image(Glance)組件198
9.2.4 Compute(Nova)組件201
9.2.5 Storage(Cinder)組件206
9.2.6 Networking(Neutron)組件210
9.2.7 Ceph分布式存儲系統221
9.2.8 Dashboard(Horizon)組件230
9.3 Identity(Keystone)與LDAP的整合232
9.4 配置Image組件大鏡像部署235
9.5 配置業務系統無縫遷移236
9.6 本章小結237
參考文獻238
1.1 大數據時代1
1.2 實戰大數據項目2
1.3 大數據演練平台2
第2章 項目背景及准備4
2.1 項目背景4
2.2 項目簡介4
2.3 項目架構4
2.4 操作系統5
2.5 數據存儲7
2.6 數據處理8
2.7 開發工具9
2.8 調試工具10
2.9 版本管理10
第3章 大數據環境搭建和配置11
3.1 各組件功能說明11
3.1.1 各種數據源的采集工具12
3.1.2 企業大數據存儲工具12
3.1.3 企業大數據系統的數據倉庫工具12
3.1.4 企業大數據系統的分析計算工具13
3.1.5 企業大數據系統的數據庫工具13
3.2 大數據系統各組件安裝部署配置13
3.2.1 安裝的前期准備工作13
3.2.2 Hadoop基礎環境安裝及配置15
3.2.3 Hive安裝及配置21
3.2.4 Sqoop安裝及配置24
3.2.5 Spark安裝及配置30
3.2.6 Zookeeper安裝及配置31
3.2.7 HBase安裝及配置33
3.3 自動化安裝及部署說明35
3.3.1 自動化安裝及部署整體架構設計35
3.3.2 大數據系統自動化部署邏輯調用關系36
3.4 本章小結43
第4章 大數據的獲取44
4.1 使用爬蟲獲取互聯網數據45
4.2 Python和Scrapy框架的安裝45
4.3 抓取和解析招聘職位信息47
4.4 職位信息的落地51
4.5 兩個爬蟲配合工作53
4.6 讓爬蟲的架構設計更加合理55
4.7 獲取數據的其他方式57
4.8 使用Sqoop同步論壇中帖子數據57
4.9 本章小結59
第5章 大數據的處理60
5.1 Hive是什麼60
5.2 為什麼使用Hive做數據倉庫建模60
5.3 飛谷項目中Hive建模步驟61
5.3.1 邏輯模型的創建62
5.3.2 物理模型的創建67
5.3.3 將爬蟲數據導入stg_job表74
5.4 使用Hive進行數據清洗轉換77
5.5 數據清洗轉換的必要性78
5.6 使用HiveQL清洗數據、提取維度信息79
5.6.1使用HQL清洗數據79
5.6.2提取維度信息82
5.7 定義HiveUDF封裝處理邏輯85
5.7.1 HiveUDF的開發、部署和調用86
5.7.2 Python版本的UDF89
5.8 使用左外連接構造聚合表rpt_job92
5.9 讓數據處理自動調度96
5.9.1 HQL的幾種執行方式96
5.9.2 HiveThrift服務99
5.9.3 使用JDBC連接Hive100
5.9.4 Python調用HiveServer服務103
5.9.5 用crontab實現的任務調度105
5.10 本章小結107
第6章 大數據的存儲108
6.1 NoSQL及HBase簡介108
6.2 HBase中的主要概念110
6.3 HBase客戶端及JavaAPI111
6.4 Hive數據導入HBase的兩種方案114
6.4.1 利用既有的JAR包實現整合114
6.4.2 手動編寫MapReduce程序116
6.5 使用JavaAPI查詢HBase中的職位信息122
6.5.1 為什麼是HBase而非Hive122
6.5.2 多條件組合查詢HBase中的職位信息123
6.6 如何顯示職位表中的某條具體信息132
6.7 本章小結133
第7章 大數據的展示134
7.1 概述134
7.2 數據分析的一般步驟135
7.3 用R來做數據分析展示135
7.3.1 在Ubuntu上安裝R135
7.3.2 R的基本使用方式137
7.4 用Hive充當R的數據來源139
7.4.1 RHive組件139
7.4.2 把R圖表整合到Web頁面中145
7.5 本章小結151
第8章 大數據的分析挖掘152
8.1 基於Spark的數據挖掘技術152
8.2 Spark和Hadoop的關系153
8.3 在Ubuntu上安裝Spark集群154
8.3.1 JDK和Hadoop的安裝154
8.3.2 安裝Scala154
8.3.3 安裝Spark155
8.4 Spark的運行方式157
8.5 使用Spark替代HadoopYarn引擎160
8.5.1 使用spark—sql查看Hive表160
8.5.2 在beeline客戶端使用Spark引擎161
8.5.3 在Java代碼中引用Spark的ThriftServer163
8.6 對招聘公司名稱做全文檢索168
8.6.1 從HDFS數據源構造JavaRDD169
8.6.2 使用SparkSQL操作RDD173
8.6.3 把RDD運行結果展現在前端174
8.7 如何把Spark用得更好175
8.8 SparkR組件的使用177
8.8.1 SparkR的安裝及啟動177
8.8.2 運行自帶的Sample例子179
8.8.3 利用SparkR生成職位統計餅圖179
8.9 本章小結181
第9章 自己動手搭建支撐大數據系統的雲平台182
9.1 雲平台架構182
9.1.1 一期雲基礎平台架構182
9.1.2 二期雲基礎平台架構184
9.2 雲平台搭建及部署185
9.2.1 安裝組件前准備185
9.2.2 Identity(Keystone)組件190
9.2.3 Image(Glance)組件198
9.2.4 Compute(Nova)組件201
9.2.5 Storage(Cinder)組件206
9.2.6 Networking(Neutron)組件210
9.2.7 Ceph分布式存儲系統221
9.2.8 Dashboard(Horizon)組件230
9.3 Identity(Keystone)與LDAP的整合232
9.4 配置Image組件大鏡像部署235
9.5 配置業務系統無縫遷移236
9.6 本章小結237
參考文獻238
序
一個游泳愛好者,很大的煩惱是什麼?沒有好的教練?缺少好的教材?也許不是。如果哪天自己能擁有一個游泳池,可隨時暢游,而且維護成本很低廉,甚至免費,同時還有教練的指導和一些游泳愛好者一起,那應該是一件很美的事。
對於一個大數據愛好者,如果也能擁有一個屬於自己的大數據實踐環境,能夠方便、快捷、隨時隨地使用真實環境,同時還有一些實戰性、生產性的項目或課件,與一些志同道合的小伙伴一起攻堅克難,應該也是一件令人期待的事。
「紙上得來終覺淺,絕知此事要躬行」。要掌握一門技術,尤其像大數據相關技術,涉及的內容多,范圍廣,對環境的要求高,如果只是看看書、看看視頻,很難深入理解,更不用說融會貫通了。一些有條件的學生,他們可以搭幾個節點,組成一個微型大數據群,照着書中的一些實例練習,但這些練習往往支離破碎,缺乏系統性、生產性,更不用說包含生產性項目中的版本控制、質量管理和流程規范等。而這些對實施生產項目來說很重要,有時其重要性超過了對技術的要求。本書,就是為彌補這些內容而寫的。
除了實戰性、生產性的課件外,我們還提供了隨時隨地可操作、可實踐的大數據雲平台——飛谷雲,這是我們自主開發的大數據平台,該平台用戶可通過外網登錄,與論壇及門戶實現無縫連接。此外,還有很多志同道合的大數據愛好者一起學習、一起做項目。
對於一個大數據愛好者,如果也能擁有一個屬於自己的大數據實踐環境,能夠方便、快捷、隨時隨地使用真實環境,同時還有一些實戰性、生產性的項目或課件,與一些志同道合的小伙伴一起攻堅克難,應該也是一件令人期待的事。
「紙上得來終覺淺,絕知此事要躬行」。要掌握一門技術,尤其像大數據相關技術,涉及的內容多,范圍廣,對環境的要求高,如果只是看看書、看看視頻,很難深入理解,更不用說融會貫通了。一些有條件的學生,他們可以搭幾個節點,組成一個微型大數據群,照着書中的一些實例練習,但這些練習往往支離破碎,缺乏系統性、生產性,更不用說包含生產性項目中的版本控制、質量管理和流程規范等。而這些對實施生產項目來說很重要,有時其重要性超過了對技術的要求。本書,就是為彌補這些內容而寫的。
除了實戰性、生產性的課件外,我們還提供了隨時隨地可操作、可實踐的大數據雲平台——飛谷雲,這是我們自主開發的大數據平台,該平台用戶可通過外網登錄,與論壇及門戶實現無縫連接。此外,還有很多志同道合的大數據愛好者一起學習、一起做項目。
網路書店
類別
折扣
價格
-
新書$294