真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

大數(shù)據(jù)和Hadoop生態(tài)圈,Hadoop發(fā)行版和基于Hadoop的企業(yè)級應(yīng)用

第一章 大數(shù)據(jù)和Hadoop生態(tài)圈

為細(xì)河等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及細(xì)河網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、成都網(wǎng)站制作、細(xì)河網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

本章主要內(nèi)容:

理解大數(shù)據(jù)的挑戰(zhàn)

了解Hadoop生態(tài)圈

了解Hadoop發(fā)行版

使用基于Hadoop的企業(yè)級應(yīng)用

你可能聽別人說過,我們生活在“大數(shù)據(jù)”的環(huán)境中。技術(shù)驅(qū)動著當(dāng)今世界的發(fā)展,計算能力飛速增長,電子設(shè)備越來越普遍,因特網(wǎng)越來越容易接入,與此同時,比以往任何時候都多的數(shù)據(jù)正在被傳輸和收集。

企業(yè)正在以驚人的速度產(chǎn)生數(shù)據(jù)。僅Facebook每天就會收集 250 TB 的數(shù)據(jù)。Thompson Reuters News Analytics (湯普森路透社新聞分析)顯示,現(xiàn)在數(shù)字?jǐn)?shù)據(jù)的總量比2009年的1ZB(1ZB等同于一百萬 PB)多了兩倍多,到 2015 年有可能將達到7.9ZB,到 2020 年則有可能會達到35ZB。其他調(diào)查機構(gòu)甚至做出了更高的預(yù)測。

隨著企業(yè)產(chǎn)生并收集的數(shù)據(jù)量增多,他們開始認(rèn)識到數(shù)據(jù)分析的重要性。但是,他們必須先有效地管理好自己擁有的大量信息。這會產(chǎn)生新的挑戰(zhàn):怎樣才能存儲大量的數(shù)據(jù)?怎樣處理它們?怎樣高效地分析它們?既然數(shù)據(jù)會增加,又如何構(gòu)建一個可擴展的解決方案?

不僅研究人員和數(shù)據(jù)科學(xué)家要面對大數(shù)據(jù)的挑戰(zhàn)。幾年前,在Google+ 大會上,計算機書籍出版者Tim O’Reilly引用過Alistair Croll的話,“這些產(chǎn)生了大量的無明顯規(guī)律數(shù)據(jù)的公司,正在被那些產(chǎn)生了相對較少的有規(guī)律數(shù)據(jù)的新創(chuàng)公司取代……”。簡而言之,Croll想要說,除非你的企業(yè)“理解”你擁有的數(shù)據(jù),否則你的企業(yè)無法與那些“理解”自身數(shù)據(jù)的公司抗衡。

企業(yè)已經(jīng)意識到:大數(shù)據(jù)與商業(yè)競爭、態(tài)勢感知、生產(chǎn)力、科學(xué)和創(chuàng)新等密切相關(guān),分析這些大數(shù)據(jù)能夠獲得巨大的效益。因為商業(yè)競爭正在驅(qū)動大數(shù)據(jù)分析,所以大多數(shù)企業(yè)認(rèn)同O’Reilly和Croll的觀點。他們認(rèn)為當(dāng)今企業(yè)的生存依賴于存儲、處理和分析大量信息的能力,依賴于是否掌控了接受大數(shù)據(jù)挑戰(zhàn)的能力。

如果你閱讀這本書,你將會熟悉這些挑戰(zhàn),熟悉Apache的Hadoop,并且知道Hadoop可以解決哪些問題。本章主要介紹大數(shù)據(jù)的前景和挑戰(zhàn),并且概述Hadoop及其組件生態(tài)圈??梢岳眠@些組件構(gòu)建可擴展、分布式的數(shù)據(jù)分析解決方案。

1.1 當(dāng)大數(shù)據(jù)遇到Hadoop

由于“人力資本”是一個無形的、對成功至關(guān)重要的因素,所以多數(shù)企業(yè)都認(rèn)為他們的員工才是他們最有價值的財產(chǎn)。其實還有另外一個關(guān)鍵因素——企業(yè)所擁有的“信息”。信息可信度、信息量和信息可訪問性可以增強企業(yè)信息能力,從而使企業(yè)做出更好的決策。

要理解企業(yè)產(chǎn)生的大量的數(shù)字信息是非常困難的。IBM指出在過去僅僅兩年的時間里產(chǎn)生了世界90%的數(shù)據(jù)。企業(yè)正在收集、處理和存儲這些可能成為戰(zhàn)略資源的數(shù)據(jù)。十年前,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》中有句格言“只有擁有最好的信息,知道怎樣發(fā)現(xiàn)信息,并能夠最快利用信息的企業(yè)才能立于不敗之地”。

知識就是力量。問題是,隨著收集的數(shù)據(jù)越來越多,傳統(tǒng)的數(shù)據(jù)庫工具將不能管理,并且快速處理這些數(shù)據(jù)。這將導(dǎo)致企業(yè)“淹沒”在自己的數(shù)據(jù)中:不能有效利用數(shù)據(jù),不能理解數(shù)據(jù)之間的聯(lián)系,不能理解數(shù)據(jù)潛在的巨大力量。

人們用“大數(shù)據(jù)”來描述過于龐大的數(shù)據(jù)集,這些數(shù)據(jù)集一般無法使用傳統(tǒng)的用于存儲、管理、搜索和分析等過程的工具來處理。大數(shù)據(jù)有眾多來源,可以是結(jié)構(gòu)型的,也可以是非結(jié)構(gòu)型的;通過處理和分析大數(shù)據(jù),可以發(fā)現(xiàn)內(nèi)部規(guī)律和模式,從而做出明智選擇。

什么是大數(shù)據(jù)的挑戰(zhàn)?怎么存儲、處理和分析如此大的數(shù)據(jù)量,從而從海量數(shù)據(jù)中獲取有用信息?

