圖書推薦:《Hadoop高級編程》
數(shù)據(jù)猿 | 2016-03-11 16:31
【數(shù)據(jù)猿導(dǎo)讀】 《Hadoop高級編程》關(guān)注用于構(gòu)建先進(jìn)的、基于Hadoop的企業(yè)級應(yīng)用的架構(gòu)和方案,并為實(shí)現(xiàn)現(xiàn)實(shí)的解決方案提供深入的、代碼級的講解,解釋了MapReduce的工作原理,并展示了如何在MapReduce中重新定制特定的業(yè)務(wù)問題

內(nèi)容簡介:
如果你已經(jīng)準(zhǔn)備好要充分實(shí)施大規(guī)??蓴U(kuò)展性數(shù)據(jù)分析工作,那么需要知道如何利用Hadoop技術(shù)?!禜adoop高級編程:構(gòu)建與實(shí)現(xiàn)大數(shù)據(jù)解決方案》可以幫助你做到這一點(diǎn)!本書關(guān)注用于構(gòu)建先進(jìn)的、基于Hadoop的企業(yè)級應(yīng)用的架構(gòu)和方案,并為實(shí)現(xiàn)現(xiàn)實(shí)的解決方案提供深入的、代碼級的講解。本書還會帶你領(lǐng)略數(shù)據(jù)設(shè)計(jì)以及數(shù)據(jù)設(shè)計(jì)如何影響實(shí)現(xiàn)。本書解釋了MapReduce的工作原理,并展示了如何在MapReduce中重新定制特定的業(yè)務(wù)問題。在整本書中,你將會發(fā)現(xiàn)深入的Java代碼示例,這些代碼示例可以直接使用,它們均源自于已經(jīng)成功地構(gòu)建和部署的應(yīng)用程序。
作者簡介:
Boris Lublinsky,是諾基亞的首席架構(gòu)師,出版了70多篇作品,包括Applied SOA: Service-Oriented Architecture and Design Strategies 。
Kevin T. Smith,是Novetta Solutions公司AMS部門的技術(shù)解決方案總監(jiān),他為客戶構(gòu)建高度安全的、面向數(shù)據(jù)的解決方案。
Alexey Yakubovich,是Hortonworks的一名系統(tǒng)架構(gòu)師,而且是對象管理組織(OMG)關(guān)于SOA治理和模型驅(qū)動架構(gòu)的特別興趣小組(SIG)的一名成員。
目錄:
第1章 大數(shù)據(jù)和Hadoop生態(tài)系統(tǒng)
1.1 當(dāng)大數(shù)據(jù)遇見Hadoop
1.1.1 Hadoop:直面大數(shù)據(jù)的挑戰(zhàn)
1.1.2 商業(yè)世界中的數(shù)據(jù)科學(xué)
1.2 Hadoop生態(tài)系統(tǒng)
1.3 Hadoop核心組件
1.4 Hadoop發(fā)行版
1.5 使用Hadoop開發(fā)企業(yè)級應(yīng)用
1.6 小結(jié)
第2章 Hadoop數(shù)據(jù)存儲
2.1 HDFS
2.1.1 HDFS架構(gòu)
2.1.2 使用HDFS文件
2.1.3 Hadoop特定的文件類型
2.1.4 HDFS聯(lián)盟和高可用性
2.2 HBase
2.2.1 HBase架構(gòu)
2.2.2 HBase結(jié)構(gòu)設(shè)計(jì)
2.2.3 HBase編程
2.2.4 HBase新特性
2.3 將HDFS和HBase的組合用于高效數(shù)據(jù)存儲
2.4 使用Apache Avro
2.5 利用HCatalog管理元數(shù)據(jù)
2.6 為應(yīng)用程序選擇合適的Hadoop數(shù)據(jù)組織形式
2.7 小結(jié)
第3章 使用MapReduce處理數(shù)據(jù)
3.1 了解MapReduce
3.1.1 MapReduce執(zhí)行管道
3.1.2 MapReduce中的運(yùn)行時(shí)協(xié)調(diào)和任務(wù)管理
3.2 第一個(gè)MapReduce應(yīng)用程序
3.3 設(shè)計(jì)MapReduce實(shí)現(xiàn)
3.3.1 將MapReduce用作并行處理框架
3.3.2 使用MapReduce進(jìn)行簡單的數(shù)據(jù)處理
3.3.3 使用MapReduce構(gòu)建連接
3.3.4 構(gòu)建迭代式MapReduce應(yīng)用程序
3.3.5 是否使用MapReduce
3.3.6 常見的MapReduce設(shè)計(jì)陷阱
3.4 小結(jié)
第4章 自定義MapReduce執(zhí)行
4.1 使用InputFormat控制MapReduce執(zhí)行
4.1.1 為計(jì)算密集型應(yīng)用程序?qū)崿F(xiàn)InputFormat
4.1.2 實(shí)現(xiàn)InputFormat以控制Map的數(shù)量
4.1.3 實(shí)現(xiàn)用于多個(gè)HBase表的InputFormat
4.2 使用自定義RecordReader以自己的方式讀取數(shù)據(jù)
4.2.1 實(shí)現(xiàn)基于隊(duì)列的RecordReader
4.2.2 為XML數(shù)據(jù)實(shí)現(xiàn)RecordReader
4.3 使用自定義輸出格式組織輸出數(shù)據(jù)
4.4 使用自定義記錄寫入器以自己的方式寫入數(shù)據(jù)
4.5 使用組合器優(yōu)化MapReduce執(zhí)行
4.6 使用分區(qū)器控制Reducer執(zhí)行
4.7 在Hadoop中使用非Java代碼
4.7.1 Pipes
4.7.2 Hadoop Streaming
4.7.3 使用JNI
4.8 小結(jié)
第5章 構(gòu)建可靠的MapReduce應(yīng)用程序
5.1 單元測試MapReduce應(yīng)用程序
5.1.1 測試Mapper
5.1.2 測試Reducer
5.1.3 集成測試
5.2 使用Eclipse進(jìn)行本地應(yīng)用程序測試
5.3 將日志用于Hadoop測試
5.4 使用作業(yè)計(jì)數(shù)器報(bào)告指標(biāo)
5.5 MapReduce中的防御性編程
5.6 小結(jié)
第6章 使用Oozie自動化數(shù)據(jù)處理
6.1 認(rèn)識Oozie
6.2 Oozie Workflow
6.2.1 在Oozie Workflow中執(zhí)行異步操作
6.2.2 Oozie的恢復(fù)能力
6.2.3 Oozie Workflow作業(yè)的生命周期
6.3 Oozie Coordinator
6.4 Oozie Bundle
6.5 用表達(dá)式語言對Oozie進(jìn)行參數(shù)化
6.5.1 Workflow函數(shù)
6.5.2 Coordinator函數(shù)
6.5.3 Bundle函數(shù)
6.5.4 其他EL函數(shù)
6.6 Oozie作業(yè)執(zhí)行模型
6.7 訪問Oozie
6.8 Oozie SLA
6.9 小結(jié)
第7章 使用Oozie
7.1 使用探測包驗(yàn)證位置相關(guān)信息的正確性
7.2 設(shè)計(jì)基于探測包的地點(diǎn)正確性驗(yàn)證
7.3 設(shè)計(jì)Oozie Workflow
7.4 實(shí)現(xiàn)Oozie Workflow應(yīng)用程序
7.4.1 實(shí)現(xiàn)數(shù)據(jù)準(zhǔn)備Workflow
7.4.2 實(shí)現(xiàn)考勤指數(shù)和聚類探測包串Workflow
7.5 實(shí)現(xiàn) Workflow行為
7.5.1 發(fā)布來自java動作的執(zhí)行上下文
7.5.2 在Oozie Workflow中使用MapReduce作業(yè)
7.6 實(shí)現(xiàn)Oozie Coordinator應(yīng)用程序
7.7 實(shí)現(xiàn)Oozie Bundle應(yīng)用程序
7.8 部署、測試和執(zhí)行Oozie應(yīng)用程序
7.8.1 部署Oozie應(yīng)用程序
7.8.2 使用Oozie CLI執(zhí)行Oozie應(yīng)用程序
7.8.3 向Oozie作業(yè)傳遞參數(shù)
7.9 使用Oozie控制臺獲取Oozie應(yīng)用程序信息
7.9.1 了解Oozie控制臺界面
7.9.2 獲取 Coordinator作業(yè)信息
7.10 小結(jié)
第8章 高級Oozie特性
8.1 構(gòu)建自定義Oozie Workflow動作
8.1.1 實(shí)現(xiàn)自定義Oozie Workflow動作
8.1.2 部署Oozie自定義Workflow動作
8.2 向Oozie Workflow添加動態(tài)執(zhí)行
8.2.1 總體實(shí)現(xiàn)方法
8.2.2 一個(gè)機(jī)器學(xué)習(xí)模型、參數(shù)和算法
8.2.3 為迭代過程定義Workflow
8.2.4 動態(tài)Workflow生成
8.3 使用Oozie Java API
8.4 在Oozie應(yīng)用中使用uber jar包
8.5 數(shù)據(jù)吸收傳送器
8.6 小結(jié)
第9章 實(shí)時(shí)Hadoop
9.1 現(xiàn)實(shí)世界中的實(shí)時(shí)應(yīng)用
9.2 使用HBase來實(shí)現(xiàn)實(shí)時(shí)應(yīng)用
9.2.1 將HBase用作圖片管理系統(tǒng)
9.2.2 將HBase用作Lucene后端
9.3 使用專門的實(shí)時(shí)Hadoop查詢系統(tǒng)
9.3.1 Apache Drill
9.3.2 Impala
9.3.3 實(shí)時(shí)查詢和MapReduce的對比
9.4 使用基于Hadoop的事件處理系統(tǒng)
9.4.1 HFlame
9.4.2 Storm
9.4.3 事件處理和MapReduce的對比
9.5 小結(jié)
第10章 Hadoop安全
10.1 簡要的歷史:理解Hadoop安全的挑戰(zhàn)
10.2 認(rèn)證
10.2.1 Kerberos認(rèn)證
10.2.2 委派安全憑據(jù)
10.3 授權(quán)
10.3.1 HDFS文件訪問權(quán)限
10.3.2 服務(wù)級授權(quán)
10.3.3 作業(yè)授權(quán)
10.4 Oozie認(rèn)證和授權(quán)
10.5 網(wǎng)絡(luò)加密
10.6 使用Rhino項(xiàng)目增強(qiáng)安全性
10.6.1 HDFS磁盤級加密
10.6.2 基于令牌的認(rèn)證和統(tǒng)一的授權(quán)框架
10.6.3 HBase單元格級安全
10.7 將所有內(nèi)容整合起來--保證Hadoop安全的最佳實(shí)踐
10.7.1 認(rèn)證
10.7.2 授權(quán)
10.7.3 網(wǎng)絡(luò)加密
10.7.4 敬請關(guān)注Hadoop的增強(qiáng)功能
10.8 小結(jié)
第11章 在AWS上運(yùn)行Hadoop應(yīng)用
11.1 初識AWS
11.2 在AWS上運(yùn)行Hadoop的可選項(xiàng)
11.2.1 使用EC2實(shí)例的自定義安裝
11.2.2 彈性MapReduce
11.2.3 做出選擇前的額外考慮
11.3 理解EMR-Hadoop的關(guān)系
11.3.1 EMR架構(gòu)
11.3.2 使用S3存儲
11.3.3 最大化EMR的使用
11.3.4 利用CloudWatch和其他AWS組件
11.3.5 訪問和使用EMR
11.4 使用AWS S3
11.4.1 理解桶的使用
11.4.2 使用控制臺瀏覽內(nèi)容
11.4.3 在S3中編程訪問文件
11.4.4 使用MapReduce上傳多個(gè)文件到S3
11.5 自動化EMR作業(yè)流創(chuàng)建和作業(yè)執(zhí)行
11.6 管理EMR中的作業(yè)執(zhí)行
11.6.1 在EMR集群上使用Oozie
11.6.2 AWS 簡單工作流
11.6.3 AWS數(shù)據(jù)管道
11.7 小結(jié)
第12章 為Hadoop實(shí)現(xiàn)構(gòu)建企業(yè)級安全解決方案
12.1 企業(yè)級應(yīng)用的安全顧慮
12.1.1 認(rèn)證
12.1.2 授權(quán)
12.1.3 保密性
12.1.4 完整性
12.1.5 審計(jì)
12.2 Hadoop安全沒有為企業(yè)級應(yīng)用原生地提供哪些機(jī)制
12.2.1 面向數(shù)據(jù)的訪問控制
12.2.2 差分隱私
12.2.3 加密靜止的數(shù)據(jù)
12.2.4 企業(yè)級安全集成
12.3 保證使用Hadoop的企業(yè)級應(yīng)用安全的方法
12.3.1 使用Accumulo進(jìn)行訪問控制保護(hù)
12.3.2 加密靜止數(shù)據(jù)
12.3.3 網(wǎng)絡(luò)隔離和分隔方案
12.4 小結(jié)
第13章 Hadoop的未來
13.1 使用DSL簡化MapReduce編程
13.1.1 什么是DSL
13.1.2 Hadoop的DSL
13.2 更快、更可擴(kuò)展的數(shù)據(jù)處理
13.2.1 Apache YARN
13.2.2 Tez
13.3 安全性的改進(jìn)
13.4 正在出現(xiàn)的趨勢
13.5 小結(jié)
附錄 有用的閱讀
前言/序言:
在這個(gè)技術(shù)不停地改變的快節(jié)奏世界中,我們已經(jīng)被信息淹沒。我們在不斷生成和存儲大量的數(shù)據(jù)。隨著網(wǎng)絡(luò)上的設(shè)備不斷豐富,我們已經(jīng)看到了信息格式和數(shù)據(jù)多樣性的驚人增長——大數(shù)據(jù)。
但是我們要直面它——如果我們忠實(shí)于自己的話,多數(shù)組織還不能積極有效地管理這大量的數(shù)據(jù),我們也還不能使這些信息發(fā)揮優(yōu)勢,從而更好地做出決策,更聰明地做生意。我們已經(jīng)被大批量的數(shù)據(jù)所淹沒,但同時(shí)我們又渴求知識。這會導(dǎo)致公司損失生產(chǎn)力、損失機(jī)會,并損失收入。
在過去的10年中,很多技術(shù)承諾幫助處理和分析我們擁有的大批量信息,而這些技術(shù)多數(shù)都出現(xiàn)了不足。我們知道這一點(diǎn),因?yàn)樽鳛閷W⒂跀?shù)據(jù)的程序員,我們已經(jīng)都嘗試過了。很多方法都是受專利保護(hù)的,導(dǎo)致供應(yīng)商被鎖定。一些方法看起來很有希望,但無法擴(kuò)展以處理大型數(shù)據(jù)集,還有很多是宣傳很好但不能滿足預(yù)期,或者在關(guān)鍵時(shí)刻還沒有準(zhǔn)備好。
然而,ApacheHadoop登場之后,一切都不一樣了。當(dāng)然這里也有宣傳的因素,但它是一個(gè)開源項(xiàng)目,已經(jīng)在大規(guī)模可擴(kuò)展商業(yè)應(yīng)用中取得了不可思議的成功。盡管學(xué)習(xí)曲線有些陡峭,但這是我們第一次可以輕松地編寫程序并對大規(guī)模數(shù)據(jù)進(jìn)行分析——以一種以前我們做不到的方式。MapReduce算法可以使開發(fā)人員處理分布在可擴(kuò)展機(jī)器集群上的數(shù)據(jù),基于該算法,我們以過去無法做到的方式,在進(jìn)行復(fù)雜數(shù)據(jù)分析方面取得了很大的成功。
關(guān)于Hadoop的書并不缺少。人們寫了很多,而且其中很多書都很好。那么,為什么還要編寫本書呢?當(dāng)我們開始使用Hadoop時(shí),希望有一本書不只是介紹API,還要解釋Hadoop生態(tài)系統(tǒng)的諸多部分如何共同工作,并可用于構(gòu)建企業(yè)級的解決方案。我們在尋找這樣一本書,它可以帶領(lǐng)讀者學(xué)習(xí)數(shù)據(jù)設(shè)計(jì)及其對實(shí)現(xiàn)的影響,并解釋MapReduce的工作原理,以及如何用MapReduce來重新表述特定的業(yè)務(wù)問題。我們在尋找如下問題的答案:
MapReduce的強(qiáng)項(xiàng)和弱點(diǎn)是什么,以及我們?nèi)绾巫远x它以便更好地滿足自己的需求?
為什么我們需要在MapReduce之上有一個(gè)額外的協(xié)調(diào)層,以及Oozie是怎么滿足這個(gè)需求的?
我們?nèi)绾问褂锰囟I(lǐng)域語言(Domain-SpecificLanguage,DSL)來簡化MapReduce開發(fā)?
每個(gè)人都在講的實(shí)時(shí)Hadoop是什么,它可以做什么,以及它不能做什么?它的工作原理是什么?
我們?nèi)绾未_保Hadoop應(yīng)用程序的安全,我們需要考慮什么,我們必須考慮什么安全隱患,以及處理這些問題有哪些方法?
我們?nèi)绾螌⒆约旱腍adoop應(yīng)用程序遷移到云中,以及這樣做有哪些重要的考慮因素?
當(dāng)開始Hadoop探險(xiǎn)時(shí),我們不得不夜以繼日地瀏覽整個(gè)Internet和Hadoop源代碼,與人們交談并嘗試使用這些代碼來找到這些問題的答案。然后我們決定通過撰寫本書來分享自己的發(fā)現(xiàn)和經(jīng)驗(yàn),并希望本書能夠成為讀者理解和使用Hadoop的一個(gè)良好的開端。
本書讀者對象
本書是由程序員寫給程序員的。本書的作者是開發(fā)企業(yè)級解決方案的技術(shù)人員,我們對于本書的目標(biāo)是為使用Hadoop的其他開發(fā)人員提供可靠的、實(shí)用的建議。本書的目標(biāo)人群是試圖更好地理解和利用Hadoop——不只是做簡單的數(shù)據(jù)分析,同時(shí)也將Hadoop用作企業(yè)級應(yīng)用的基礎(chǔ)——的軟件架構(gòu)師和開發(fā)人員。
因?yàn)镠adoop是一個(gè)基于Java的框架,所以本書包含了大量的代碼示例,需要讀者熟悉Java。此外,作者假設(shè)讀者在一定程度上熟悉Hadoop,并有一些入門級的MapReduce知識。
盡管本書在設(shè)計(jì)上希望讀者從頭到尾以逐個(gè)模塊的方式閱讀,但某些章節(jié)可能更適合特定的人群。想要理解Hadoop數(shù)據(jù)存儲能力的數(shù)據(jù)設(shè)計(jì)人員更可能從第2章中受益。從MapReduce開始的程序員們最有可能關(guān)注第3~第5章,以及第13章。意識到不使用像Oozie這樣的Workflow系統(tǒng)會導(dǎo)致復(fù)雜性的開發(fā)人員,最可能關(guān)注第6~第8章。那些對實(shí)時(shí)Hadoop感興趣的人們會關(guān)注第9章。有興趣在實(shí)現(xiàn)中使用亞馬遜云的人們可能會關(guān)注第11章,而在乎安全性的人們可能關(guān)注第10章和第12章。
本書涵蓋的內(nèi)容
現(xiàn)在,每個(gè)人都在處理大數(shù)據(jù)。很多企業(yè)正在最大限度地實(shí)施大規(guī)模可擴(kuò)展性數(shù)據(jù)分析工作,其中多數(shù)企業(yè)都在嘗試使用Hadoop來完成該目標(biāo)。本書集中講述構(gòu)建基于Hadoop高級企業(yè)級應(yīng)用的架構(gòu)和方法,并為此涵蓋了如下主要Hadoop組件:
基于Hadoop的企業(yè)級應(yīng)用的架構(gòu)藍(lán)圖
基礎(chǔ)的Hadoop數(shù)據(jù)存儲和組織系統(tǒng)
Hadoop的主要執(zhí)行框架(MapReduce)
Hadoop的Workflow/Coordinator服務(wù)器(Oozie)
實(shí)現(xiàn)基于Hadoop的實(shí)時(shí)系統(tǒng)的技術(shù)
在云環(huán)境中運(yùn)行Hadoop的方式
確保Hadoop應(yīng)用安全的技術(shù)和架構(gòu)
本書的組織結(jié)構(gòu)
本書被編排為13章。
第1章(“大數(shù)據(jù)和Hadoop生態(tài)系統(tǒng)”)介紹了大數(shù)據(jù),以及Hadoop用作大數(shù)據(jù)實(shí)現(xiàn)的方法。在該章中,我們學(xué)習(xí)Hadoop如何解決大數(shù)據(jù)帶來的挑戰(zhàn),以及哪些Hadoop核心組件可以共同工作來創(chuàng)建豐富的Hadoop生態(tài)系統(tǒng),適合解決很多現(xiàn)實(shí)世界的問題。我們也學(xué)習(xí)了多個(gè)可用的Hadoop發(fā)行版,以及新出現(xiàn)的用于大數(shù)據(jù)應(yīng)用的架構(gòu)模式。
任何大數(shù)據(jù)實(shí)現(xiàn)的基礎(chǔ)都是數(shù)據(jù)存儲設(shè)計(jì)。第2章(“Hadoop數(shù)據(jù)存儲”)涵蓋了Hadoop支持的分布式數(shù)據(jù)存儲。該章討論了兩個(gè)主要的Hadoop數(shù)據(jù)存儲機(jī)制——HDFS和HBase——的架構(gòu)和API,并提供了何時(shí)使用哪種機(jī)制的一些建議。這里我們學(xué)習(xí)了HDFS(聯(lián)盟)和HBase新文件格式以及協(xié)處理器的最新發(fā)展。該章也涵蓋了HCatalog(Hadoop元數(shù)據(jù)管理解決方案)和Avro(一個(gè)序列化/組裝框架),以及它們在Hadoop數(shù)據(jù)存儲中扮演的角色。
作為主要的Hadoop執(zhí)行框架,MapReduce是本書的主要議題之一,包含在第3~第5章中。
第3章(“使用MapReduce處理數(shù)據(jù)”)介紹了MapReduce框架。涵蓋了MapReduce架構(gòu)、它的主要組件和MapReduce編程模型。該章也重點(diǎn)介紹了MapReduce應(yīng)用的設(shè)計(jì)、設(shè)計(jì)模式以及MapReduce的一般注意事項(xiàng)。
第4章(“自定義MapReduce執(zhí)行”)建立在第3章的基礎(chǔ)之上,涵蓋了自定義MapReduce執(zhí)行的重要方法。我們學(xué)習(xí)MapReduce執(zhí)行可以被自定義的一些方面,并使用工作代碼示例來揭示如何做到這一點(diǎn)。
最后,在第5章(“構(gòu)建可靠的MapReduce應(yīng)用程序”)中,我們學(xué)習(xí)了構(gòu)建可靠的MapReduce應(yīng)用程序的途徑,包括測試和調(diào)試,以及使用內(nèi)置的MapReduce工具(例如,日志和計(jì)數(shù)器)來查看MapReduce的內(nèi)部執(zhí)行。
盡管MapReduce自身具有強(qiáng)大的功能,但實(shí)際的解決方案通常需要將多個(gè)MapReduce應(yīng)用組合到一起,這涉及很多的復(fù)雜性。通過使用HadoopWorkflow/Coordinator引擎——Oozie——可以顯著地簡化這種復(fù)雜性,Oozie將在第6~第8章中描述。
第6章(“使用Oozie自動化數(shù)據(jù)處理”)介紹了Oozie。這里我們學(xué)習(xí)Oozie的整體架構(gòu)、它的主要組件,以及每個(gè)組件的編程語言。我們也學(xué)習(xí)Oozie的整體執(zhí)行模型,以及可以和Oozie服務(wù)器交互的方式。
第7章(“使用Oozie”)建立在第6章所學(xué)知識的基礎(chǔ)之上并展示了一個(gè)實(shí)用的從無到有使用Oozie開發(fā)實(shí)際應(yīng)用的示例。該示例演示了如何在解決方案中使用不同的Oozie組件,并演示了設(shè)計(jì)和實(shí)現(xiàn)途徑。
最后,第8章(“高級Oozie特性”)討論一些高級特性,并展示了擴(kuò)展Oozie和將它與其他企業(yè)級應(yīng)用集成的方法。在該章中,我們學(xué)習(xí)了一些開發(fā)人員需要知道的建議和技巧——例如,Oozie代碼的動態(tài)生成如何幫助開發(fā)人員克服一些現(xiàn)存的、任何其他方法都不能解決的Oozie缺點(diǎn)。
當(dāng)今與大數(shù)據(jù)相關(guān)的最熱門的趨勢之一是進(jìn)行“實(shí)時(shí)分析”的能力。該主題在第9章(“實(shí)時(shí)Hadoop”)中討論。該章開始提供了一些目前使用的實(shí)時(shí)Hadoop應(yīng)用示例,并展示了這些實(shí)現(xiàn)的整體架構(gòu)需求。我們將學(xué)習(xí)構(gòu)建這樣一些實(shí)現(xiàn)的3種主要方法——基于HBase的應(yīng)用程序、實(shí)時(shí)查詢和基于流的處理。
該章提供了兩個(gè)基于HBase的實(shí)時(shí)應(yīng)用——一個(gè)假想的圖片管理系統(tǒng)和一個(gè)基于Lucene、使用HBase作為后端的搜索引擎。我們也會學(xué)習(xí)實(shí)現(xiàn)實(shí)時(shí)查詢的整體架構(gòu),以及兩個(gè)具體的產(chǎn)品——ApacheDrill和Cloudera的Impala——實(shí)現(xiàn)實(shí)時(shí)查詢的方式。該章同時(shí)涵蓋了另一種類型的實(shí)時(shí)應(yīng)用——復(fù)雜事件處理,包括它的整體架構(gòu),以及HFlame和Storm實(shí)現(xiàn)該架構(gòu)的方式。最后,該章提供了實(shí)時(shí)查詢、復(fù)雜事件處理和MapReduce之間的一個(gè)對比。
Hadoop應(yīng)用程序開發(fā)中一個(gè)經(jīng)常被忽略但至關(guān)重要的主題是Hadoop安全。第10章(“Hadoop安全”)深入討論了與大數(shù)據(jù)分析和Hadoop——確切地說是Hadoop安全模型和最佳實(shí)踐——相關(guān)的安全性考慮。這里我們學(xué)習(xí)Rhino項(xiàng)目——一個(gè)支持開發(fā)人員擴(kuò)展Hadoop安全能力(包括加密、認(rèn)證、授權(quán)、單點(diǎn)登錄(Single-Sign-On,SSO)和審計(jì))的框架。
基于云的Hadoop使用需要有趣的架構(gòu)決策。第11章(“在AWS上運(yùn)行Hadoop應(yīng)用”)描述了這些挑戰(zhàn),并涵蓋了在亞馬遜Web服務(wù)(AmazonWebService,AWS)云上運(yùn)行Hadoop的不同方法。該章也討論了一些權(quán)衡選擇并考察了一些最佳實(shí)踐。我們將學(xué)習(xí)彈性MapReduce(ElasticMapReduce,EMR)和可以用于補(bǔ)充Hadoop功能的額外AWS服務(wù)(例如S3、CloudWatch、SimpleWorkflow等)。
除了確保Hadoop自身的安全,Hadoop實(shí)現(xiàn)通常和其他企業(yè)級組件集成——數(shù)據(jù)經(jīng)常被導(dǎo)入到Hadoop并被導(dǎo)出。第12章(“為Hadoop實(shí)現(xiàn)構(gòu)建企業(yè)級安全解決方案”)涵蓋了如何確保使用Hadoop的企業(yè)級應(yīng)用盡可能安全,并提供了示例和最佳實(shí)踐。
作為本書的最后一章,第13章(“Hadoop的未來”)瀏覽了一些當(dāng)前和未來將發(fā)生的Hadoop行業(yè)趨勢和創(chuàng)新。這里我們學(xué)習(xí)了可用來簡化MapReduce開發(fā)的HadoopDSL及其使用,以及新的MapReduce資源管理系統(tǒng)(YARN)和MapReduce運(yùn)行時(shí)擴(kuò)展(Tez)。我們也學(xué)習(xí)了最重要的Hadoop發(fā)展方向和趨勢。
使用本書需要的條件
本書中展示的所有代碼都用Java實(shí)現(xiàn)。因此,要使用這些代碼,讀者需要Java編譯器和開發(fā)環(huán)境。所有的開發(fā)都在Eclipse中完成,但由于每個(gè)項(xiàng)目都有一個(gè)Mavenpom文件,因而把代碼遷移到任何您所選擇的開發(fā)環(huán)境都足夠簡單。
所有的數(shù)據(jù)訪問和MapReduce代碼都在Hadoop1(ClouderaCDH3發(fā)行版和AmazonEMR)和Hadoop2(ClouderaCDH4發(fā)行版)上測試通過。因此,這些代碼應(yīng)當(dāng)可以在任何Hadoop發(fā)行版上運(yùn)行。Oozie代碼在最新版的Oozie(例如,可以從ClouderaCDH4。1發(fā)行版獲得)上測試通過。
刷新相關(guān)文章
我要評論
活動推薦more >
- 2018 上海國際大數(shù)據(jù)產(chǎn)業(yè)高2018-12-03
- 2018上海國際計(jì)算機(jī)網(wǎng)絡(luò)及信2018-12-03
- 中國國際信息通信展覽會將于2018-09-26
- 第五屆FEA消費(fèi)金融國際峰會62018-06-21
- 第五屆FEA消費(fèi)金融國際峰會2018-06-21
- “無界區(qū)塊鏈技術(shù)峰會2018”2018-06-14
不容錯(cuò)過的資訊
-
1#后疫情時(shí)代的新思考#疫情之下,關(guān)于醫(yī)
-
2數(shù)據(jù)軟件產(chǎn)品和服務(wù)商DataHunter完成B輪
-
3眾盟科技獲ADMIC 2020金粲獎(jiǎng)“年度汽車
-
4數(shù)據(jù)智能 無限未來—2020世界人工智能大
-
5#2020非凡大賞:數(shù)字化風(fēng)起云涌時(shí),共尋
-
6#榜樣的力量#天璣數(shù)據(jù)大腦疫情風(fēng)險(xiǎn)感知
-
7#榜樣的力量#內(nèi)蒙古自治區(qū)互聯(lián)網(wǎng)醫(yī)療服
-
8#榜樣的力量#實(shí)時(shí)新型肺炎疫情數(shù)據(jù)小程
-
9#榜樣的力量#華佗疫情防控平臺丨數(shù)據(jù)猿
-
10#后疫情時(shí)代的新思考#構(gòu)建工業(yè)互聯(lián)網(wǎng)新