日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

阿里巴巴飞天大数据架构体系与Hadoop生态系统

發(fā)布時間:2024/8/23 windows 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里巴巴飞天大数据架构体系与Hadoop生态系统 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

很多人問阿里的飛天大數(shù)據(jù)平臺、云梯2、MaxCompute、實時計算到底是什么,和自建Hadoop平臺有什么區(qū)別。

先說Hadoop

什么是Hadoop?
Hadoop是一個開源、高可靠、可擴展的分布式大數(shù)據(jù)計算框架系統(tǒng),主要用來解決海量數(shù)據(jù)的存儲、分析、分布式資源調(diào)度等。Hadoop最大的優(yōu)點就是能夠提供并行計算,充分利用集群的威力進行高速運算和存儲。

Hadoop的核心有兩大板塊:HDFS和MapReduce。

HDFS全稱Hadoop Distributed File System,是一種分布式文件存儲系統(tǒng)。分布式文件系統(tǒng)是指將固定于某個地點的某個文件系統(tǒng),擴展到任意多個文件系統(tǒng),眾多的節(jié)點組成一個文件系統(tǒng)網(wǎng)絡(luò)。每個節(jié)點可以分布在不同的地點,通過網(wǎng)絡(luò)進行節(jié)點間的通信和數(shù)據(jù)傳輸。人們在使用分布式文件系統(tǒng)時,無需關(guān)心數(shù)據(jù)是存儲在哪個節(jié)點上、或者是從哪個節(jié)點獲取的,只需要像使用本地文件系統(tǒng)一樣管理和存儲文件系統(tǒng)中的數(shù)據(jù)。HDFS有著高容錯性,可以部署在低廉的硬件;提供高吞吐量來訪問應(yīng)用程序的數(shù)據(jù);可以有效解決超大數(shù)據(jù)量存儲和管理難題的分布式文件系統(tǒng)屬性的特點。因此HDFS天然適合有著超大數(shù)據(jù)集的應(yīng)用程序,或者說本身就是為超大規(guī)模數(shù)據(jù)量處理的應(yīng)用程序而設(shè)計的。

MapReduce是一個分布式離線并行計算框架,能夠?qū)Υ髷?shù)據(jù)集進行并行處理。MapReduce就是將一個超大規(guī)模計算量的任務(wù)或者說數(shù)據(jù)量分割成無數(shù)小的計算任務(wù)與計算文件,然后再將計算結(jié)果進行合并的過程。MapReduce主要分為Map和Reduce兩個階段。Map是計算階段,計算足夠小的計算任務(wù)。Reduce是匯總階段,將map階段的計算結(jié)果匯總合并起來。

Hadoop的初始版本或者說核心就是這兩大板塊:HDFS為海量數(shù)據(jù)提供了存儲,而MapReduce為海量數(shù)據(jù)提供了計算框架。

Hadoop的歷史

1998年9月4日,Google公司在美國硅谷成立。

與此同時,一位名叫Doug?Cutting的美國工程師,也迷上了搜索引擎。他做了一個用于文本搜索的函數(shù)庫,命名為Lucene。Lucene是用JAVA寫成的,因為好用而且開源,非常受程序員們的歡迎。

2001年底,Lucene成為Apache軟件基金會jakarta項目的一個子項目。

2004年,Doug Cutting在Lucene的基礎(chǔ)上和Apache開源伙伴Mike Cafarella合作開發(fā)了一款開源搜索引擎,命名為Nutch。Nutch是一個建立在Lucene核心之上的網(wǎng)頁搜索應(yīng)用程序,類似于Google。

隨著時間的推移,互聯(lián)網(wǎng)發(fā)展迅速,數(shù)據(jù)量暴增,搜索引擎需要檢索的對象的數(shù)據(jù)量也在不斷增大。尤其是Google,需要不斷優(yōu)化自己的搜索算法,提升搜索效率。在這個過程中Google提出了不少的新方法與思路。

2003年,Google發(fā)表了一篇技術(shù)學(xué)術(shù)論文,公開了自己的谷歌文件系統(tǒng)GFS(Google?File?System)。這是Google公司為了存儲海量搜索數(shù)據(jù)而設(shè)計的專用文件系統(tǒng)。