分析大數(shù)據(jù),需要大量的存儲空間和超級計算處理能力。在過去的十年中,研究人員嘗試了各種的方法來解決數(shù)字信息增加帶來的問題。首先,把重點放在了給單個計算機更多的存儲、處理能力和內(nèi)存等上面,卻發(fā)現(xiàn)單臺計算機的分析能力并不能解決問題。隨著時間的推移,許多組織實現(xiàn)了分布式系統(tǒng)(通過多臺計算機分布任務(wù)),但是分布式系統(tǒng)的數(shù)據(jù)分析解決方案往往很復(fù)雜,并且容易出錯,甚至速度不夠快。

在2002年,Doug Cutting和Mike Cafarella開發(fā)一個名為Nutch的項目(專注于解決網(wǎng)絡(luò)爬蟲、建立索引和搜索網(wǎng)頁的搜索引擎項目),用于處理大量信息。在為Nutch項目解決存儲和處理問題的過程中,他們意識到,需要一個可靠的、分布式計算方法,為Nutch收集大量網(wǎng)頁數(shù)據(jù)。

一年后,谷歌發(fā)表了關(guān)于谷歌文件系統(tǒng)(GFS)和MapReduce的論文,MapReduce是一個用來處理大型數(shù)據(jù)集的算法和分布式編程平臺。當(dāng)意識到集群的分布式處理和分布式存儲的前景后,Cutting和Cafarella把這些論文作為基礎(chǔ),為Nutch構(gòu)建分布式平臺,開發(fā)了我們所熟知的Hadoop分布式文件系統(tǒng)(HDFS)和MapReduce。

在2006年,Yahoo在為搜索引擎建立大量信息的索引的過程中,經(jīng)歷了“大數(shù)據(jù)”挑戰(zhàn)的掙扎之后,看到了Nutch項目的前景,聘請了Doug Cutting,并迅速決定采用Hadoop作為其分布式架構(gòu),用來解決搜索引擎方面的問題。雅虎剝離出來Nutch項目的存儲和處理部分,形成Apache基金的一個開源項目Hadoop,與此同時Nutch的網(wǎng)絡(luò)爬蟲項目保持自己獨立性。此后不久,雅虎開始使用Hadoop分析各種產(chǎn)品應(yīng)用。該平臺非常有效,以至于雅虎把搜索業(yè)務(wù)和廣告業(yè)務(wù)合并成一個單元,從而更好地利用Hadoop技術(shù)。

在過去的10年中,Hadoop已經(jīng)從搜索引擎相關(guān)的平臺,演變?yōu)樽盍餍型ㄓ玫挠嬎闫脚_,用于解決大數(shù)據(jù)帶來的挑戰(zhàn)。它正在快速成為下一代基于數(shù)據(jù)的應(yīng)用程序的基礎(chǔ)。市場研究公司IDC預(yù)計,到2016年,Hadoop驅(qū)動的大數(shù)據(jù)市場將超過23億美元。自從2008年建立第一家以Hadoop為中心的公司Cloudera之后,幾十家基于Hadoop的創(chuàng)業(yè)公司吸引了數(shù)億美元的風(fēng)險投資。簡而言之,Hadoop為企業(yè)提供了一個行之有效的方法,來進行大數(shù)據(jù)分析。

1.1.1 Hadoop:迎接大數(shù)據(jù)挑戰(zhàn)

Apache的Hadoop通過簡化數(shù)據(jù)密集型、高度并行的分布式應(yīng)用的實現(xiàn),以此迎接大數(shù)據(jù)的挑戰(zhàn)。世界各地的企業(yè)、大學(xué)和其它組織都在使用Hadoop,Hadoop把任務(wù)分成任務(wù)片,分布在數(shù)千臺計算機上,從而進行快速分析,并分布式存儲大量的數(shù)據(jù)。Hadoop利用大量廉價的計算機,提供了一個可擴展強,可靠性高的機制;并利用廉價的方式來存儲大量數(shù)據(jù)。Hadoop還提供了新的和改進的分析技術(shù),從而使大量結(jié)構(gòu)化數(shù)據(jù)的復(fù)雜分析變?yōu)榭赡堋?/p>

Hadoop與以前的分布式方法的區(qū)別:

數(shù)據(jù)先進行分布式存儲。

在集群上備份多份數(shù)據(jù),從而來提高可靠性和實用性。數(shù)據(jù)在哪存儲就在哪處理,從而消除了帶寬瓶頸問題。

此外,Hadoop隱藏了復(fù)雜的分布式實現(xiàn)過程,提供了一種簡單的編程方法。從而,Hadoop得以提供強大的數(shù)據(jù)分析機制,包括以下內(nèi)容:

存儲量大——Hadoop能夠使應(yīng)用程序運行在成千上萬的計算機和PB級數(shù)據(jù)上。在過去的十年中,計算機專家認(rèn)識到,那些曾經(jīng)只能由超級計算機來處理的高性能應(yīng)用,可以由大量廉價的計算機一起處理。在集群中,數(shù)百臺“小”的電腦的聚合計算能力,可以超過一臺超級計算機的計算能力,并且價格便宜。Hadoop利用超過數(shù)千臺機器的集群,在企業(yè)可以承受的價格范圍內(nèi),提供了巨大的存儲空間和處理能力。

分布式處理與快速的數(shù)據(jù)訪問——Hadoop集群在提供高效數(shù)據(jù)存儲能力的同時,也提供了快速的數(shù)據(jù)訪問能力。在Hadoop出現(xiàn)之前,應(yīng)用程序很難并行運行在計算機集群之間。這是因為集群模型在創(chuàng)建共享存儲數(shù)據(jù)時,對I/O性能要求很高。用Hadoop來處理數(shù)據(jù),減輕了許多高性能的挑戰(zhàn)。此外,Hadoop應(yīng)用程序處理數(shù)據(jù)通常都是有序進行的,這就避免了隨機的數(shù)據(jù)訪問(磁盤尋道操作),進一步減輕了I/O負(fù)載。

