- 基于Hadoop與Spark的大數(shù)據(jù)開發(fā)實戰(zhàn)
- 肖睿 丁科 吳剛山
- 5352字
- 2019-09-10 13:26:11
任務(wù)2 初識Hadoop
關(guān)鍵步驟如下。
認(rèn)知Hadoop是什么。
了解Hadoop的發(fā)展史。
掌握Hadoop中的核心組件及功能。
了解Hadoop常用的發(fā)行版本。
了解Hadoop生態(tài)圈中常用的處理框架。
了解大數(shù)據(jù)在企業(yè)中的應(yīng)用案例。
初識Hadoop
1.2.1 Hadoop概述
1.什么是Hadoop
Hadoop是Apache基金會旗下的一個分布式系統(tǒng)基礎(chǔ)架構(gòu)。主要包括分布式文件系統(tǒng)HDFS(Hadoop Distributed File System)、分布式計算系統(tǒng)Map Reduce和分布式資源管理系統(tǒng)YARN。Hadoop使用戶可以在不了解分布式系統(tǒng)底層細(xì)節(jié)的情況下,開發(fā)分布式程序并充分利用集群的分布式能力進行運算和存儲。以Apache Hadoop為生態(tài)圈的框架是目前分析海量數(shù)據(jù)的首選。
針對任務(wù)1中描述的大數(shù)據(jù),我們該如何對這些數(shù)據(jù)進行分析或者提取出我們需要的有價值的信息呢?我們可以采用Hadoop及其生態(tài)圈提供的分布式存儲和分布式計算的功能來完成。
2.Hadoop發(fā)展史
(1)2002年,Doug Cutting團隊開發(fā)了網(wǎng)絡(luò)搜索引擎Nutch,這就是Hadoop的前身。
(2)2003——2004年,隨著Google兩篇論文的發(fā)表誕生了GFS和Map Reduce。
(3)2006年,為致力于Hadoop技術(shù)的進一步發(fā)展,Doug Cutting加入Yahoo!。
(4)2008年1月,Hadoop成為Apache頂級項目,并在同年7月打破最快排序1TB數(shù)據(jù)的世界紀(jì)錄。
(5)2008年9月,Hive成為Hadoop子項目。
(6)2009年3月,Cloudera推出CDH。
(7)2011年12月,發(fā)布1.0.0版本,標(biāo)志著Hadoop已經(jīng)初具生產(chǎn)規(guī)模。
(8)2013年10月,發(fā)布2.2.0版本,Hadoop正式進入2.x時代。
(9)2014年,先后發(fā)布Hadoop2.3.0、Hadoop2.4.0、Hadoop2.5.0和Hadoop2.6.0。
(10)2015年,發(fā)布Hadoop2.7.0。
(11)2016年,發(fā)布Hadoop3.0-alpha版本,預(yù)示著Hadoop進入3.x時代。
3.Hadoop核心構(gòu)成
Hadoop框架主要包括三大部分:分布式文件系統(tǒng)、分布式計算系統(tǒng)、資源管理系統(tǒng)。
(1)分布式文件系統(tǒng)HDFS
源自Google發(fā)表于2003年10月的GFS論文,HDFS是GFS的克隆版。
Hadoop分布式文件系統(tǒng)(HDFS)適用于大數(shù)據(jù)場景的數(shù)據(jù)存儲,因為HDFS提供了高可靠性(主要通過多副本來實現(xiàn))、高擴展性(通過添加機器來達(dá)到線性擴展)和高吞吐率的數(shù)據(jù)存儲服務(wù)。按照官方的說法,HDFS被設(shè)計成能夠運行在通用硬件上的分布式文件系統(tǒng),所以我們的Hadoop集群可以部署在普通的機器上,而不需要部署在價格昂貴的小型機或者其他機器上,能夠大大減少公司的運營成本。
HDFS的基本原理是將數(shù)據(jù)文件以指定的塊大小拆分成數(shù)據(jù)塊,并將數(shù)據(jù)塊以副本的方式存儲到多臺機器上,即使某個節(jié)點出現(xiàn)故障,該節(jié)點上存儲的數(shù)據(jù)塊副本丟失,但是在其他節(jié)點上還有對應(yīng)的數(shù)據(jù)副本,所以在HDFS中即使某個節(jié)點出現(xiàn)問題也不會造成數(shù)據(jù)的丟失(前提是你的Hadoop集群的副本系數(shù)大于1)。HDFS將數(shù)據(jù)文件的切分、容錯、負(fù)載均衡等功能透明化(用戶是感知不到整個過程的,只知道上傳了一個文件到HDFS上,有關(guān)數(shù)據(jù)切分、存儲在哪些機器上是感知不到的,非常易用)。我們可將HDFS看成一個容量巨大、具有高容錯性的磁盤,在使用的時候完全可以當(dāng)作普通的本地磁盤使用。所以說HDFS是適合于海量數(shù)據(jù)的可靠性存儲。
(2)分布式計算系統(tǒng)Map Reduce
Map Reduce是一個編程模型,用以進行大數(shù)據(jù)量的計算。Map Reduce的名字源于這個模型中的兩項核心操作:Map(映射)和Reduce(歸納)。Map Reduce是一種簡化應(yīng)用程序開發(fā)的編程模型,能讓沒有多少并行應(yīng)用開發(fā)經(jīng)驗的開發(fā)人員也可以快速地學(xué)會并行應(yīng)用的開發(fā),而不需要去關(guān)注并行計算中的一些底層問題,只要按照Map Reduce API的編程模型實現(xiàn)相應(yīng)業(yè)務(wù)邏輯的開發(fā)即可。
一個Map Reduce作業(yè)通常會把輸入的數(shù)據(jù)集切分為若干獨立的數(shù)據(jù)塊,由map任務(wù)以并行的方式處理它們,對map的輸出先進行排序,然后再把結(jié)果輸入reduce任務(wù),由reduce任務(wù)來完成最終的統(tǒng)一處理。通常Map Reduce作業(yè)的輸入和輸出都是使用Hadoop分布式文件系統(tǒng)(HDFS)進行存儲,換句話說,就是Map Reduce框架處理數(shù)據(jù)的輸入源和輸出目的地的大部分場景都是存儲在HDFS上的。
在部署Hadoop集群時,通常是將計算節(jié)點和存儲節(jié)點部署在相同的節(jié)點之上,這樣做的好處是允許計算框架在進行任務(wù)調(diào)度時,可以將作業(yè)優(yōu)先調(diào)度到那些已經(jīng)存有數(shù)據(jù)的節(jié)點上進行數(shù)據(jù)的計算,使整個集群的網(wǎng)絡(luò)帶寬被非常高效地利用,這就是大數(shù)據(jù)中非常有名的一句話“移動計算而不是移動數(shù)據(jù)”。
(3)資源管理系統(tǒng)YARN
YARN的基本思想是將Hadoop1.x中Map Reduce架構(gòu)中的Job Tracker的資源管理和作業(yè)調(diào)度監(jiān)控功能進行分離,解決了在Hadoop1.x中只能運行Map Reduce框架的限制。
YARN是隨著Hadoop的不斷發(fā)展而催生的新框架,全稱是Yet Another Resource Negotiator,是一個通用資源管理系統(tǒng),可為運行在YARN之上的分布式應(yīng)用程序提供統(tǒng)一的資源管理和調(diào)度。YARN的引入為Hadoop集群在利用率、資源統(tǒng)一管理和數(shù)據(jù)共享等方面帶來了很大好處,而且在YARN之上還可運行各種不同類型的作業(yè),比如:Map Reduce、Spark、Tez等不同的計算框架。
4.為什么很多公司選擇Hadoop作為大數(shù)據(jù)平臺的解決方案
(1)Hadoop源代碼開放。
(2)社區(qū)活躍、參與者眾多(這是我們選擇某一項框架的很重要的原因,試想如果社區(qū)都不活躍,那么當(dāng)我們在工作中遇到各種問題時,如何去解決)。
(3)涉及大數(shù)據(jù)分布式存儲和計算的各個場景。
(4)發(fā)展了十余年,已得到企業(yè)界的驗證。
5.Hadoop發(fā)行版本
Hadoop的發(fā)行版除了由社區(qū)維護的 Apache Hadoop之外,Cloudera、Hortonworks、Map R等都提供了自己的商業(yè)版。商業(yè)版主要是提供對各項服務(wù)的支持(高級功能要收取一定的費用),這對一些研發(fā)能力不是太強的企業(yè)來說是非常有利的,公司只要出一定的費用就能使用到一些高級功能。每個發(fā)行版都有自己的一些特點,這里對使用最多的CDH和HDP發(fā)行版的特點做簡單介紹。
(1)Cloudera CDH
Cloudera CDH版本的Hadoop是現(xiàn)在國內(nèi)公司使用最多的。
優(yōu)點:Cloudera Manager(簡稱CM)采取“小白”式安裝,配置簡單、升級方便,資源分配設(shè)置方便,非常利于整合Impala,而且文檔寫得很好,與Spark的整合力度也非常好。在CM的基礎(chǔ)之上,我們通過頁面就能完成對Hadoop生態(tài)圈各種環(huán)境的安裝、配置和升級。
缺點:CM不開源,Hadoop的功能和社區(qū)版有些出入。
(2)Hortonworks HDP
優(yōu)點:原裝Hadoop、純開源,版本和社區(qū)版一致,支持Tez,集成開源監(jiān)控方案Ganglia和Nagios。
缺點:安裝、升級、添加、刪除節(jié)點比較麻煩。
1.2.2 Hadoop生態(tài)圈
1.概述
當(dāng)下Hadoop已經(jīng)成長為一個龐大的體系,只要和海量數(shù)據(jù)相關(guān)的,沒有哪個領(lǐng)域能缺少Hadoop的身影。
狹義的Hadoop:是一個適合大數(shù)據(jù)分布式存儲和分布式計算的平臺,包括HDFS、Map Reduce和YARN。
廣義的Hadoop:指以Hadoop為基礎(chǔ)的生態(tài)圈,是一個很龐大的體系,Hadoop只是其中最重要、最基礎(chǔ)的一部分;生態(tài)圈中的每個子系統(tǒng)只負(fù)責(zé)解決某一個特定的問題域(甚至可能更窄),它并不是一個全能系統(tǒng),而是多個小而精的系統(tǒng)。Hadoop生態(tài)圈的主要構(gòu)成如圖1.1所示。