第二年,2004年,Doug?Cutting基于Google的GFS論文,實現(xiàn)了分布式文件存儲系統(tǒng),并將它命名為NDFS(Nutch Distributed File?System)。

2004年,Google又發(fā)表了一篇技術(shù)學(xué)術(shù)論文,公開了自己的MapReduce編程模型。MapReduce用于大規(guī)模數(shù)據(jù)集的并行分析運算。

第二年,2005年,Doug?Cutting又基于MapReduce,在Nutch搜索引擎實現(xiàn)了大規(guī)模數(shù)據(jù)集的并行分析運算。

2006年,Doug?Cutting將NDFS和MapReduce進行了升級改造,并重新命名為Hadoop。NDFS也改名為HDFS(Hadoop Distributed File?System)。

此后,大名鼎鼎的大數(shù)據(jù)框架系統(tǒng)——Hadoop誕生。而Doug?Cutting也被人們稱為Hadoop之父。

所以說Hadoop的核心就兩大部分:為大數(shù)據(jù)提供存儲的HDFS和為大數(shù)據(jù)計算的MapReduce。

HDFS與MapReduce的核心工作原理

HDFS

HDFS主要有兩個角色:NameNode、DataNode和Client。

NameNode是HDFS的守護程序,也是是Master節(jié)點,主節(jié)點。NameNode中會存儲文件的元數(shù)據(jù)信息,記錄文件是如何分割成數(shù)據(jù)塊的,以及這些數(shù)據(jù)塊被存儲到哪些節(jié)點上,可以對內(nèi)存和I/O進行集中管理。NameNode單點在發(fā)生故障時將使集群崩潰。

DataNode是Slave節(jié)點,從節(jié)點。DataNode負(fù)責(zé)把HDFS數(shù)據(jù)塊讀寫到本地文件系統(tǒng),是真正存儲文件的節(jié)點。一個文件會被切割成一個或者多個block塊,這些block塊會被存儲在一系列的DataNode節(jié)點中,并且每一個塊可能會在多個DataNode上存在備份。

Client:用戶與HDFS的橋梁。主要用于切分用戶提交的文件,與NameNode交互,獲得文件位置信息。然后直接與DataNode交互,讀取和寫入數(shù)據(jù)。

HDFS寫入流程(參考的現(xiàn)有文檔):

1、用戶向Client(客戶機)提出請求。例如,需要寫入200MB的數(shù)據(jù)。

2、Client制定計劃:將數(shù)據(jù)按照64MB為塊,進行切割;所有的塊都保存三份。

3、Client將大文件切分成塊(block)。

4、針對第一個塊,Client告訴NameNode(主控節(jié)點),請幫助我,將64MB的塊復(fù)制三份。

5、NameNode告訴Client三個DataNode(數(shù)據(jù)節(jié)點)的地址,并且將它們根據(jù)到Client的距離,進行了排序。

6、Client把數(shù)據(jù)和清單發(fā)給第一個DataNode。

7、第一個DataNode將數(shù)據(jù)復(fù)制給第二個DataNode。

8、第二個DataNode將數(shù)據(jù)復(fù)制給第三個DataNode。

9、如果某一個塊的所有數(shù)據(jù)都已寫入,就會向NameNode反饋已完成。

10、對第二個Block,也進行相同的操作。

11、所有Block都完成后,關(guān)閉文件。NameNode會將數(shù)據(jù)持久化到磁盤上。

?

HDFS讀取流程:

1、用戶向Client提出讀取請求。

2、Client向NameNode請求這個文件的所有信息。

3、NameNode將給Client這個文件的塊列表,以及存儲各個塊的數(shù)據(jù)節(jié)點清單(按照和客戶端的距離排序)。

4、Client從距離最近的數(shù)據(jù)節(jié)點下載所需的塊。

?

MapReduce

MapReduce主要也有兩個角色:JobTracker和TaskTracker。