可靠性,故障轉(zhuǎn)移和可擴展性——在過去,并行應(yīng)用程序很難解決集群上機器的可靠性問題。雖然單臺機器的可靠性相當(dāng)高,但是隨著群集增加,出故障的概率也隨之增加。在數(shù)千個節(jié)點的集群上,這種日常故障經(jīng)常發(fā)生。由于Hadoop有獨特的設(shè)計和實施方式,相同的故障將會產(chǎn)生相似的結(jié)果。從而,Hadoop可以監(jiān)測到這些故障,并利用不同的節(jié)點重新執(zhí)行任務(wù)。此外,Hadoop有很好的可擴展性,實現(xiàn)無縫地將多個服務(wù)器整合到一個集群,并利用它們來存儲數(shù)據(jù)、執(zhí)行程序。

對于大多數(shù)Hadoop用戶而言,Hadoop最重要的特征是,將業(yè)務(wù)規(guī)劃和基礎(chǔ)設(shè)施維護進行了清晰的劃分。為那些專注于商業(yè)業(yè)務(wù)的用戶,隱藏了Hadoop的基礎(chǔ)設(shè)施的復(fù)雜性,并提供了一個易于使用的平臺,從而使復(fù)雜的分布式計算的問題簡單化。

1.1.2 商業(yè)界的數(shù)據(jù)科學(xué)

Hadoop的存儲和處理大數(shù)據(jù)的能力經(jīng)常與“數(shù)據(jù)科學(xué)”掛鉤。雖然該詞是由彼得·諾爾在20世紀(jì)60年代提出的,但是直到最近才引起人們廣泛關(guān)注。美國雪域大學(xué)杰弗里·斯坦頓德教授把“數(shù)據(jù)科學(xué)”定義為“一個專注于搜集、分析、可視化、管理和大量信息保存的新興領(lǐng)域”。

通常將“數(shù)據(jù)科學(xué)”這一術(shù)語用在商業(yè)業(yè)務(wù)分析中,與實際中的“大數(shù)據(jù)”學(xué)科有很大的不同。在數(shù)據(jù)科學(xué)中,業(yè)務(wù)分析師通過研究現(xiàn)有商業(yè)運作模式,來提升業(yè)務(wù)。

數(shù)據(jù)科學(xué)的目標(biāo)是從數(shù)據(jù)提取出數(shù)據(jù)的真正含義。數(shù)據(jù)科學(xué)家基于數(shù)學(xué)、統(tǒng)計分析、模式識別、機器學(xué)習(xí)、高性能計算和數(shù)據(jù)倉庫等來工作,通過分析數(shù)據(jù)來發(fā)現(xiàn)事物發(fā)展趨勢,并基于收集到的信息開發(fā)新業(yè)務(wù)。

在過去的幾年中,許多數(shù)據(jù)庫和編程方面的業(yè)務(wù)分析師成為了數(shù)據(jù)科學(xué)家。他們在Hadoop生態(tài)圈中,使用高級的SQL工具(比如:Hive或者實時Hadoop查詢工具)進行數(shù)據(jù)分析,以做出明智的業(yè)務(wù)決策。

不只是“一個大數(shù)據(jù)庫”

在本書后面會深入講解Hadoop,但在此之前,讓我們先消除這樣的誤區(qū)——Hadoop僅僅是數(shù)據(jù)分析師使用的工具。因為對于那些熟悉數(shù)據(jù)庫查詢的人,Hadoop工具(如Hive和實時Hadoop查詢)提供了較低的門檻,所以一些人認(rèn)為Hadoop僅僅是以數(shù)據(jù)庫為中心的工具。

此外,如果你正在試圖解決的問題超出了數(shù)據(jù)分析的范疇,并涉及到真正的“科學(xué)數(shù)據(jù)”的問題,這時,SQL數(shù)據(jù)挖掘技術(shù)將明顯變得不再實用。例如,大多數(shù)問題的解決,需要用到線性代數(shù)和其它復(fù)雜的數(shù)學(xué)應(yīng)用程序,然而,這些問題都不能用SQL很好地解決。

這意味著,使用Hadoop工具是解決這類問題的最好辦法。利用Hadoop的MapReduce編程模型,不但解決了數(shù)據(jù)科學(xué)的問題,而且明顯簡化了企業(yè)級應(yīng)用創(chuàng)建和部署的過程。可以通過多種方式做到這一點——可以使用一些工具,這些工具往往要求開發(fā)者具備軟件開發(fā)技能。例如,通過使用基于Oozie的應(yīng)用程序進行協(xié)調(diào)(在本書后面將詳細(xì)介紹Oozie),可以簡化多個應(yīng)用程序的匯集過程,并非常靈活地鏈接來自多個工具的任務(wù)。在本書中,你會看到Hadoop在企業(yè)中的實際應(yīng)用,以及什么時候使用這些工具。

目前Hadoop的開發(fā),主要是為了更好地支持?jǐn)?shù)據(jù)科學(xué)家。Hadoop提供了一個強大的計算平臺,擁有高擴展性和并行執(zhí)行能力,非常適合應(yīng)用于新一代功能強大的數(shù)據(jù)科學(xué)和企業(yè)級應(yīng)用。并且,Hadoop還提供了可伸縮的分布式存儲和MapReduce編程模式。企業(yè)正在使用Hadoop解決相關(guān)業(yè)務(wù)問題,主要集中在以下幾個方面:

為銀行和信用卡公司增強欺詐性檢測——公司正在利用Hadoop檢測交易過程中的欺詐行為。銀行通過使用Hadoop,建立大型集群,進行數(shù)據(jù)分析;并將分析模型應(yīng)用于銀行交易過程,從而提供實時的欺詐行為檢測。

社交媒體市場分析——公司目前正在使用Hadoop進行品牌管理、市場推廣活動和品牌保護?;ヂ?lián)網(wǎng)充滿了各種資源,例如博客、版面、新聞、推特和社會媒體數(shù)據(jù)等。公司利用Hadoop監(jiān)測、收集、匯聚這些信息,并提取、匯總自身的產(chǎn)品和服務(wù)信息,以及競爭對手的相關(guān)信息,發(fā)掘內(nèi)在商業(yè)模式,或者預(yù)測未來的可能趨勢,從而更加了解自身的業(yè)務(wù)。

