1、前言:html
很是感謝Hadoop專業解決方案羣:313702010,兄弟們的大力支持,在此說一聲辛苦了,通過兩週的努力,已經有啦初步的成果,目前第1章 大數據和Hadoop生態圈小組已經翻譯完成,在此對:譯者:賈豔成 QQ:496830205 表示感謝。web
2、意見徵集:算法
本章節由《Hadoop專業解決方案羣:313702010》翻譯小組完成,爲小組校驗稿,已經經過小組內部校驗經過,特此面向網絡徵集意見,若是對本章節內容有任何異議,請在評論中加以說明,說明時,請標明行號,也能夠以修訂的方式,發送給我。很是感謝。數據庫
3、原書說明apache
英文原書《Wrox.Professional.Hadoop.Solutions》第一章,請參照英文原文。編程
4、翻譯原稿設計模式
本章主要內容:安全
你可能聽別人說過,咱們生活在「大數據」的環境中。技術驅動着當今世界的發展,計算能力飛速增加,電子設備愈來愈廣泛,因特網愈來愈容易接入,與此同時,比以往任什麼時候候都多的數據正在被傳輸和收集。服務器
企業正在以驚人的速度產生數據。僅Facebook天天就會收集 250 TB 的數據。Thompson Reuters News Analytics (湯普森路透社新聞分析)顯示,如今數字數據的總量比2009年的1ZB(1ZB等同於一百萬 PB)多了兩倍多,到 2015 年有可能將達到7.9ZB,到 2020 年則有可能會達到35ZB。其餘調查機構甚至作出了更高的預測。網絡
隨着企業產生並收集的數據量增多,他們開始認識到數據分析的重要性。可是,他們必須先有效地管理好本身擁有的大量信息。這會產生新的挑戰:怎樣才能存儲大量的數據?怎樣處理它們?怎樣高效地分析它們?既然數據會增長,又如何構建一個可擴展的解決方案?
不只研究人員和數據科學家要面對大數據的挑戰。幾年前,在Google+ 大會上,計算機書籍出版者Tim O’Reilly引用過Alistair Croll的話,「這些產生了大量的無明顯規律數據的公司,正在被那些產生了相對較少的有規律數據的新創公司取代……」。簡而言之,Croll想要說,除非你的企業「理解」你擁有的數據,不然你的企業沒法與那些「理解」自身數據的公司抗衡。
企業已經意識到:大數據與商業競爭、態勢感知、生產力、科學和創新等密切相關,分析這些大數據可以得到巨大的效益。由於商業競爭正在驅動大數據分析,因此大多數企業認同O’Reilly和Croll的觀點。他們認爲當今企業的生存依賴於存儲、處理和分析大量信息的能力,依賴因而否掌控了接受大數據挑戰的能力。
若是你閱讀這本書,你將會熟悉這些挑戰,熟悉Apache的Hadoop,而且知道Hadoop能夠解決哪些問題。本章主要介紹大數據的前景和挑戰,而且概述Hadoop及其組件生態圈。能夠利用這些組件構建可擴展、分佈式的數據分析解決方案。
因爲「人力資本」是一個無形的、對成功相當重要的因素,因此多數企業都認爲他們的員工纔是他們最有價值的財產。其實還有另一個關鍵因素——企業所擁有的「信息」。信息可信度、信息量和信息可訪問性能夠加強企業信息能力,從而使企業作出更好的決策。
要理解企業產生的大量的數字信息是很是困難的。IBM指出在過去僅僅兩年的時間裏產生了世界90%的數據。企業正在收集、處理和存儲這些可能成爲戰略資源的數據。十年前,Michael Daconta, Leo Obrst, and Kevin T.Smith (Indianapolis: Wiley, 2004)寫的一本書《The Semantic Web: A Guide to the Future of XML, Web Services, and Knowledge Management》中有句格言「只有擁有最好的信息,知道怎樣發現信息,並可以最快利用信息的企業才能立於不敗之地」。
知識就是力量。問題是,隨着收集的數據愈來愈多,傳統的數據庫工具將不能管理,而且快速處理這些數據。這將致使企業「淹沒」在本身的數據中:不能有效利用數據,不能理解數據之間的聯繫,不能理解數據潛在的巨大力量。
人們用「大數據」來描述過於龐大的數據集,這些數據集通常沒法使用傳統的用於存儲、管理、搜索和分析等過程的工具來處理。大數據有衆多來源,能夠是結構型的,也能夠是非結構型的;經過處理和分析大數據,能夠發現內部規律和模式,從而作出明智選擇。
什麼是大數據的挑戰?怎麼存儲、處理和分析如此大的數據量,從而從海量數據中獲取有用信息?
分析大數據,須要大量的存儲空間和超級計算處理能力。在過去的十年中,研究人員嘗試了各類的方法來解決數字信息增長帶來的問題。首先,把重點放在了給單個計算機更多的存儲、處理能力和內存等上面,卻發現單臺計算機的分析能力並不能解決問題。隨着時間的推移,許多組織實現了分佈式系統(經過多臺計算機分佈任務),可是分佈式系統的數據分析解決方案每每很複雜,而且容易出錯,甚至速度不夠快。
在2002年,Doug Cutting和Mike Cafarella開發一個名爲Nutch的項目(專一於解決網絡爬蟲、創建索引和搜索網頁的搜索引擎項目),用於處理大量信息。在爲Nutch項目解決存儲和處理問題的過程當中,他們意識到,須要一個可靠的、分佈式計算方法,爲Nutch收集大量網頁數據。
一年後,谷歌發表了關於谷歌文件系統(GFS)和MapReduce的論文,MapReduce是一個用來處理大型數據集的算法和分佈式編程平臺。當意識到集羣的分佈式處理和分佈式存儲的前景後,Cutting和Cafarella把這些論文做爲基礎,爲Nutch構建分佈式平臺,開發了咱們所熟知的Hadoop分佈式文件系統(HDFS)和MapReduce。
在2006年,Yahoo在爲搜索引擎創建大量信息的索引的過程當中,經歷了「大數據」挑戰的掙扎以後,看到了Nutch項目的前景,聘請了Doug Cutting,並迅速決定採用Hadoop做爲其分佈式架構,用來解決搜索引擎方面的問題。雅虎剝離出來Nutch項目的存儲和處理部分,造成Apache基金的一個開源項目Hadoop,與此同時Nutch的網絡爬蟲項目保持本身獨立性。此後不久,雅虎開始使用Hadoop分析各類產品應用。該平臺很是有效,以致於雅虎把搜索業務和廣告業務合併成一個單元,從而更好地利用Hadoop技術。
在過去的10年中,Hadoop已經從搜索引擎相關的平臺,演變爲最流行通用的計算平臺,用於解決大數據帶來的挑戰。它正在快速成爲下一代基於數據的應用程序的基礎。市場研究公司IDC預計,到2016年,Hadoop驅動的大數據市場將超過23億美圓。自從2008年創建第一家以Hadoop爲中心的公司Cloudera以後,幾十家基於Hadoop的創業公司吸引了數億美圓的風險投資。簡而言之,Hadoop爲企業提供了一個行之有效的方法,來進行大數據分析。
Apache的Hadoop經過簡化數據密集型、高度並行的分佈式應用的實現,以此迎接大數據的挑戰。世界各地的企業、大學和其它組織都在使用Hadoop,Hadoop把任務分紅任務片,分佈在數千臺計算機上,從而進行快速分析,並分佈式存儲大量的數據。Hadoop利用大量廉價的計算機,提供了一個可擴展強,可靠性高的機制;並利用廉價的方式來存儲大量數據。Hadoop還提供了新的和改進的分析技術,從而使大量結構化數據的複雜分析變爲可能。
Hadoop與之前的分佈式方法的區別:
此外,Hadoop隱藏了複雜的分佈式實現過程,提供了一種簡單的編程方法。從而,Hadoop得以提供強大的數據分析機制,包括如下內容:
對於大多數Hadoop用戶而言,Hadoop最重要的特徵是,將業務規劃和基礎設施維護進行了清晰的劃分。爲那些專一於商業業務的用戶,隱藏了Hadoop的基礎設施的複雜性,並提供了一個易於使用的平臺,從而使複雜的分佈式計算的問題簡單化。
Hadoop的存儲和處理大數據的能力常常與「數據科學」掛鉤。雖然該詞是由彼得·諾爾在20世紀60年代提出的,可是直到最近才引發人們普遍關注。美國雪域大學傑弗裏·斯坦頓德教授把「數據科學」定義爲「一個專一於蒐集、分析、可視化、管理和大量信息保存的新興領域」。
一般將「數據科學」這一術語用在商業業務分析中,與實際中的「大數據」學科有很大的不一樣。在數據科學中,業務分析師經過研究現有商業運做模式,來提高業務。
數據科學的目標是從數據提取出數據的真正含義。數據科學家基於數學、統計分析、模式識別、機器學習、高性能計算和數據倉庫等來工做,經過分析數據來發現事物發展趨勢,並基於收集到的信息開發新業務。
在過去的幾年中,許多數據庫和編程方面的業務分析師成爲了數據科學家。他們在Hadoop生態圈中,使用高級的SQL工具(好比:Hive或者實時Hadoop查詢工具)進行數據分析,以作出明智的業務決策。
不僅是「一個大數據庫」
在本書後面會深刻講解Hadoop,但在此以前,讓咱們先消除這樣的誤區——Hadoop僅僅是數據分析師使用的工具。由於對於那些熟悉數據庫查詢的人,Hadoop工具(如Hive和實時Hadoop查詢)提供了較低的門檻,因此一些人認爲Hadoop僅僅是以數據庫爲中心的工具。
此外,若是你正在試圖解決的問題超出了數據分析的範疇,並涉及到真正的「科學數據」的問題,這時,SQL數據挖掘技術將明顯變得再也不實用。例如,大多數問題的解決,須要用到線性代數和其它複雜的數學應用程序,然而,這些問題都不能用SQL很好地解決。
這意味着,使用Hadoop工具是解決這類問題的最好辦法。利用Hadoop的MapReduce編程模型,不但解決了數據科學的問題,並且明顯簡化了企業級應用建立和部署的過程。能夠經過多種方式作到這一點——可使用一些工具,這些工具每每要求開發者具有軟件開發技能。例如,經過使用基於Oozie的應用程序進行協調(在本書後面將詳細介紹Oozie),能夠簡化多個應用程序的聚集過程,並不是常靈活地連接來自多個工具的任務。在本書中,你會看到Hadoop在企業中的實際應用,以及何時使用這些工具。
目前Hadoop的開發,主要是爲了更好地支持數據科學家。Hadoop提供了一個強大的計算平臺,擁有高擴展性和並行執行能力,很是適合應用於新一代功能強大的數據科學和企業級應用。而且,Hadoop還提供了可伸縮的分佈式存儲和MapReduce編程模式。企業正在使用Hadoop解決相關業務問題,主要集中在如下幾個方面:
相似的例子數不勝數。企業正在逐步使用Hadoop進行數據分析,從而做出更好的戰略決策。總而言之,數據科學已經進入了商界。
不只僅是針對商業的大數據工具
雖然這裏的大多數例子針對於商業,可是Hadoop也被普遍應用在科學界和公有企業。
最近一項由美國科技基金會進行的研究指出,醫療研究人員已經證實,大數據分析能夠被用於分析癌症患者的信息,以提升治療效果(好比,蘋果創始人喬布斯的治療過程)。警察部門正在使用大數據工具,來預測犯罪可能的發生時間和地點,從而下降了犯罪率。一樣的調查也代表,能源方面的官員正在利用大數據工具,分析相關的能量損耗和潛在的電網故障問題。
經過分析大數據能夠發現模型和趨勢,提升效率,從而用新方法來做出更好的決策。
架構師和開發人員一般會使用一種軟件工具,用於其特定的用途軟件開發。例如,他們可能會說,Tomcat是Apache Web服務器,MySQL是一個數據庫工具。
然而,當提到Hadoop的時候,事情變得有點複雜。Hadoop包括大量的工具,用來協同工做。所以,Hadoop可用於完成許多事情,以致於,人們經常根據他們使用的方式來定義它。
對於一些人來講,Hadoop是一個數據管理系統。他們認爲Hadoop是數據分析的核心,聚集告終構化和非結構化的數據,這些數據分佈在傳統的企業數據棧的每一層。對於其餘人,Hadoop是一個大規模並行處理框架,擁有超級計算能力,定位於推進企業級應用的執行。還有一些人認爲Hadoop做爲一個開源社區,主要爲解決大數據的問題提供工具和軟件。由於Hadoop能夠用來解決不少問題,因此不少人認爲Hadoop是一個基本框架。
雖然Hadoop提供了這麼多的功能,可是仍然應該把它歸類爲多個組件組成的Hadoop生態圈,這些組件包括數據存儲、數據集成、數據處理和其它進行數據分析的專門工具。
隨着時間的推移,Hadoop生態圈愈來愈大,圖1-1給出了Hadoop核心組件。
圖1:Hadoop生態圈的核心組成組件
從圖1-1的底部開始,Hadoop生態圈由如下內容組成:
Hadoop的生態圈還包括如下幾個框架,用來與其它企業融合:
除了在圖1-1所示的核心部件外,Hadoop生態圈正在不斷增加,以提供更新功能和組件,如如下內容:
Hadoop家族成員正在逐步增長。在本書中,主要涉及到了三個新的Apache Hadoop孵化項目。
孵化項目演變到Apach項目的過程
下面將會簡要介紹Apache基金會的運做方式,以及Apache各類項目及其彼此之間的聯繫。Apache的我的會員共同治理整個組織,Apache提供項目的建立、成熟和回收。
新的項目開始於「孵化器」。創建Apache孵化器,是爲了幫助新項目加入Apache。Apache提供管理和檢驗,通過篩選後,再創建新的項目或者子項目。在建立孵化項目後,Apache會評估項目的成熟度,並負責將孵化器中的項目「畢業」到Apache項目或子項目。孵化器也會因爲各類緣由而終止一些項目。
要查看孵化器中項目(當前的、孵化成功的、暫時中止的和回收的)的完整列表,能夠經過此網址:http://incubator.apache.org/projects/index.html。
當今大多數的Hadoop方面的書籍,要麼專一於Hadoop生態圈中某個獨立組件的描述,要麼介紹如何使用Hadoop業務分析工具(如Pig和Hive)。儘管這些方面也很重要,可是這些書籍一般沒有進行深刻的描述,並不能幫助架構師創建基於Hadoop的企業級應用或複雜應用。
雖然Hadoop是開源的Apache(和如今GitHub)項目,可是在Hadoop行業,仍然出現了大量的新興公司,以幫助人們更方便地使用Hadoop爲目標。這些企業大多將Hadoop發行版進行打包、改進,以確保全部的軟件一塊兒工做,並提供技術支持。如今,Apache本身也在開發更多的工具來簡化Hadoop的使用,並擴展其功能。這些工具是專有的,並有所差別。有的工具成爲了Apache Hadoop家族中新項目的基礎。其中,有些是通過Apache2許可的開源GitHub項目。儘管全部這些公司都基於Apache Hadoop發行版,可是他們都與Hadoop的願景有了細微的不一樣——應該選取哪一個方向,怎樣完成它。
這些公司之間最大的區別是:Apache源代碼的使用。除了MapR公司以外,都認爲Hadoop應該由Apache項目的代碼定義。相反,MapR認爲Apache的代碼只是實施參考,能夠基於Apache提供的API來實現本身的需求。這種方法使得MapR作出了很大的創新,特別是在HDFS和HBase方面,MapR讓這兩個基本Hadoop的存儲機制更加可靠、更加高性能。MapR還推出了高速網絡文件系統(NFS),能夠訪問HDFS,從而大大簡化了一些企業級應用的集成。
有兩個關注度較高的Hadoop發行版,分別由亞馬遜和微軟發佈。二者都提供Hadoop的預安裝版本,運行於相應的雲服務平臺(Amazon or Azure),提供PaaS服務。它們都提供了擴展服務,容許開發人員不只可以利用Hadoop的本地HDFS,也能夠經過HDFS映射利用微軟和雅虎的數據存儲機制(Amazon的S3,和Azure的Windows Azure存儲機制)。亞馬遜還提供了,在S3上面保存和恢復HBase內容的功能。
表1-1展現了主要的Hadoop發行版的主要特色。
表1: 不一樣的Hadoop供應商
供應商 |
HADOOP特性 |
Cloudera CDH,我的版和企業版 |
CDH基於Hadoop2,(撰寫本文時爲4.1.2版本)包括HDFS,YARN,HBas,MapReduce,Hive, Pig, Zookeeper, Oozie, Mahout, Hue以及其餘開源工具(包括實時查詢引擎Impala)。Cloudera的我的免費版包括全部CDH工具,和支持高達50個節點的集羣管理器。Cloudera企業版提供了更復雜的管理器,支持無限數量的集羣節點,可以主動監控,並額外提供了數據分析工具。 |
Hortonworks數據平臺 |
發行版(Alpha 2.0版)基於Hadoop2,包括HDFS,YARN, HBase, MapReduce, Hive, Pig, HCatalog, Zookeeper, Oozie, Mahout, Hue, Ambari, Tez,實時版Hive(Stinger)和其餘開源工具。Hortonworks提供了高可用性支持、高性能的Hive ODBC驅動和針對大數據的Talend Open Studio。 |
MapR |
基於Hadoop1,發行版(撰寫本文時爲版本M7)包括HDFS, HBase, MapReduce, Hive, Mahout, Oozie, Pig, ZooKeeper, Hue以及其餘開源工具。它還包括直接NFS訪問、快照、「高實用性」鏡像、專有的HBase實現,與Apache徹底兼容的API和一個MapR管理控制檯。 |
IBM InfoSphere BigInsights |
基於Hadoop1,提供了兩個版本。基本版包括HDFS, Hbase, MapReduce, Hive, Mahout, Oozie, Pig, ZooKeeper, Hue以及其餘一些開源工具。並提供IBM的安裝程序和數據訪問工具的基本版本。企業版增長了複雜的做業管理工具、集成了數據源的數據訪問層和BigSheets(相似電子表格的界面,用來操做集羣中的數據)。 |
GreenPlum的Pivotal HD |
在撰寫本文時,最新版基於Hadoop2,包括HDFS, MapReduce, Hive, Pig, HBase, Zookeeper, Sqoop, Flume和其餘開源工具。Pivotal HD企業級還增長了先進的HAWQ數據庫服務(ADS),和豐富、成熟、並行的SQL處理工具。 |
亞馬遜彈性MapReduce(EMR) |
在撰寫本文時,最新版基於Hadoop1。亞馬遜EMR是一個web服務,可以使用戶方便且經濟高效地處理海量的數據。它採用Hadoop框架,運行在亞馬遜彈性計算雲EC2和簡單存儲服務S3之上。包括HDFS(S3支持),HBase(專有的備份恢復),MapReduce,, Hive (Dynamo的補充支持), Pig, and Zookeeper. |
Windows Azure的HDlnsight |
HDlnsight基於Hortonworks數據平臺(Hadoop1),運行在Azure雲。它集成了微軟管理控制檯,易於部署,易於System Center的集成。經過使用Excel插件,能夠整合Excel數據。經過Hive開放式數據庫鏈接(ODBC)驅動程序,能夠集成Microsoft SQL Server分析服務(SSAS)、PowerPivot和Power View。Azure Marketplace受權客戶鏈接數據、智能挖掘算法以及防火牆以外的人。Windows Azure Marketplace從受信任的第三方供應商中,提供了數百個數據集。 |
固然,大量的發行版讓你疑惑「我應該使用哪一個發行版?」當公司/部門決定採用一個具體的版本時,應該考慮如下幾點:
技術細節——包括Hadoop的版本、組件、專有功能部件等等。
易於部署——使用工具箱來實現管理的部署、版本升級、打補丁等等。
易於維護——主要包括集羣管理、多中心的支持、災難恢復支持等等。
成本——包括針發行版的實施成本、計費模式和許可證。
企業集成的支持——Hadoop應用程序與企業中其餘部分的集成。
版本的選擇依賴於,你打算利用Hadoop來解決哪些問題。本書中的討論與版本無關,由於筆者看中的是每一個發行版提供的價值。
爲了知足大數據帶來的新挑戰,須要從新思考構建數據分析的程序的方式。傳統的在數據庫中存儲數據,構建應用程序的方法,對於大數據處理將再也不有效。主要由於:
所以,一個典型的基於Hadoop的企業級應用如圖1-2所示。在這些應用中,包括數據存儲層、數據處理層、實時訪問層和安全層。要實現這種體系結構,不只須要理解Hadoop組件所涉及的API,並且須要理解他們的功能和侷限性,以及每一個組件在總體架構中的做用。
如圖1-2所示,數據存儲層包括源數據和中間數據。源數據主要來自這些外部數據源,外部數據源包括企業應用程序、外部數據庫、執行日誌和其它數據源。中間數據結果來自Hadoop的執行過程,它們被Hadoop的實時應用程序使用,並交付給其餘應用程序和終端用戶。
圖1-2: Hadoop企業級應用
可使用不一樣的機制將源數據轉移到Hadoop,包括:Sqoop,Flume,直接安裝HDFS做爲一個網絡文件系統(NFS),或者利用Hadoop的實時服務和應用程序。在HDFS中,新的數據不會覆蓋現有數據,而是新建一個數據版本。這一點很重要,由於HDFS是一個「寫一次」的文件系統。
對於數據處理層,Oozie預處理源數據,並將其轉換爲中間數據。不一樣於源數據,中間數據會被覆蓋,沒有多個版本,因此中間數據量不會很大。
對於實時訪問層,Hadoop的實時應用程序既支持直接數據訪問,也支持基於數據集的訪問。這些應用程序讀取基於Hadoop的中間數據,並將源數據存儲在Hadoop。該應用程序也能夠用於服務用戶,或者用於其它企業的Hadoop集成。
源數據用來存儲和初步處理數據,中間數據用於傳遞和整合數據。由於採用了源數據和中間數據徹底分離的結構,因此容許開發人員在沒有任何事務處理需求的狀況下,構建任何虛擬和複雜的應用程序。經過中間預處理過程,明顯減小了服務數據量,使得實時數據訪問更加靈活。
HADOOP擴充性
雖然許多文章認爲,對於開發人員來說,Hadoop隱藏了底層的複雜性。可是,實際上是這些文章沒有充分認識到Hadoop的可擴展。
經過設計Hadoop的實現方式,可使開發人員輕鬆、無縫地集成新的功能到Hadoop中執行。Hadoop明確指定一些類庫來負責MapReduce執行的不一樣階段。經過這種方式,知足了開發者執行特定問題的要求,從而確保每個做業以最低成本、最高性能性能來執行。
能夠自定義Hadoop執行的如下內容:
本書有一部份內容,在他人工做成果的基礎上,對自定義方法,以及實現方式進行了專門的描述。
本書涵蓋了Hadoop企業級應用的全部主要層,如圖1-2所示。
第2章介紹了構建數據層的方法,包括HDFS和HBase(架構和API)。而後,對二者進行對比分析,以及如何將HDFS和HBase相結合。本章還介紹了Avro(Hadoop的新的序列化框架),以及它在存儲或訪問數據中的做用。最後,你將瞭解HCatalog,以及用它來作廣告和訪問數據的方式。
本書將對數據處理進行了大量的描述。對於應用程序的數據處理部分,筆者建議使用MapReduce和Oozie。
在本書中,爲何以MapReduce源碼爲核心?
你可能會問,爲何本書將重點放在MapReduce源碼上,而不是可讓MapReduce編程變得更簡單的高級語言上面。你能夠在網上或者Hadoop社區內,找到不少關於這方面的討論。在這些討論中給出的解釋是,MapReduce源碼量(就代碼行數而言)比提供相同的功能的Pig源碼量一般要多不少。儘管這是一個不爭的事實,不過還有一些其餘因素:
在第3章中,您將瞭解MapReduce的架構、主要構成和編程模型。本章介紹了MapReduce的應用程序設計、設計模式和MapReduce注意事項。本章還講介紹MapReduce的執行是如何實現的。正如所提到的,MapReduce最強的特徵之一是它能夠自定義執行。第4章會介紹自定義選項的詳細信息,並舉例說明。第5章經過演示實例,對MapReduce進一步討論,構建可靠的MapReduce應用。
儘管MapReduce功能很強大,可是對於一個切實可行的解決方案,一般須要將多個MapReduce應用集合到在一塊兒。這個過程很是複雜,經過使用Hadoop的Workflow/Coordinator(工做流/協調員)引擎,能夠被大大簡化MapReduce應用的集成。
Oozie的價值
Oozie是Hadoop中最容易被低估的組件。不多有人(甚至沒有)在Hadoop書籍討論這個極其重要的組件。本書不但彰顯了Oozie什麼能夠作,並且還提供了一個端到端的例子,用來展現如何利用Oozie功能來解決實際問題。相似於Hadoop的其他部分,Oozie的功能也具備很好的擴展性。開發者能夠經過不一樣的方法來擴展Oozie的功能。
在Hadoop中,最容易被低估的挑戰是:將Hadoop執行與企業處理的其他部分進行整合。使用Oozie來協調MapReduce應用,並經過公開Oozie API的方式公開了Hadoop進程。經過這種方式,你會很容易就找到更好的集成方法,對Hadoop處理和企業處理部分進行集成。
第6章描述了Oozie是什麼,Oozie的體系結構、主要組成、編程語言和執行模型。爲了更好地解釋每一個Oozie組件的功能和角色,第7章經過使用Oozie應用解決端到端的實際問題。第8章中,經過展現Oozie的一些高級功能,對Oozie進一步描述。這些高級功能包括自定義Workflow活動、動態生成Workflow和支持超級JAR文件(一個包含了全部的包及其依賴關係的JAR文件)。
第9章主要講解實時訪問層。該章首先介紹了一個工業中實時Hadoop應用實例,而後針對實現方式提出了總體架構。接着,介紹了創建這種實現的三種主要方法——基於HBase的應用程序、實時查詢以及基於流的處理。本章介紹了整體架構,並提供了基於HBase實時應用的兩個例子。而後,描述了一個實時查詢體系結構,並討論了兩個具體的實現——Apache Drill 和 Cloudera’s Impala。還介紹了實時查詢和MapReduce的對比。最後,您將瞭解基於Hadoop的復瑣事件處理,以及兩個具體的實現——Strom和HFlame。
開發企業級應用須要大量的規劃,以及信息安全方面的策略。第10章將重點講解Hadoop的安全模型。
隨着雲計算的發展,許多企業嘗試將他們的Hadoop運行在雲上。第11章的重點是,經過使用EMR實現,在亞馬遜的雲上運行Hadoop應用;而且介紹了其它AWS服務(如S3),用來補充Hadoop的功能。本章還介紹了,經過使用不一樣的方法來運行雲上的Hadoop,並討論了最佳實踐方案。
除了Hadoop自身的安全問題外,一般Hadoop還須要集成其餘企業的組件,來實現數據的導入和導出。第12章將重點介紹,如何才能維護好那些使用了Hadoop的企業級應用,並提供了示例和最佳安全實踐,來確保全部Hadoop企業級應用的安全運行。
本章高度歸納了大數據和Hadoop之間的關係。並介紹了大數據及其價值,還介紹了企業面臨的大數據挑戰,包括數據存儲和處理的挑戰。經過本章,你還了解了Hadoop及其歷史。
經過本章,你瞭解了Hadoop特色,並知道了爲何Hadoop如此適合大數據處理。本章還概述了Hadoop的主要組件,並介紹了一些例子,用來展現Hadoop如何簡化數據科學,簡化建立企業應用程序的過程。
本章介紹了關於Hadoop發行版本的基礎知識,以及爲何許多企業傾向於選擇特定供應商的發行版。由於他們不但願處理Apache項目中的兼容問題,或者他們須要供應商的技術支持。
最後,本章討論了一種分層的方法和模型,用於開發基於Hadoop的企業級應用。
第2章開始將深刻講解Hadoop的細節,以及如何存儲你的數據。