?JobTracker,類似于 NameNode。JobTracker是 Hadoop 集群中惟一負(fù)責(zé)控制 MapReduce應(yīng)用程序的系統(tǒng),位于Master節(jié)點上。在用戶計算作業(yè)的應(yīng)用程序提交之后,JobTracker決定有哪些文件參與處理,使用文件塊信息確定如何創(chuàng)建其他 TaskTracker 從屬任務(wù),同時監(jiān)控task并且于不同的節(jié)點上重啟失敗的task。TaskTracker位于slave從節(jié)點上與dataNode結(jié)合管理各自節(jié)點上由jobtracker分配的task,每個節(jié)點只有一個tasktracker,但一個tasktracker可以啟動多個JVM,用于并行執(zhí)行map或reduce任務(wù)。每個 TaskTracker 將狀態(tài)和完成信息報告給 JobTracker。

(實際上MapReduce計算邏輯非常復(fù)雜,以上只是簡化描述)

?

HDFS和MapReduce的組合只是Hadoop的1.0版本,這個版本有一些比較大的缺陷:

1、可伸縮性問題:JobTracker負(fù)載較重,JobTracker 必須不斷跟蹤數(shù)千個 TaskTracker、數(shù)百個作業(yè),以及數(shù)萬個 map 和 reduce 任務(wù)。相反,TaskTracker 通常只運行十來個任務(wù)。JobTracker存在單點故障,成為性能瓶頸。

2、可靠性差,NameNode只有一個,萬一掛掉,整個系統(tǒng)就會崩潰。

為了解決一些問題,2012年5月,Hadoop推出了 2.0版本 。

2.0版本中,在HDFS與MapReduce之間,增加了YARN資源管理框架層。

YARN全稱Yet Another Resource Negotiator是一個資源管理模塊,負(fù)責(zé)整個集群資源的管理和調(diào)度,例如對每個作業(yè),分配CPU,內(nèi)存等等,都由yarn來管理。它的特點是擴展性,容錯性,多框架資源統(tǒng)一調(diào)度。區(qū)別于hadoop1.0只支持MapReduce作業(yè),yarn之上可以運行不同類型的作業(yè)。很多應(yīng)用都可以運行在yarn之上,由yarn統(tǒng)一進行調(diào)度。

YARN的運行原理:

YARN的一個基本思想是講資源管理和作業(yè)調(diào)度/監(jiān)視的功能分解為獨立的守護進程。其思想是有一個全局的ResourceManager (RM) 和每一個應(yīng)用的ApplicationMaster (AM)。一個應(yīng)用可以是單個的job,也可以是一組job。

YARN框架由ResourceManager節(jié)點和NodeManager組成。ResourceManager具有著應(yīng)用系統(tǒng)中資源分配的最終權(quán)威。NodeManager是每臺機器的一個框架代理,監(jiān)控每臺機器的資源使用情況(cpu、內(nèi)存、磁盤、網(wǎng)絡(luò)),同時上報給ResourceManager。每一個應(yīng)用的ApplicationMaster是一個框架特定的庫,它的任務(wù)是向ResourceManager協(xié)調(diào)資源并與NodeManager一起執(zhí)行監(jiān)視任務(wù)。

從流程上來說:當(dāng)用戶提交了一個計算任務(wù),ResourceManager首先會在一個NodeManager為這個任務(wù)生成一個ApplicationMaster作為任務(wù)的管理者,ApplicationMaster向ResourceManager申請所需要的資源,ResourceManager會告訴NodeManager分配資源,NodeManager分配資源來供任務(wù)進行計算。NodeManager在不斷的向ResourceManager匯報資源使用情況。

其實MapReduce與HDFS并不是一定要互相耦合工作的,兩個都可以彼此獨立工作,MapReduce也可以連接本地文件服務(wù)來進行計算,但是他們互相配合的時候才能發(fā)揮出最大的能力。

?

大數(shù)據(jù)架構(gòu)體系——Hadoop生態(tài)系統(tǒng)

目前業(yè)界內(nèi)最流行的大數(shù)據(jù)架構(gòu)體系就是Hadoop的生態(tài)系統(tǒng)。目前,包括Yahoo、IBM、Facebook、亞馬遜、阿里巴巴、華為、百度、騰訊等公司,都采用Hadoop構(gòu)建自己的大數(shù)據(jù)系統(tǒng),當(dāng)然,是在Hadoop的基礎(chǔ)上進行二次開發(fā)。