零售行業(yè)購物模式分析——在零售行業(yè),通過使用Hadoop分析商店的位置和它周圍人口的購物模式,來確定商店里哪些產(chǎn)品最暢銷。

城市發(fā)展的交通模式識別——城市發(fā)展往往需要依賴交通模式,來確定道路網(wǎng)絡(luò)擴展的需求。通過監(jiān)控在一天內(nèi)不同時間的交通狀況,發(fā)掘交通模型,城市規(guī)劃人員就可以確定交通瓶頸。從而決定是否需要增加街道或者車道,來避免在高峰時段的交通擁堵。

內(nèi)容優(yōu)化和內(nèi)容參與——企業(yè)越來越專注于優(yōu)化內(nèi)容,將其呈現(xiàn)在不同的設(shè)備上,并支持不同格式。因此,許多媒體公司需要處理大量的不同的格式的內(nèi)容。所以,必須規(guī)劃內(nèi)容參與模式,才能進行反饋和改進。

網(wǎng)絡(luò)分析和調(diào)解——針對交易數(shù)據(jù)、網(wǎng)絡(luò)性能數(shù)據(jù)、基站數(shù)據(jù)、設(shè)備數(shù)據(jù)以及其他形式的后臺數(shù)據(jù)等,進行大數(shù)據(jù)實時分析,能夠降低公司運營成本,增強用戶體驗。

大數(shù)據(jù)轉(zhuǎn)換——紐約時報要將1100萬篇文章(1851至1980年)轉(zhuǎn)換成PDF文件,這些文章都是從報紙上掃描得到的圖片。利用Hadoop技術(shù),這家報社能夠在24小時內(nèi),將4TB的掃描文章轉(zhuǎn)換為1.5TB的PDF文檔。

類似的例子數(shù)不勝數(shù)。企業(yè)正在逐步使用Hadoop進行數(shù)據(jù)分析,從而作出更好的戰(zhàn)略決策??偠灾瑪?shù)據(jù)科學(xué)已經(jīng)進入了商界。

不僅僅是針對商業(yè)的大數(shù)據(jù)工具

雖然這里的大多數(shù)例子針對于商業(yè),但是Hadoop也被廣泛應(yīng)用在科學(xué)界和公有企業(yè)。

最近一項由美國科技基金會進行的研究指出,醫(yī)療研究人員已經(jīng)證明,大數(shù)據(jù)分析可以被用于分析癌癥患者的信息,以提高治療效果(比如,蘋果創(chuàng)始人喬布斯的治療過程)。警察部門正在使用大數(shù)據(jù)工具,來預(yù)測犯罪可能的發(fā)生時間和地點,從而降低了犯罪率。同樣的調(diào)查也表明,能源方面的官員正在利用大數(shù)據(jù)工具,分析相關(guān)的能量損耗和潛在的電網(wǎng)故障問題。

通過分析大數(shù)據(jù)可以發(fā)現(xiàn)模型和趨勢,提高效率,從而用新方法來作出更好的決策。

1.2 Hadoop生態(tài)圈

架構(gòu)師和開發(fā)人員通常會使用一種軟件工具,用于其特定的用途軟件開發(fā)。例如,他們可能會說,Tomcat是Apache Web服務(wù)器,MySQL是一個數(shù)據(jù)庫工具。

然而,當(dāng)提到Hadoop的時候,事情變得有點復(fù)雜。Hadoop包括大量的工具,用來協(xié)同工作。因此,Hadoop可用于完成許多事情,以至于,人們常常根據(jù)他們使用的方式來定義它。

對于一些人來說,Hadoop是一個數(shù)據(jù)管理系統(tǒng)。他們認(rèn)為Hadoop是數(shù)據(jù)分析的核心,匯集了結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù),這些數(shù)據(jù)分布在傳統(tǒng)的企業(yè)數(shù)據(jù)棧的每一層。對于其他人,Hadoop是一個大規(guī)模并行處理框架,擁有超級計算能力,定位于推動企業(yè)級應(yīng)用的執(zhí)行。還有一些人認(rèn)為Hadoop作為一個開源社區(qū),主要為解決大數(shù)據(jù)的問題提供工具和軟件。因為Hadoop可以用來解決很多問題,所以很多人認(rèn)為Hadoop是一個基本框架。

雖然Hadoop提供了這么多的功能,但是仍然應(yīng)該把它歸類為多個組件組成的Hadoop生態(tài)圈,這些組件包括數(shù)據(jù)存儲、數(shù)據(jù)集成、數(shù)據(jù)處理和其它進行數(shù)據(jù)分析的專門工具。

1.3 HADOOP核心部件

隨著時間的推移,Hadoop生態(tài)圈越來越大,圖1-1給出了Hadoop核心組件。

圖1:Hadoop生態(tài)圈的核心組成組件

從圖1-1的底部開始,Hadoop生態(tài)圈由以下內(nèi)容組成:

HDFS—— Hadoop生態(tài)圈的基本組成部分是Hadoop分布式文件系統(tǒng)(HDFS)。HDFS是一種數(shù)據(jù)分布式保存機制,數(shù)據(jù)被保存在計算機集群上。數(shù)據(jù)寫入一次,讀取多次。HDFS為HBase等工具提供了基礎(chǔ)。

MapReduce——Hadoop的主要執(zhí)行框架是MapReduce,它是一個分布式、并行處理的編程模型。MapReduce把任務(wù)分為map(映射)階段和reduce(化簡)。開發(fā)人員使用存儲在HDFS中數(shù)據(jù)(可實現(xiàn)快速存儲),編寫Hadoop的MapReduce任務(wù)。由于MapReduce工作原理的特性, Hadoop能以并行的方式訪問數(shù)據(jù),從而實現(xiàn)快速訪問數(shù)據(jù)。

Hbase——HBase是一個建立在HDFS之上,面向列的NoSQL數(shù)據(jù)庫,用于快速讀/寫大量數(shù)據(jù)。HBase使用Zookeeper進行管理,確保所有組件都正常運行。

