官术网_书友最值得收藏!

任務(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ù)載。

主站蜘蛛池模板: 天台县| 拉萨市| 武清区| 那坡县| 项城市| 唐海县| 蒲江县| 永安市| 故城县| 洛浦县| 辽阳县| 遂宁市| 老河口市| 松江区| 桂平市| 宁武县| 瑞金市| 东源县| 海口市| 嘉义县| 湖州市| 孝感市| 江油市| 韩城市| 海盐县| 小金县| 临潭县| 基隆市| 塔河县| 本溪市| 丰镇市| 车致| 平定县| 和静县| 武宣县| 龙口市| 鹿泉市| 皋兰县| 治多县| 鹤庆县| 黑龙江省|