圖1.1 Hadoop生態(tài)圈
2.HDFS
Hadoop生態(tài)圈的基本組成部分是Hadoop分布式文件系統(tǒng)(HDFS)。大數(shù)據(jù)處理框架如Map Reduce或者Spark等要處理的數(shù)據(jù)源大部分都是存儲在HDFS之上,Hive或者HBase等框架的數(shù)據(jù)通常情況下也是存儲在HDFS之上。簡而言之,HDFS為大數(shù)據(jù)的存儲提供了保障。
3.Map Reduce
Map Reduce是一個分布式、并行處理的編程模型。開發(fā)人員只需編寫Hadoop的Map Reduce作業(yè)就能使用存儲在HDFS中的數(shù)據(jù)來完成相應(yīng)的數(shù)據(jù)處理功能。
4.YARN
YARN是Hadoop2.x之后對Hadoop1.x之前Job Tracker和Task Tracker模型進行優(yōu)化而誕生的,主要負(fù)責(zé)整個系統(tǒng)的資源管理和調(diào)度,而且在YARN之上能運行各種不同類型(Map Reduce、Tez、Spark)的執(zhí)行框架。
5.HBase
HBase是一個建立在HDFS之上的面向列的數(shù)據(jù)庫,用于快速讀/寫大量數(shù)據(jù)。HBase使用Zoo Keeper進行管理,以確保所有組件都能正常運行。HBase保障查詢速度的一個關(guān)鍵因素就是其Row Key設(shè)計得是否合理,這點需要重點關(guān)注。
6.Zoo Keeper
Zoo Keeper是分布式協(xié)調(diào)服務(wù)的框架。Hadoop的許多組件都依賴于Zoo Keeper,比如HDFS Name Node HA的自動切換、HBase的高可用,以及Spark Standalone模式Master的HA機制都是通過Zoo Keeper來實現(xiàn)的。
7.Hive
Hive讓不熟悉Map Reduce的開發(fā)人員能編寫數(shù)據(jù)查詢語句(SQL語句)來對大數(shù)據(jù)進行統(tǒng)計分析操作。Hive的執(zhí)行原理就是將SQL語句翻譯為Map Reduce作業(yè),并提交到Hadoop集群上運行。Hive框架一誕生就受到了很多熟悉SQL人員的追捧,因為只需要寫SQL語句,而不需要面向Map Reduce編程API進行相應(yīng)代碼的開發(fā),大大降低了學(xué)習(xí)的門檻,同時也提升了開發(fā)的效率。
8.Pig
Pig是一個用于并行計算的高級數(shù)據(jù)流語言和執(zhí)行框架,有一套和SQL類似的執(zhí)行語句,處理的對象是HDFS上的文件。Pig的數(shù)據(jù)處理語言采取數(shù)據(jù)流方式,一步一步地進行處理(該框架簡單了解即可,近些年在生產(chǎn)上使用得并不是太多)。
9.Sqoop
Sqoop是一個用于在關(guān)系數(shù)據(jù)庫、數(shù)據(jù)倉庫(Hive)和Hadoop之間轉(zhuǎn)移數(shù)據(jù)的框架。可以借助Sqoop完成關(guān)系型數(shù)據(jù)庫到HDFS、Hive、HBase等Hadoop生態(tài)圈中框架的數(shù)據(jù)導(dǎo)入導(dǎo)出操作,其底層也是通過Map Reduce作業(yè)來實現(xiàn)的。
10.Flume
Flume是由Cloudera提供的一個分布式、高可靠、高可用的服務(wù),是用于分布式的海量日志的高效收集、聚合、移動/傳輸系統(tǒng)的框架;Flume是一個基于流式數(shù)據(jù)的非常簡單的(只需要一個配置文件)、靈活的、健壯的、容錯的架構(gòu)。
11.Oozie
Oozie是一個工作流調(diào)度引擎,在Oozie上可以執(zhí)行Map Reduce、Hive、Spark等不同類型的單一或者具有依賴性(后一個作業(yè)的執(zhí)行依賴于前一個或者多個作業(yè)的成功執(zhí)行)的作業(yè)。可以使用Cloudera Manager中的HUE子項目在頁面上對Oozie進行配置和管理。類似的在大數(shù)據(jù)中使用的工作流調(diào)度引擎還有Azkaban,后續(xù)章節(jié)會詳細(xì)介紹。
12.Mahout
Mahout是一個機器學(xué)習(xí)和數(shù)據(jù)挖掘庫,它提供的Map Reduce包含很多實現(xiàn),包括聚類算法、回歸測試、統(tǒng)計建模。
1.2.3 Hadoop應(yīng)用案例
1.大數(shù)據(jù)在華數(shù)傳媒的應(yīng)用
當(dāng)下大數(shù)據(jù)之熱使得技術(shù)界有關(guān)Hadoop的話題討論得熱火朝天。但在日常工作中,企業(yè)往往還是遵循既有模式,對于Hadoop到底能否真正有益于企業(yè)的應(yīng)用依然心存顧慮。Hadoop是不是很年輕?這個開源的事物能否符合公司業(yè)務(wù)級的嚴(yán)謹(jǐn)要求?有沒有企業(yè)真的應(yīng)用過?一系列問題縈繞在人們心頭。這完全可以理解,畢竟任何一個新生事物出來人們都要有一個接受過程。
對于Hadoop,其實這些都不是問題。專業(yè)人士都知道,Hadoop已發(fā)展了十余年,這對于一個實用技術(shù)的穩(wěn)定發(fā)展已足夠長。事實上,雖然“大數(shù)據(jù)”一詞才出來兩三年,但它實際所指的海量的、多類型的數(shù)據(jù)現(xiàn)象早已有了,不但在互聯(lián)網(wǎng)領(lǐng)域,更在工業(yè)、商業(yè)、通信、金融、傳媒等領(lǐng)域存在久遠(yuǎn)。比如,生產(chǎn)線上巨量傳感器數(shù)據(jù)的接收與分析、通信系統(tǒng)全程全網(wǎng)的實時日志文件采集與分析、醫(yī)療系統(tǒng)密集數(shù)據(jù)采集與分析等,所有這些都需要新型的數(shù)據(jù)處理技術(shù)來支撐。Hadoop在這些領(lǐng)域突顯了強大的競爭力,并在國內(nèi)外的相關(guān)實踐中獲得廣泛應(yīng)用。
2013年,華數(shù)傳媒的大數(shù)據(jù)系統(tǒng)完成了從無到有的基礎(chǔ)建設(shè),實現(xiàn)了基本應(yīng)用。然而,系統(tǒng)仍面臨很多挑戰(zhàn):數(shù)據(jù)量增加帶來的服務(wù)性能壓力、數(shù)據(jù)分析無法滿足高時效性要求、業(yè)務(wù)支撐功能無法滿足復(fù)雜的商用需求、對網(wǎng)絡(luò)和服務(wù)器質(zhì)量等數(shù)據(jù)分析仍為空白等。為此,華數(shù)傳媒亟需解決如下問題。
(1)數(shù)據(jù)采集、存儲和轉(zhuǎn)發(fā)。通過大數(shù)據(jù)技術(shù)滿足海量、多來源、多樣性數(shù)據(jù)的存儲、管理要求,支持平臺硬件的線性擴展,提供快速實時的數(shù)據(jù)分析結(jié)果,并迅速作用于業(yè)務(wù)。
(2)個性化用戶推薦。不僅限于數(shù)據(jù)本身的分析和決策價值,通過構(gòu)建在大數(shù)據(jù)平臺之上的整合業(yè)務(wù)能力,還能為用戶提供融合、個性化的內(nèi)容服務(wù)。
(3)從內(nèi)容傳輸?shù)絻?nèi)容制造。使用大數(shù)據(jù)挖掘技術(shù)可先于觀眾知道他們的需求,預(yù)知將受到追捧的電視節(jié)目。另外,通過觀眾對演員、情節(jié)、基調(diào)、類型等元數(shù)據(jù)的標(biāo)簽化,來了解受眾偏好,從而進行分析觀測,為后續(xù)影視制作的內(nèi)容開發(fā)等做好準(zhǔn)備。
(4)使用大數(shù)據(jù)平臺提供基于全量數(shù)據(jù)的實時榜單。從時間(小時/天/周)、用戶等維度,對點播節(jié)目、直播節(jié)目、節(jié)目類別、搜索關(guān)鍵詞等進行排名分析、同比環(huán)比分析、趨勢分析等。地區(qū)風(fēng)向標(biāo)主要從城市和時間等維度分析點播排行、劇集排行、分類排行、熱搜排行及用戶數(shù)量的變化。另外,從時間、頻道、影片類型、劇集等維度,根據(jù)在看數(shù)量、新增數(shù)量、結(jié)束觀看數(shù)量、完整看完數(shù)量等指標(biāo)分析用戶走向。
(5)新媒體指數(shù)分析。通過對用戶行為進行分析獲取很多的隱性指標(biāo),從側(cè)面反映用戶對業(yè)務(wù)的認(rèn)可度、用戶的使用行為習(xí)慣等。在此基礎(chǔ)之上,大數(shù)據(jù)分析可幫助華數(shù)傳媒構(gòu)建規(guī)范的指標(biāo)分析和衡量體系,為業(yè)務(wù)運營提供更加強有力的指導(dǎo)。
(6)智能推薦。運用星環(huán)科技大數(shù)據(jù)基礎(chǔ)架構(gòu),通過對用戶行為數(shù)據(jù)的采集分析,進行精準(zhǔn)畫像;使用智能推薦引擎,實現(xiàn)信息的個性化推薦(TV屏、手機、PC)和個性化營銷(個性化廣告、豐富產(chǎn)品組合、市場分析)。
基于可持續(xù)擴展和優(yōu)化的智能推薦算法,以及大數(shù)據(jù)帶來的實時數(shù)據(jù)交互能力,為每一個用戶量身定制的推薦節(jié)目極大地提高了產(chǎn)品的到達(dá)率,增強了用戶的忠誠度。
2.大數(shù)據(jù)在全球最大超市沃爾瑪?shù)膽?yīng)用
沃爾瑪應(yīng)用大數(shù)據(jù)技術(shù)分析顧客的商品搜索行為,找出超越競爭對手的商機。
全球最大連鎖超市沃爾瑪雖然十年前就投入了在線電子商務(wù),但在線銷售的營業(yè)收入遠(yuǎn)遠(yuǎn)落后于亞馬遜。后來,沃爾瑪采用Hadoop來分析顧客搜索商品的行為,以及用戶通過搜索引擎找到沃爾瑪網(wǎng)站的關(guān)鍵詞,再利用這些關(guān)鍵詞的分析結(jié)果發(fā)掘顧客需求,以規(guī)劃下一季商品的促銷策略,沃爾瑪還打算分析顧客在Facebook、Twitter等社交網(wǎng)站上對商品的討論,甚至沃爾瑪能比父親更快知道女兒懷孕的消息,并且主動寄送相關(guān)商品的促銷郵件,期望能比競爭對手提前一步發(fā)現(xiàn)顧客需求。
3.大數(shù)據(jù)在全球最大拍賣網(wǎng)站eBay的應(yīng)用
eBay用Hadoop拆解非結(jié)構(gòu)性巨量數(shù)據(jù),降低數(shù)據(jù)倉儲負(fù)載。eBay用Hadoop來分析買賣雙方在網(wǎng)站上的行為。eBay擁有全世界最大的數(shù)據(jù)倉儲系統(tǒng),每天增加的數(shù)據(jù)量有50TB,光是存儲就是一大挑戰(zhàn),更何況要分析這些數(shù)據(jù)。
eBay是全球最大的拍賣網(wǎng)站,8千萬名用戶每天產(chǎn)生的50TB數(shù)據(jù)量,相當(dāng)于5天就增加了1座美國國會圖書館的數(shù)據(jù)量。
eBay分析平臺高級總監(jiān)Oliver Ratzesberger也坦言,大數(shù)據(jù)分析面臨的最大挑戰(zhàn)就是要同時處理結(jié)構(gòu)化以及非結(jié)構(gòu)化的數(shù)據(jù)。eBay正是利用Hadoop來解決了這一難題。
eBay在5年多前就另外設(shè)置了一個軟硬件整合的平臺Singularity,并搭配壓縮技術(shù)來解決結(jié)構(gòu)化數(shù)據(jù)和半結(jié)構(gòu)化數(shù)據(jù)分析問題,3年前更在這個平臺上整合了Hadoop來處理非結(jié)構(gòu)化數(shù)據(jù),以及進行數(shù)據(jù)預(yù)處理,將大塊結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)拆解成小型數(shù)據(jù),再放入數(shù)據(jù)倉儲系統(tǒng)的數(shù)據(jù)模型中進行分析,以加快分析速度,也減輕數(shù)據(jù)倉儲系統(tǒng)的分析負(fù)載。
- ABB工業(yè)機器人編程全集
- 我的J2EE成功之路
- 網(wǎng)絡(luò)服務(wù)器架設(shè)(Windows Server+Linux Server)
- Getting Started with MariaDB
- 手把手教你學(xué)AutoCAD 2010
- CSS全程指南
- 物聯(lián)網(wǎng)與云計算
- 大數(shù)據(jù)技術(shù)入門(第2版)
- 樂高創(chuàng)意機器人教程(中級 下冊 10~16歲) (青少年iCAN+創(chuàng)新創(chuàng)意實踐指導(dǎo)叢書)
- 基于單片機的嵌入式工程開發(fā)詳解
- Statistics for Data Science
- 激光選區(qū)熔化3D打印技術(shù)
- SAP Business Intelligence Quick Start Guide
- 筆記本電腦維修90個精選實例
- Chef:Powerful Infrastructure Automation