Zookeeper ——用于Hadoop的分布式協(xié)調(diào)服務(wù)。Hadoop的許多組件依賴于Zookeeper,它運行在計算機集群上面,用于管理Hadoop操作。

Oozie——Oozie是一個可擴展的工作體系,集成于Hadoop的堆棧,用于協(xié)調(diào)多個MapReduce作業(yè)的執(zhí)行。它能夠管理一個復(fù)雜的系統(tǒng),基于外部事件來執(zhí)行,外部事件包括數(shù)據(jù)的定時和數(shù)據(jù)的出現(xiàn)。

Pig——它是MapReduce編程的復(fù)雜性的抽象。Pig平臺包括運行環(huán)境和用于分析Hadoop數(shù)據(jù)集的腳本語言(Pig Latin)。其編譯器將Pig Latin翻譯成MapReduce程序序列。

Hive ——Hive類似于SQL高級語言,用于運行存儲在Hadoop上的查詢語句,Hive讓不熟悉MapReduce開發(fā)人員也能編寫數(shù)據(jù)查詢語句,然后這些語句被翻譯為Hadoop上面的MapReduce任務(wù)。像Pig一樣,Hive作為一個抽象層工具,吸引了很多熟悉SQL而不是Java編程的數(shù)據(jù)分析師。

Hadoop的生態(tài)圈還包括以下幾個框架,用來與其它企業(yè)融合:

Sqoop是一個連接工具,用于在關(guān)系數(shù)據(jù)庫、數(shù)據(jù)倉庫和Hadoop之間轉(zhuǎn)移數(shù)據(jù)。Sqoop利用數(shù)據(jù)庫技術(shù)描述架構(gòu),進行數(shù)據(jù)的導(dǎo)入/導(dǎo)出;利用MapReduce實現(xiàn)并行化運行和容錯技術(shù)。

Flume提供了分布式、可靠、高效的服務(wù),用于收集、匯總大數(shù)據(jù),并將單臺計算機的大量數(shù)據(jù)轉(zhuǎn)移到HDFS。它基于一個簡單而靈活的架構(gòu),并提供了數(shù)據(jù)流的流。它利用簡單的可擴展的數(shù)據(jù)模型,將企業(yè)中多臺計算機上的數(shù)據(jù)轉(zhuǎn)移到Hadoop。

除了在圖1-1所示的核心部件外,Hadoop生態(tài)圈正在不斷增長,以提供更新功能和組件,如以下內(nèi)容:

Whirr——Whirr是一組用來運行云服務(wù)的Java類庫,使用戶能夠輕松地將Hadoop集群運行于Amazon EC2、Rackspace等虛擬云計算平臺。

Mahout——Mahout是一個機器學(xué)習(xí)和數(shù)據(jù)挖掘庫,它提供的MapReduce包含很多實現(xiàn),包括聚類算法、回歸測試、統(tǒng)計建模。通過使用 Apache Hadoop 庫,可以將Mahout有效地擴展到云中。

BigTop —— BigTop作為Hadoop子項目和相關(guān)組件,是一個用于打包和互用性測試的程序和框架。

Ambari——?Ambar通過為配置、管理和監(jiān)控Hadoop集群提供支持,簡化了Hadoop的管理。

Hadoop家族成員正在逐步增加。在本書中,主要涉及到了三個新的Apache Hadoop孵化項目。

孵化項目演變到Apach項目的過程

下面將會簡要介紹Apache基金會的運作方式,以及Apache各種項目及其彼此之間的聯(lián)系。Apache的個人會員共同治理整個組織,Apache提供項目的創(chuàng)建、成熟和回收。

新的項目開始于“孵化器”。建立Apache孵化器,是為了幫助新項目加入Apache。Apache提供管理和檢驗,經(jīng)過篩選后,再建立新的項目或者子項目。在創(chuàng)建孵化項目后,Apache會評估項目的成熟度,并負(fù)責(zé)將孵化器中的項目“畢業(yè)”到Apache項目或子項目。孵化器也會由于各種原因而終止一些項目。

要查看孵化器中項目(當(dāng)前的、孵化成功的、暫時停止的和回收的)的完整列表,可以通過此網(wǎng)址:http://incubator.apache.org/projects/index.html。

當(dāng)今大多數(shù)的Hadoop方面的書籍,要么專注于Hadoop生態(tài)圈中某個獨立組件的描述,要么介紹如何使用Hadoop業(yè)務(wù)分析工具(如Pig和Hive)。盡管這些方面也很重要,但是這些書籍通常沒有進行深入的描述,并不能幫助架構(gòu)師建立基于Hadoop的企業(yè)級應(yīng)用或復(fù)雜應(yīng)用。

1.4 Hadoop發(fā)行版本

雖然Hadoop是開源的Apache(和現(xiàn)在GitHub)項目,但是在Hadoop行業(yè),仍然出現(xiàn)了大量的新興公司,以幫助人們更方便地使用Hadoop為目標(biāo)。這些企業(yè)大多將Hadoop發(fā)行版進行打包、改進,以確保所有的軟件一起工作,并提供技術(shù)支持?,F(xiàn)在,Apache自己也在開發(fā)更多的工具來簡化Hadoop的使用,并擴展其功能。這些工具是專有的,并有所差異。有的工具成為了Apache Hadoop家族中新項目的基礎(chǔ)。其中,有些是經(jīng)過Apache2許可的開源GitHub項目。盡管所有這些公司都基于Apache Hadoop發(fā)行版,但是他們都與Hadoop的愿景有了細(xì)微的不同——應(yīng)該選取哪個方向,怎樣完成它。

這些公司之間大的區(qū)別是:Apache源代碼的使用。除了MapR公司之外,都認(rèn)為Hadoop應(yīng)該由Apache項目的代碼定義。相反,MapR認(rèn)為Apache的代碼只是實施參考,可以基于Apache提供的API來實現(xiàn)自己的需求。這種方法使得MapR做出了很大的創(chuàng)新,特別是在HDFS和HBase方面,MapR讓這兩個基本Hadoop的存儲機制更加可靠、更加高性能。MapR還推出了高速網(wǎng)絡(luò)文件系統(tǒng)(NFS),可以訪問HDFS,從而大大簡化了一些企業(yè)級應(yīng)用的集成。