Hadoop生態(tài)系統(tǒng)是指以大數(shù)據(jù)分布式存儲(HDFS),分布式計算(MapReduce)和資源調(diào)度(YARN)為基礎(chǔ)聯(lián)合其他各種組件在內(nèi)的一整套軟件。Hadoop生態(tài)系統(tǒng)的每一個子系統(tǒng)只解決某一個特定的問題域。不是一個全能系統(tǒng),而是多個小而精的系統(tǒng)。

在這之前有個插曲:

2006年,Google又發(fā)論文了。這次,Google介紹了自己的BigTable,一種分布式數(shù)據(jù)存儲系統(tǒng),用來處理海量數(shù)據(jù)的非關(guān)系型數(shù)據(jù)庫。

于是Doug?Cutting在自己的Hadoop系統(tǒng)里面又引入了BigTable,并命名為HBase。

簡單介紹Hadoop生態(tài)系統(tǒng)的主要構(gòu)成組件:

HDFS: 基礎(chǔ)的文件系統(tǒng),Hadoop分布式文件系統(tǒng)

MapReduce:并行計算框架,運行在Yarn之上

HBase: 類似Google BigTable的分布式NoSQL列分布式數(shù)據(jù)庫。適用于實時快速查詢的場景。

Hive:數(shù)據(jù)倉庫工具。處理的是海量結(jié)構(gòu)化日志數(shù)據(jù)的統(tǒng)計問題??梢詫⒔Y(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,通過類SQL語句快速實現(xiàn)簡單的MapReduce統(tǒng)計,不必開發(fā)專門的MapReduce應(yīng)用,十分適合數(shù)據(jù)倉庫的統(tǒng)計分析。

Zookeeper:分布式協(xié)調(diào)服務(wù),“動物園管理員”角色,是一個對集群服務(wù)進行管理的框架,主要是用來解決分布式應(yīng)用中經(jīng)常遇到的一些數(shù)據(jù)管理問題,簡化分布式應(yīng)用協(xié)調(diào)及其管理的難度。

Pig: 一個基于Hadoop的大規(guī)模數(shù)據(jù)分析工具,該語言的編譯器會把類SQL的數(shù)據(jù)分析請求轉(zhuǎn)換為一系列經(jīng)過優(yōu)化處理的MapReduce運算。

Sqoop:在Hadoop與傳統(tǒng)的數(shù)據(jù)庫間進行數(shù)據(jù)的傳遞。

Mahout:一個可擴展的機器學(xué)習(xí)和數(shù)據(jù)挖掘庫,實現(xiàn)了很多數(shù)據(jù)挖掘的經(jīng)典算法,幫助用戶很方便地創(chuàng)建應(yīng)用程序。

Oozie/Azkaban:一個工作流調(diào)度引擎,用來處理具有依賴關(guān)系的作業(yè)調(diào)度。

Presto/Kylin:一個交互式的查詢引擎,實現(xiàn)低延時查詢。

Flume:日志收集框架。將多種應(yīng)用服務(wù)器上的日志,統(tǒng)一收集到HDFS上,這樣就可以使用hadoop進行處理

對于大數(shù)據(jù)領(lǐng)域最早的應(yīng)用者阿里巴巴對大數(shù)據(jù)的研究是一直走在前列的。感興趣的用戶可以看看一本書:《阿里巴巴大數(shù)據(jù)之路》書中很詳細的介紹了阿里巴巴的整體大數(shù)據(jù)架構(gòu)。

阿里巴巴飛天大數(shù)據(jù)平臺是在開源Hadoop的基礎(chǔ)上自研的一套體系,這種Serverless大數(shù)據(jù)服務(wù)成為當(dāng)下主流趨勢,可以減少企業(yè)本地服務(wù)器部署壓力,顯著提升企業(yè)工作效率的同時減少了企業(yè)在開發(fā)和人力方面的成本投入,讓企業(yè)能更專注于業(yè)務(wù)發(fā)展,培養(yǎng)更多面向業(yè)務(wù)的技術(shù)人員。

7月25日,阿里云飛天大數(shù)據(jù)平臺亮相阿里云峰會上海站,擁有中國唯一自主研發(fā)的計算引擎,是全球集群規(guī)模最大的計算平臺,最大可擴展至10萬臺計算集群,支撐海量數(shù)據(jù)存儲和計算。


原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。

總結(jié)

以上是生活随笔為你收集整理的阿里巴巴飞天大数据架构体系与Hadoop生态系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。