本書用于Hadoop Spark快速上手,解析Hadoop和Spark生態系統,通過原理解說和實例操作每一個組件,讓讀者能夠輕松跨入大數據分析與開發的大門。 全書共12章,大致分為3個部分,第1部分(第1~7章)講解Hadoop的原生態組件,包括Hadoop、ZooKeeper、HBase、Hive環境搭建與安裝,以及介紹MapReduce、HDFS、ZooKeeper、HBase、Hive原理和Apache版本環境下實戰操作。第2部分(第8~11章)講解Spark的原生態組件,包括Spark Core、Spark SQL、Spark Streaming、DataFrame,以及介紹Scala、Spark API、Spark SQL、Spark Streaming、DataFrame原理和CDH版本環境下實戰操作,其中Flume和Kafka屬于Apache開源項目也放在本篇講解。第3部分(第12章)講解兩個大數據項目,包絡網頁日志離線項目和實時項目,在CDH版本環境下通過這兩個項目將Hadoop和Spark原生態組件進行整合,一步步帶領讀者學習和實戰操作。 本書適合想要快速掌握大數據技術的初學者,也適合作為高等院校和培訓機構相關專業師生的教學參考書和實驗用書。
通過實際操作,快速學習Hadoop Spark大數據技術。解析Hadoop Spark常用組件原理和實戰操作,讓讀者快速了解組件原理和應用。結合Hadoop Spark原生態組件操作,使得讀者了解當今互聯網應用極為廣泛的集群技術。幫助讀者構建Hadoop Spark兩大生態系統全局觀。
余輝,中國科學院大學碩士研究生畢業,研究方向為云計算和大數據?,F供職于某上市公司擔任技術經理,并在 Oracle OAEC人才產業集團大數據學院擔任大數據講師。 曾在清華大學電子工程系NGNLab研究室擔任軟件工程師。
第1章 Hadoop概述 1
1.1 Hadoop簡介 1
1.2 Hadoop版本和生態系統 3
1.3 MapReduce簡介 7
1.4 HDFS簡介 8
1.5 Eclipse Java開發環境搭建 10
1.5.1 Java安裝 10
1.5.2 Maven安裝 11
1.5.3 Eclipse安裝和配置 12
1.5.4 Eclipse創建Maven項目 16
1.5.5 Eclipse其余配置 19
1.6 小結 21
第2章 Hadoop集群搭建 22
2.1 虛擬機簡介 22
2.2 虛擬機配置 24
2.3 Linux系統設置 31
2.4 Apache版本Hadoop集群搭建 36
2.5 CDH版本Hadoop集群搭建 44
2.5.1 安裝前期準備 44
2.5.2 Cloudera Manager安裝 45
2.5.3 CDH安裝 46
2.6 小結 55
第3章 Hadoop基礎與原理 56
3.1 MapReduce原理介紹 56
3.1.1 MapReduce的框架介紹 56
3.1.2 MapReduce的執行步驟 58
3.2 HDFS原理介紹 59
3.2.1 HDFS是什么 59
3.2.2 HDFS架構介紹 59
3.3 HDFS實戰 62
3.3.1 HDFS客戶端的操作 62
3.3.2 Java操作HDFS 65
3.4 YARN原理介紹 69
3.5 小結 71
第4章 ZooKeeper實戰 72
4.1 ZooKeeper原理介紹 72
4.1.1 ZooKeeper基本概念 72
4.1.2 ZooKeeper工作原理 73
4.1.3 ZooKeeper工作流程 76
4.2 ZooKeeper安裝 78
4.3 ZooKeeper實戰 80
4.3.1 ZooKeeper客戶端的操作 80
4.3.2 Java操作ZooKeeper 81
4.3.3 Scala操作ZooKeeper 85
4.4 小結 87
第5章 MapReduce實戰 88
5.1 前期準備 88
5.2 查看YARN上的任務 95
5.3 加載配置文件 95
5.4 MapReduce實戰 96
5.5 小結 121
第6章 HBase實戰 122
6.1 HBase簡介及架構 122
6.2 HBase安裝 127
6.3 HBase實戰 129
6.3.1 HBase客戶端的操作 129
6.3.2 Java操作HBase 132
6.3.3 Scala操作HBase 136
6.4 小結 140
第7章 Hive實戰 141
7.1 Hive介紹和架構 141
7.2 Hive數據類型和表結構 143
7.3 Hive分區、桶與傾斜 144
7.4 Hive安裝 146
7.5 Hive實戰 148
7.5.1 Hive客戶端的操作 148
7.5.2 Hive常用命令 154
7.5.3 Java操作Hive 155
7.6 小結 161
第8章 Scala實戰 162
8.1 Scala簡介與安裝 162
8.2 IntelliJ IDEA開發環境搭建 164
8.2.1 IntelliJ IDEA簡介 164
8.2.2 IntelliJ IDEA安裝 164
8.2.3 軟件配置 166
8.3 IntelliJ IDEA建立Maven項目 171
8.4 基礎語法 176
8.5 函數 179
8.6 控制語句 181
8.7 函數式編程 184
8.8 模式匹配 189
8.9 類和對象 191
8.10 Scala 異常處理 194
8.11 Trait(特征) 195
8.12 Scala文件I/O 196
8.13 作業 198
8.13.1 九九乘法表 198
8.13.2 冒泡排序 199
8.13.3 設計模式Command 200
8.13.4 集合對稱判斷 202
8.13.5 綜合題 204
8.14 小結 206
第9章 Flume實戰 207
9.1 Flume概述 207
9.2 Flume的結構 208
9.3 Flume安裝 211
9.4 Flume實戰 212
9.5 小結 214
第10章 Kafka實戰 215
10.1 Kafka概述 215
10.1.1 簡介 215
10.1.2 使用場景 217
10.2 Kafka設計原理 218
10.3 Kafka主要配置 222
10.4 Kafka客戶端操作 224
10.5 Java操作Kafka 226
10.5.1 生產者 226
10.5.2 消費者 228
10.6 Flume連接Kafka 229
10.7 小結 233
第11章 Spark實戰 234
11.1 Spark概述 234
11.2 Spark基本概念 234
11.3 Spark算子實戰及功能描述 238
11.3.1 Value型Transformation算子 238
11.3.2 Key-Value型Transformation算子 242
11.3.3 Actions算子 245
11.4 Spark Streaming實戰 248
11.5 Spark SQL和DataFrame實戰 253
11.6 小結 266
第12章 大數據網站日志分析項目 267
12.1 項目介紹 267
12.2 網站離線項目 267
12.2.1 業務框架圖 267
12.2.2 子服務“趨勢分析”詳解 268
12.2.3 表格的設計 272
12.2.4 提前準備 274
12.2.5 項目步驟 287
12.3 網站實時項目 297
12.3.1 業務框架圖 297
12.3.2 子服務“當前在線”詳解 297
12.3.3 表格的設計 302
12.3.4 提前準備 304
12.3.5 項目步驟 327
12.4 小結 337
第 1 章? Hadoop概述 ?
1.1 Hadoop簡介1. Hadoop的由來Hadoop是Doug Cutting(Apache Lucene創始人)開發的、使用廣泛的文本搜索庫。Hadoop起源于Apache Nutch,后者是一個開源的網絡搜索引擎,本身也是Lucene項目的一部分。2. Hadoop名字的起源Hadoop這個名字不是一個縮寫,它是一個虛構的名字。該項目的創建者Doug Cutting如此解釋Hadoop的得名:“這個名字是我孩子給一頭吃飽了的棕黃色大象命名的。我的命名標準就是簡短、容易發音和拼寫,沒有太多的意義,并且不會被用于別處。小孩子是這方面的高手。Googol就是由小孩命名的。”(Google來源于Googol一詞。GooGol指的是10的100次冪(方),代表互聯網上的海量資源。公司創建之初,肖恩?安德森在搜索該名字是否已經被注冊時,將Googol誤打成了Google。)Hadoop及其子項目和后繼模塊所使用的名字往往也與其功能不相關,經常用一頭大象或其他動物主題(例如:Pig)。較小的各個組成部分給予更多描述性(因此也更俗)的名稱。這是一個很好的原則,因為它意味著可以大致從其名字猜測其功能,例如,jobtracker 的任務就是跟蹤MapReduce作業。從頭開始構建一個網絡搜索引擎是一個雄心勃勃的目標,不只是要編寫一個復雜的、能夠抓取和索引網站的軟件,還需要面臨著沒有專業運行團隊支持運行它的挑戰,因為它有那么多獨立部件。同樣昂貴的還有:據Mike Cafarella和Doug Cutting估計,一個支持此10億頁的索引,需要價值約50萬美元的硬件投入,每月運行費用還需要3萬美元。 不過,他們相信這是一個有價值的目標,因為這會開放并最終使搜索引擎算法普及化。Nutch項目開始于2002年,一個可工作的抓取工具和搜索系統很快浮出水面。但他們意識到,他們的架構將無法擴展到擁有數十億網頁的網絡。在2003年發表的一篇描述Google分布式文件系統(簡稱GFS)的論文為他們提供了及時的幫助,文中稱Google正在使用此文件系統。GFS或類似的東西,可以解決他們在網絡抓取和索引過程中產生的大量的文件的存儲需求。具體而言,GFS會省掉管理所花的時間,如管理存儲節點。在2004年,他們開始寫一個開放源碼的應用,即Nutch的分布式文件系統(NDFS)。2004年,Google發表了論文,向全世界介紹了MapReduce。2005年初,Nutch的開發者在Nutch上有了一個可工作的MapReduce應用,到當年年中,所有主要的Nutch算法被移植到使用MapReduce和NDFS來運行。Nutch中的NDFS和MapReduce實現的應用遠不只是搜索領域,在2006年2月,他們從Nutch轉移出來成為一個獨立的Lucene子項目,稱為Hadoop。大約在同一時間,Doug Cutting加入雅虎,Yahoo提供一個專門的團隊和資源將Hadoop發展成一個可在網絡上運行的系統(見后文的補充材料)。在2008年2月,雅虎宣布其搜索引擎產品部署在一個擁有1萬個內核的Hadoop集群上。 2008年1月,Hadoop已成為Apache頂級項目,證明它是成功的,是一個多樣化、活躍的社區。通過這次機會,Hadoop成功地被雅虎之外的很多公司應用,如Last.fm、Facebook和《紐約時報》。一些應用在Hadoop維基有介紹,Hadoop維基的網址為wiki.apache.org/hadoop/PoweredBy。有一個良好的宣傳范例,《紐約時報》使用亞馬遜的EC2云計算將4 TB的報紙掃描文檔壓縮,轉換為用于Web的PDF文件。 這個過程歷時不到24小時,使用100臺機器運行,如果不結合亞馬遜的按小時付費的模式(即允許《紐約時報》在很短的一段時間內訪問大量機器)和Hadoop易于使用的并行程序設計模型,該項目很可能不會這么快開始啟動。2008年4月,Hadoop打破世界紀錄,成為最快排序1 TB數據的系統,運行在一個910節點的集群,Hadoop在209秒內排序了1 TB的數據(還不到三分半鐘),擊敗了前一年的297秒冠軍。同年11月,谷歌在報告中聲稱,它的MapReduce實現執行1 TB數據的排序只用了68秒。在2009年5月,有報道宣稱Yahoo的團隊使用Hadoop對1 TB的數據進行排序只花了62秒時間。構建互聯網規模的搜索引擎需要大量的數據,因此需要大量的機器來進行處理。Yahoo!Search包括四個主要組成部分:Crawler,從因特網下載網頁;WebMap,構建一個網絡地圖;Indexer,為頁面構建一個反向索引;Runtime(運行時),回答用戶的查詢。WebMap是一幅圖,大約包括一萬億條邊(每條代表一個網絡鏈接)和一千億個節點(每個節點代表不同的網址)。創建和分析此類大圖需要大量計算機運行若干天。在2005年初,WebMap所用的基礎設施名為Dreadnaught,需要重新設計以適應更多節點的需求。Dreadnaught成功地從20個節點擴展到600個,但還需要一個重新的設計,以進一步擴大。Dreadnaught與MapReduce有許多相似的地方,但靈活性更強,結構更少。具體說來,Dreadnaught作業可以將輸出發送到此作業下一階段中的每一個分段(fragment),但排序是在庫函數中完成的。在實際情形中,大多數WebMap階段都是成對存在的,對應于MapReduce。因此,WebMap應用并不需要為了適應MapReduce而進行大量重構。Eric Baldeschwieler(Eric14)組建了一個小團隊,他們開始設計并原型化一個新的框架(原型為GFS和MapReduce,用C 語言編寫),打算用它來替換Dreadnaught。盡管當務之急是需要一個WebMap新框架,但顯然,標準化對于整個Yahoo! Search平臺至關重要,并且通過使這個框架泛化,足以支持其他用戶,這樣他們才能夠充分運用對整個平臺的投資。與此同時,雅虎在關注Hadoop(當時還是Nutch的一部分)及其進展情況。2006年1月,雅虎聘請了Doug Cutting,一個月后,決定放棄自己的原型,轉而使用Hadoop。相較于雅虎自己的原型和設計,Hadoop的優勢在于它已經在20個節點上實際應用過。這樣一來,雅虎便能在兩個月內搭建一個研究集群,并著手幫助真正的客戶使用這個新的框架,速度比原來預計的快許多。另一個明顯的優點是Hadoop已經開源,較容易(雖然遠沒有那么容易!)從雅虎法務部門獲得許可在開源方面進行工作。因此,雅虎在2006年初設立了一個200個節點的研究集群,他們將WebMap的計劃暫時擱置,轉而為研究用戶支持和發展Hadoop。3. Hadoop大事記2004年,最初的版本(現在稱為HDFS和MapReduce)由Doug Cutting和Mike Cafarella開始實施。2005年12月,Nutch移植到新的框架,Hadoop在20個節點上穩定運行。2006年1月,Doug Cutting加入雅虎。2006年2月,Apache Hadoop項目正式啟動以支持MapReduce和HDFS的獨立發展。2006年2月,雅虎的網格計算團隊采用Hadoop。2006年4月,標準排序(10 GB每個節點)在188個節點上運行47.9個小時。2006年5月,雅虎建立了一個300個節點的Hadoop研究集群。2006年5月,標準排序在500個節點上運行42個小時(硬件配置比4月的更好)。2006年11月,研究集群增加到600個節點。2006年12月,標準排序在20個節點上運行1.8個小時,100個節點3.3小時,500個節點5.2小時,900個節點7.8個小時。2007年1月,研究集群到達900個節點。2007年4月,研究集群達到兩個1000個節點的集群。2008年4月,贏得世界最快1 TB數據排序在900個節點上用時209秒。2008年10月,研究集群每天裝載10 TB的數據。2009年3月,17個集群總共24 000臺機器。2009年4月,贏得每分鐘排序,59秒內排序500 GB(在1400個節點上)和173分鐘內排序100 TB數據(在3400個節點上)。1.2 Hadoop版本和生態系統1. Hadoop版本的優缺點目前市面上Hadoop版本主要有兩種:Apache版本和CDH版本。(1)Aapche 版本的Hadoop官網:hadoop.apache.org/Aapche Hadoop 優勢:對硬件要求低。Aapche Hadoop 劣勢:搭建煩瑣,維護煩瑣,升級煩瑣,添加組件煩瑣。Apache版本Hadoop集群中YARN的界面如圖1-1所示,HDFS的界面圖1-2 所示。 圖1-1 YARN的界面 圖1-2 HDFS的界面(2)CDH版本的Hadoop官網:https://www.cloudera.com/CDH優勢:搭建方便,維護較為容易,升級以及遷移容易,添加組件容易。CDH缺點:對硬件要求高。Cloudera Manager是一個管理CDH的端到端的應用。主要作用包括:管理、監控、診斷、集成。CDH的Hadoop版本集群中CDH管理界面如圖1-3所示。
這本書操作細節講很多,方便入門
入門的神書,價值萬金
書對新生很友好,推薦一看!
實戰經驗分享
確實很好的一本書~想要系統學習的人抓緊時間買起~
我買了這本書,感覺講的很細致,而且還有實例,對大數據不熟悉的人可以嘗試一下這本書,讓你對大數據有一個更深的了解和印象。
本書非常適合大數據愛好者快速入門的一本書籍,書中有每個大數據組件的真實案例,特別是作者還為讀者搭建好了集群。