有兩個關(guān)注度較高的Hadoop發(fā)行版,分別由亞馬遜和微軟發(fā)布。兩者都提供Hadoop的預(yù)安裝版本,運行于相應(yīng)的云服務(wù)平臺(Amazon or Azure),提供PaaS服務(wù)。它們都提供了擴展服務(wù),允許開發(fā)人員不僅能夠利用Hadoop的本地HDFS,也可以通過HDFS映射利用微軟和雅虎的數(shù)據(jù)存儲機制(Amazon的S3,和Azure的Windows Azure存儲機制)。亞馬遜還提供了,在S3上面保存和恢復(fù)HBase內(nèi)容的功能。

表1-1展示了主要的Hadoop發(fā)行版的主要特點。

表1: 不同的Hadoop供應(yīng)商

供應(yīng)商

HADOOP特性

Cloudera CDH,個人版和企業(yè)版

CDH基于Hadoop2,(撰寫本文時為4.1.2版本)包括HDFS,YARN,HBas,MapReduce,Hive, Pig, Zookeeper, Oozie, Mahout, Hue以及其他開源工具(包括實時查詢引擎Impala)。Cloudera的個人免費版包括所有CDH工具,和支持高達50個節(jié)點的集群管理器。Cloudera企業(yè)版提供了更復(fù)雜的管理器,支持無限數(shù)量的集群節(jié)點,能夠主動監(jiān)控,并額外提供了數(shù)據(jù)分析工具。

Hortonworks數(shù)據(jù)平臺

發(fā)行版(Alpha 2.0版)基于Hadoop2,包括HDFS,YARN, HBase, MapReduce, Hive, Pig, HCatalog, Zookeeper, Oozie, Mahout, Hue, Ambari, Tez,實時版Hive(Stinger)和其他開源工具。Hortonworks提供了高可用性支持、高性能的Hive ODBC驅(qū)動和針對大數(shù)據(jù)的Talend Open Studio。

MapR

基于Hadoop1,發(fā)行版(撰寫本文時為版本M7)包括HDFS, HBase, MapReduce, Hive, Mahout, Oozie, Pig, ZooKeeper, Hue以及其他開源工具。它還包括直接NFS訪問、快照、“高實用性”鏡像、專有的HBase實現(xiàn),與Apache完全兼容的API和一個MapR管理控制臺。

IBM InfoSphere BigInsights

基于Hadoop1,提供了兩個版本?;景姘℉DFS, Hbase, MapReduce, Hive, Mahout, Oozie, Pig, ZooKeeper, Hue以及其他一些開源工具。并提供IBM的安裝程序和數(shù)據(jù)訪問工具的基本版本。企業(yè)版增加了復(fù)雜的作業(yè)管理工具、集成了數(shù)據(jù)源的數(shù)據(jù)訪問層和BigSheets(類似電子表格的界面,用來操作集群中的數(shù)據(jù))。

GreenPlum的Pivotal HD

在撰寫本文時,最新版基于Hadoop2,包括HDFS, MapReduce, Hive, Pig, HBase, Zookeeper, Sqoop, Flume和其他開源工具。Pivotal HD企業(yè)級還增加了先進的HAWQ數(shù)據(jù)庫服務(wù)(ADS),和豐富、成熟、并行的SQL處理工具。

亞馬遜彈性MapReduce(EMR)

在撰寫本文時,最新版基于Hadoop1。亞馬遜EMR是一個web服務(wù),能夠使用戶方便且經(jīng)濟高效地處理海量的數(shù)據(jù)。它采用Hadoop框架,運行在亞馬遜彈性計算云EC2和簡單存儲服務(wù)S3之上。包括HDFS(S3支持),HBase(專有的備份恢復(fù)),MapReduce,, Hive (Dynamo的補充支持), Pig, and Zookeeper.

Windows Azure的HDlnsight

HDlnsight基于Hortonworks數(shù)據(jù)平臺(Hadoop1),運行在Azure云。它集成了微軟管理控制臺,易于部署,易于System Center的集成。通過使用Excel插件,可以整合Excel數(shù)據(jù)。通過Hive開放式數(shù)據(jù)庫連接(ODBC)驅(qū)動程序,可以集成Microsoft SQL Server分析服務(wù)(SSAS)、PowerPivot和Power View。Azure Marketplace授權(quán)客戶連接數(shù)據(jù)、智能挖掘算法以及防火墻之外的人。Windows Azure Marketplace從受信任的第三方供應(yīng)商中,提供了數(shù)百個數(shù)據(jù)集。

當(dāng)然,大量的發(fā)行版讓你疑惑“我應(yīng)該使用哪個發(fā)行版?”當(dāng)公司/部門決定采用一個具體的版本時,應(yīng)該考慮以下幾點:

技術(shù)細(xì)節(jié)——包括Hadoop的版本、組件、專有功能部件等等。

易于部署——使用工具箱來實現(xiàn)管理的部署、版本升級、打補丁等等。

易于維護——主要包括集群管理、多中心的支持、災(zāi)難恢復(fù)支持等等。

成本——包括針發(fā)行版的實施成本、計費模式和許可證。

企業(yè)集成的支持——Hadoop應(yīng)用程序與企業(yè)中其他部分的集成。

版本的選擇依賴于,你打算利用Hadoop來解決哪些問題。本書中的討論與版本無關(guān),因為筆者看中的是每個發(fā)行版提供的價值。

1.5 用Hadoop開發(fā)企業(yè)級應(yīng)用

為了滿足大數(shù)據(jù)帶來的新挑戰(zhàn),需要重新思考構(gòu)建數(shù)據(jù)分析的程序的方式。傳統(tǒng)的在數(shù)據(jù)庫中存儲數(shù)據(jù),構(gòu)建應(yīng)用程序的方法,對于大數(shù)據(jù)處理將不再有效。主要因為:

