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