傳統(tǒng)的應(yīng)用程序基于事務(wù)處理型數(shù)據(jù)庫,這種數(shù)據(jù)庫將不再被Hadoop支持。

隨著存儲在Hadoop上的數(shù)據(jù)量增大,實時訪問僅僅能夠訪問到集群上的一部分?jǐn)?shù)據(jù)。

Hadoop的海量數(shù)據(jù)存儲功能可以存儲更多的數(shù)據(jù)集版本,不會像傳統(tǒng)方法一樣覆蓋原始數(shù)據(jù)。

因此,一個典型的基于Hadoop的企業(yè)級應(yīng)用如圖1-2所示。在這些應(yīng)用中,包括數(shù)據(jù)存儲層、數(shù)據(jù)處理層、實時訪問層和安全層。要實現(xiàn)這種體系結(jié)構(gòu),不僅需要理解Hadoop組件所涉及的API,而且需要理解他們的功能和局限性,以及每個組件在整體架構(gòu)中的作用。

如圖1-2所示,數(shù)據(jù)存儲層包括源數(shù)據(jù)和中間數(shù)據(jù)。源數(shù)據(jù)主要來自這些外部數(shù)據(jù)源,外部數(shù)據(jù)源包括企業(yè)應(yīng)用程序、外部數(shù)據(jù)庫、執(zhí)行日志和其它數(shù)據(jù)源。中間數(shù)據(jù)結(jié)果來自Hadoop的執(zhí)行過程,它們被Hadoop的實時應(yīng)用程序使用,并交付給其他應(yīng)用程序和終端用戶。

圖1-2: Hadoop企業(yè)級應(yīng)用

可以使用不同的機制將源數(shù)據(jù)轉(zhuǎn)移到Hadoop,包括:Sqoop,F(xiàn)lume,直接安裝HDFS作為一個網(wǎng)絡(luò)文件系統(tǒng)(NFS),或者利用Hadoop的實時服務(wù)和應(yīng)用程序。在HDFS中,新的數(shù)據(jù)不會覆蓋現(xiàn)有數(shù)據(jù),而是新建一個數(shù)據(jù)版本。這一點很重要,因為HDFS是一個“寫一次”的文件系統(tǒng)。

對于數(shù)據(jù)處理層,Oozie預(yù)處理源數(shù)據(jù),并將其轉(zhuǎn)換為中間數(shù)據(jù)。不同于源數(shù)據(jù),中間數(shù)據(jù)會被覆蓋,沒有多個版本,所以中間數(shù)據(jù)量不會很大。

對于實時訪問層,Hadoop的實時應(yīng)用程序既支持直接數(shù)據(jù)訪問,也支持基于數(shù)據(jù)集的訪問。這些應(yīng)用程序讀取基于Hadoop的中間數(shù)據(jù),并將源數(shù)據(jù)存儲在Hadoop。該應(yīng)用程序也可以用于服務(wù)用戶,或者用于其它企業(yè)的Hadoop集成。

源數(shù)據(jù)用來存儲和初步處理數(shù)據(jù),中間數(shù)據(jù)用于傳遞和整合數(shù)據(jù)。因為采用了源數(shù)據(jù)和中間數(shù)據(jù)完全分離的結(jié)構(gòu),所以允許開發(fā)人員在沒有任何事務(wù)處理需求的情況下,構(gòu)建任何虛擬和復(fù)雜的應(yīng)用程序。通過中間預(yù)處理過程,明顯減少了服務(wù)數(shù)據(jù)量,使得實時數(shù)據(jù)訪問更加靈活。

HADOOP擴充性

雖然許多文章認(rèn)為,對于開發(fā)人員來講,Hadoop隱藏了底層的復(fù)雜性。但是,其實是這些文章沒有充分認(rèn)識到Hadoop的可擴展。

通過設(shè)計Hadoop的實現(xiàn)方式,可以使開發(fā)人員輕松、無縫地集成新的功能到Hadoop中執(zhí)行。Hadoop明確指定一些類庫來負(fù)責(zé)MapReduce執(zhí)行的不同階段。通過這種方式,滿足了開發(fā)者執(zhí)行特定問題的要求,從而確保每一個作業(yè)以最低成本、最高性能性能來執(zhí)行。

可以自定義Hadoop執(zhí)行的以下內(nèi)容:

自定義Hadoop并行執(zhí)行問題的方式,包括被分割的方式和執(zhí)行的位置

支持新的輸入數(shù)據(jù)類型和數(shù)據(jù)定位

支持新的輸出數(shù)據(jù)類型

自定義輸出數(shù)據(jù)的位置

本書有一部分內(nèi)容,在他人工作成果的基礎(chǔ)上,對自定義方法,以及實現(xiàn)方式進行了專門的描述。

本書涵蓋了Hadoop企業(yè)級應(yīng)用的所有主要層,如圖1-2所示。

第2章介紹了構(gòu)建數(shù)據(jù)層的方法,包括HDFS和HBase(架構(gòu)和API)。然后,對兩者進行對比分析,以及如何將HDFS和HBase相結(jié)合。本章還介紹了Avro(Hadoop的新的序列化框架),以及它在存儲或訪問數(shù)據(jù)中的作用。最后,你將了解HCatalog,以及用它來做廣告和訪問數(shù)據(jù)的方式。

本書將對數(shù)據(jù)處理進行了大量的描述。對于應(yīng)用程序的數(shù)據(jù)處理部分,筆者建議使用MapReduce和Oozie。

在本書中,為什么以MapReduce源碼為核心?

你可能會問,為什么本書將重點放在MapReduce源碼上,而不是可以讓MapReduce編程變得更簡單的高級語言上面。你可以在網(wǎng)上或者Hadoop社區(qū)內(nèi),找到很多關(guān)于這方面的討論。在這些討論中給出的解釋是,MapReduce源碼量(就代碼行數(shù)而言)比提供相同的功能的Pig源碼量通常要多很多。盡管這是一個不爭的事實,不過還有一些其他因素:

并不是什么都可以描述為一種高級語言。有些任務(wù),更適合使用傳統(tǒng)的Java代碼來執(zhí)行。

如果你寫的代碼僅需要執(zhí)行一次,那么代碼的行數(shù)可能對你很重要。但是,如果你正在編寫企業(yè)級應(yīng)用,那么你應(yīng)該考慮其他標(biāo)準(zhǔn),包括性能、可靠性和安全性。通常情況下,MapReduce源碼提供了更多的途徑,從而更容易實現(xiàn)這些特質(zhì)。

MapReduce通過自定義方式,為用戶提供的更多功能,以進一步提高應(yīng)用程序的性能、可靠性和安全性。

在第3章中,您將了解MapReduce的架構(gòu)、主要構(gòu)成和編程模型。本章介紹了MapReduce的應(yīng)用程序設(shè)計、設(shè)計模式和MapReduce注意事項。本章還講介紹MapReduce的執(zhí)行是如何實現(xiàn)的。正如所提到的,MapReduce最強的特征之一是它可以自定義執(zhí)行。第4章會介紹自定義選項的詳細(xì)信息,并舉例說明。第5章通過演示實例,對MapReduce進一步討論,構(gòu)建可靠的MapReduce應(yīng)用。

盡管MapReduce功能很強大,但是對于一個切實可行的解決方案,通常需要將多個MapReduce應(yīng)用集合到在一起。這個過程非常復(fù)雜,通過使用Hadoop的Workflow/Coordinator(工作流/協(xié)調(diào)員)引擎,可以被大大簡化MapReduce應(yīng)用的集成。

Oozie的價值

Oozie是Hadoop中最容易被低估的組件。很少有人(甚至沒有)在Hadoop書籍討論這個極其重要的組件。本書不但彰顯了Oozie什么可以做,而且還提供了一個端到端的例子,用來展示如何利用Oozie功能來解決實際問題。類似于Hadoop的其余部分,Oozie的功能也具有很好的擴展性。開發(fā)者可以通過不同的方法來擴展Oozie的功能。

在Hadoop中,最容易被低估的挑戰(zhàn)是:將Hadoop執(zhí)行與企業(yè)處理的其余部分進行整合。使用Oozie來協(xié)調(diào)MapReduce應(yīng)用,并通過公開Oozie API的方式公開了Hadoop進程。通過這種方式,你會很容易就找到更好的集成方法,對Hadoop處理和企業(yè)處理部分進行集成。

第6章描述了Oozie是什么,Oozie的體系結(jié)構(gòu)、主要組成、編程語言和執(zhí)行模型。為了更好地解釋每個Oozie組件的功能和角色,第7章通過使用Oozie應(yīng)用解決端到端的實際問題。第8章中,通過展示Oozie的一些高級功能,對Oozie進一步描述。這些高級功能包括自定義Workflow活動、動態(tài)生成Workflow和支持超級JAR文件(一個包含了所有的包及其依賴關(guān)系的JAR文件)。

第9章主要講解實時訪問層。該章首先介紹了一個工業(yè)中實時Hadoop應(yīng)用實例,然后針對實現(xiàn)方式提出了整體架構(gòu)。接著,介紹了建立這種實現(xiàn)的三種主要方法——基于HBase的應(yīng)用程序、實時查詢以及基于流的處理。本章介紹了總體架構(gòu),并提供了基于HBase實時應(yīng)用的兩個例子。然后,描述了一個實時查詢體系結(jié)構(gòu),并討論了兩個具體的實現(xiàn)——Apache Drill 和 Cloudera’s Impala。還介紹了實時查詢和MapReduce的對比。最后,您將了解基于Hadoop的復(fù)雜事件處理,以及兩個具體的實現(xiàn)——Strom和HFlame。

開發(fā)企業(yè)級應(yīng)用需要大量的規(guī)劃,以及信息安全方面的策略。第10章將重點講解Hadoop的安全模型。

隨著云計算的發(fā)展,許多企業(yè)嘗試將他們的Hadoop運行在云上。第11章的重點是,通過使用EMR實現(xiàn),在亞馬遜的云上運行Hadoop應(yīng)用;并且介紹了其它AWS服務(wù)(如S3),用來補充Hadoop的功能。本章還介紹了,通過使用不同的方法來運行云上的Hadoop,并討論了最佳實踐方案。

除了Hadoop自身的安全問題外,通常Hadoop還需要集成其他企業(yè)的組件,來實現(xiàn)數(shù)據(jù)的導(dǎo)入和導(dǎo)出。第12章將重點介紹,如何才能維護好那些使用了Hadoop的企業(yè)級應(yīng)用,并提供了示例和最佳安全實踐,來確保所有Hadoop企業(yè)級應(yīng)用的安全運行。

1.6 總結(jié)

本章高度概括了大數(shù)據(jù)和Hadoop之間的關(guān)系。并介紹了大數(shù)據(jù)及其價值,還介紹了企業(yè)面臨的大數(shù)據(jù)挑戰(zhàn),包括數(shù)據(jù)存儲和處理的挑戰(zhàn)。通過本章,你還了解了Hadoop及其歷史。

通過本章,你了解了Hadoop特點,并知道了為什么Hadoop如此適合大數(shù)據(jù)處理。本章還概述了Hadoop的主要組件,并介紹了一些例子,用來展示Hadoop如何簡化數(shù)據(jù)科學(xué),簡化創(chuàng)建企業(yè)應(yīng)用程序的過程。

本章介紹了關(guān)于Hadoop發(fā)行版本的基礎(chǔ)知識,以及為什么許多企業(yè)傾向于選擇特定供應(yīng)商的發(fā)行版。因為他們不希望處理Apache項目中的兼容問題,或者他們需要供應(yīng)商的技術(shù)支持。


本文題目:大數(shù)據(jù)和Hadoop生態(tài)圈,Hadoop發(fā)行版和基于Hadoop的企業(yè)級應(yīng)用
本文路徑:http://weahome.cn/article/chiggi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部