不少人問阿里的飛天大數據平臺、雲梯二、MaxCompute、實時計算究竟是什麼,和自建Hadoop平臺有什麼區別。html
先說Hadoop程序員
什麼是Hadoop?算法
Hadoop是一個開源、高可靠、可擴展的分佈式大數據計算框架系統,主要用來解決海量數據的存儲、分析、分佈式資源調度等。Hadoop最大的優勢就是可以提供並行計算,充分利用集羣的威力進行高速運算和存儲。數據庫
Hadoop的核心有兩大板塊:HDFS和MapReduce。編程
HDFS全稱Hadoop Distributed File System,是一種分佈式文件存儲系統。分佈式文件系統是指將固定於某個地點的某個文件系統,擴展到任意多個文件系統,衆多的節點組成一個文件系統網絡。每一個節點能夠分佈在不一樣的地點,經過網絡進行節點間的通訊和數據傳輸。人們在使用分佈式文件系統時,無需關心數據是存儲在哪一個節點上、或者是從哪一個節點獲取的,只須要像使用本地文件系統同樣管理和存儲文件系統中的數據。HDFS有着高容錯性,能夠部署在低廉的硬件;提供高吞吐量來訪問應用程序的數據;能夠有效解決超大數據量存儲和管理難題的分佈式文件系統屬性的特色。所以HDFS自然適合有着超大數據集的應用程序,或者說自己就是爲超大規模數據量處理的應用程序而設計的。安全
MapReduce是一個分佈式離線並行計算框架,可以對大數據集進行並行處理。MapReduce就是將一個超大規模計算量的任務或者說數據量分割成無數小的計算任務與計算文件,而後再將計算結果進行合併的過程。MapReduce主要分爲Map和Reduce兩個階段。Map是計算階段,計算足夠小的計算任務。Reduce是彙總階段,將map階段的計算結果彙總合併起來。服務器
Hadoop的初始版本或者說核心就是這兩大板塊:HDFS爲海量數據提供了存儲,而MapReduce爲海量數據提供了計算框架。網絡
Hadoop的歷史架構
1998年9月4日,Google公司在美國硅谷成立。併發
與此同時,一位名叫Doug Cutting的美國工程師,也迷上了搜索引擎。他作了一個用於文本搜索的函數庫,命名爲Lucene。Lucene是用JAVA寫成的,由於好用並且開源,很是受程序員們的歡迎。
2001年末,Lucene成爲Apache軟件基金會jakarta項目的一個子項目。
2004年,Doug Cutting在Lucene的基礎上和Apache開源夥伴Mike Cafarella合做開發了一款開源搜索引擎,命名爲Nutch。Nutch是一個創建在Lucene核心之上的網頁搜索應用程序,相似於Google。
隨着時間的推移,互聯網發展迅速,數據量暴增,搜索引擎須要檢索的對象的數據量也在不斷增大。尤爲是Google,須要不斷優化本身的搜索算法,提高搜索效率。在這個過程當中Google提出了很多的新方法與思路。
2003年,Google發表了一篇技術學術論文,公開了本身的谷歌文件系統GFS(Google File System)。這是Google公司爲了存儲海量搜索數據而設計的專用文件系統。
第二年,2004年,Doug Cutting基於Google的GFS論文,實現了分佈式文件存儲系統,並將它命名爲NDFS(Nutch Distributed File System)。
2004年,Google又發表了一篇技術學術論文,公開了本身的MapReduce編程模型。MapReduce用於大規模數據集的並行分析運算。
第二年,2005年,Doug Cutting又基於MapReduce,在Nutch搜索引擎實現了大規模數據集的並行分析運算。
2006年,Doug Cutting將NDFS和MapReduce進行了升級改造,並從新命名爲Hadoop。NDFS也更名爲HDFS(Hadoop Distributed File System)。
此後,大名鼎鼎的大數據框架系統——Hadoop誕生。而Doug Cutting也被人們稱爲Hadoop之父。
因此說Hadoop的核心就兩大部分:爲大數據提供存儲的HDFS和爲大數據計算的MapReduce。
HDFS與MapReduce的核心工做原理
HDFS
HDFS主要有兩個角色:NameNode、DataNode和Client。
NameNode是HDFS的守護程序,也是是Master節點,主節點。NameNode中會存儲文件的元數據信息,記錄文件是如何分割成數據塊的,以及這些數據塊被存儲到哪些節點上,能夠對內存和I/O進行集中管理。NameNode單點在發生故障時將使集羣崩潰。
DataNode是Slave節點,從節點。DataNode負責把HDFS數據塊讀寫到本地文件系統,是真正存儲文件的節點。一個文件會被切割成一個或者多個block塊,這些block塊會被存儲在一系列的DataNode節點中,而且每個塊可能會在多個DataNode上存在備份。
Client:用戶與HDFS的橋樑。主要用於切分用戶提交的文件,與NameNode交互,得到文件位置信息。而後直接與DataNode交互,讀取和寫入數據。
HDFS寫入流程(參考的現有文檔):
一、用戶向Client(客戶機)提出請求。例如,須要寫入200MB的數據。
二、Client制定計劃:將數據按照64MB爲塊,進行切割;全部的塊都保存三份。
三、Client將大文件切分紅塊(block)。
四、針對第一個塊,Client告訴NameNode(主控節點),請幫助我,將64MB的塊複製三份。
五、NameNode告訴Client三個DataNode(數據節點)的地址,而且將它們根據到Client的距離,進行了排序。
六、Client把數據和清單發給第一個DataNode。
七、第一個DataNode將數據複製給第二個DataNode。
八、第二個DataNode將數據複製給第三個DataNode。
九、若是某一個塊的全部數據都已寫入,就會向NameNode反饋已完成。
十、對第二個Block,也進行相同的操做。
十一、全部Block都完成後,關閉文件。NameNode會將數據持久化到磁盤上。
HDFS讀取流程:
一、用戶向Client提出讀取請求。
二、Client向NameNode請求這個文件的全部信息。
三、NameNode將給Client這個文件的塊列表,以及存儲各個塊的數據節點清單(按照和客戶端的距離排序)。
四、Client從距離最近的數據節點下載所需的塊。
MapReduce
MapReduce主要也有兩個角色:JobTracker和TaskTracker。
JobTracker,相似於 NameNode。JobTracker是 Hadoop 集羣中唯一負責控制 MapReduce應用程序的系統,位於Master節點上。在用戶計算做業的應用程序提交以後,JobTracker決定有哪些文件參與處理,使用文件塊信息肯定如何建立其餘 TaskTracker 從屬任務,同時監控task而且於不一樣的節點上重啓失敗的task。TaskTracker位於slave從節點上與dataNode結合管理各自節點上由jobtracker分配的task,每一個節點只有一個tasktracker,但一個tasktracker能夠啓動多個JVM,用於並行執行map或reduce任務。每一個 TaskTracker 將狀態和完成信息報告給 JobTracker。
(實際上MapReduce計算邏輯很是複雜,以上只是簡化描述)
HDFS和MapReduce的組合只是Hadoop的1.0版本,這個版本有一些比較大的缺陷:
一、可伸縮性問題:JobTracker負載較重,JobTracker 必須不斷跟蹤數千個 TaskTracker、數百個做業,以及數萬個 map 和 reduce 任務。相反,TaskTracker 一般只運行十來個任務。JobTracker存在單點故障,成爲性能瓶頸。
二、可靠性差,NameNode只有一個,萬一掛掉,整個系統就會崩潰。
爲了解決一些問題,2012年5月,Hadoop推出了 2.0版本 。
2.0版本中,在HDFS與MapReduce之間,增長了YARN資源管理框架層。
YARN全稱Yet Another Resource Negotiator是一個資源管理模塊,負責整個集羣資源的管理和調度,例如對每一個做業,分配CPU,內存等等,都由yarn來管理。它的特色是擴展性,容錯性,多框架資源統一調度。區別於hadoop1.0只支持MapReduce做業,yarn之上能夠運行不一樣類型的做業。不少應用均可以運行在yarn之上,由yarn統一進行調度。
YARN的運行原理:
YARN的一個基本思想是講資源管理和做業調度/監視的功能分解爲獨立的守護進程。其思想是有一個全局的ResourceManager (RM) 和每個應用的ApplicationMaster (AM)。一個應用能夠是單個的job,也能夠是一組job。
YARN框架由ResourceManager節點和NodeManager組成。ResourceManager具備着應用系統中資源分配的最終權威。NodeManager是每臺機器的一個框架代理,監控每臺機器的資源使用狀況(cpu、內存、磁盤、網絡),同時上報給ResourceManager。每個應用的ApplicationMaster是一個框架特定的庫,它的任務是向ResourceManager協調資源並與NodeManager一塊兒執行監視任務。
從流程上來講:當用戶提交了一個計算任務,ResourceManager首先會在一個NodeManager爲這個任務生成一個ApplicationMaster做爲任務的管理者,ApplicationMaster向ResourceManager申請所須要的資源,ResourceManager會告訴NodeManager分配資源,NodeManager分配資源來供任務進行計算。NodeManager在不斷的向ResourceManager彙報資源使用狀況。
其實MapReduce與HDFS並非必定要互相耦合工做的,兩個均可以彼此獨立工做,MapReduce也能夠鏈接本地文件服務來進行計算,可是他們互相配合的時候才能發揮出最大的能力。
大數據架構體系——Hadoop生態系統
目前業界內最流行的大數據架構體系就是Hadoop的生態系統。目前,包括Yahoo、IBM、Facebook、亞馬遜、阿里巴巴、華爲、百度、騰訊等公司,都採用Hadoop構建本身的大數據系統,固然,是在Hadoop的基礎上進行二次開發。
Hadoop生態系統是指以大數據分佈式存儲(HDFS),分佈式計算(MapReduce)和資源調度(YARN)爲基礎聯合其餘各類組件在內的一整套軟件。Hadoop生態系統的每個子系統只解決某一個特定的問題域。不是一個全能系統,而是多個小而精的系統。
在這以前有個插曲:
2006年,Google又發論文了。此次,Google介紹了本身的BigTable,一種分佈式數據存儲系統,用來處理海量數據的非關係型數據庫。
因而Doug Cutting在本身的Hadoop系統裏面又引入了BigTable,並命名爲HBase。
簡單介紹Hadoop生態系統的主要構成組件:
HDFS: 基礎的文件系統,Hadoop分佈式文件系統
MapReduce:並行計算框架,運行在Yarn之上
HBase: 相似Google BigTable的分佈式NoSQL列分佈式數據庫。適用於實時快速查詢的場景。
Hive:數據倉庫工具。處理的是海量結構化日誌數據的統計問題。能夠將結構化的數據文件映射爲一張數據庫表,經過類SQL語句快速實現簡單的MapReduce統計,沒必要開發專門的MapReduce應用,十分適合數據倉庫的統計分析。
Zookeeper:分佈式協調服務,「動物園管理員」角色,是一個對集羣服務進行管理的框架,主要是用來解決分佈式應用中常常遇到的一些數據管理問題,簡化分佈式應用協調及其管理的難度。
Pig: 一個基於Hadoop的大規模數據分析工具,該語言的編譯器會把類SQL的數據分析請求轉換爲一系列通過優化處理的MapReduce運算。
Sqoop:在Hadoop與傳統的數據庫間進行數據的傳遞。
Mahout:一個可擴展的機器學習和數據挖掘庫,實現了不少數據挖掘的經典算法,幫助用戶很方便地建立應用程序。
Oozie/Azkaban:一個工做流調度引擎,用來處理具備依賴關係的做業調度。
Presto/Kylin:一個交互式的查詢引擎,實現低延時查詢。
Flume:日誌收集框架。將多種應用服務器上的日誌,統一收集到HDFS上,這樣就可使用hadoop進行處理
對於大數據領域最先的應用者阿里巴巴對大數據的研究是一直走在前列的。感興趣的用戶能夠看看一本書:《阿里巴巴大數據之路》書中很詳細的介紹了阿里巴巴的總體大數據架構。
阿里巴巴飛天大數據平臺是在開源Hadoop的基礎上自研的一套體系,這種Serverless大數據服務成爲當下主流趨勢,能夠減小企業本地服務器部署壓力,顯著提高企業工做效率的同時減小了企業在開發和人力方面的成本投入,讓企業能更專一於業務發展,培養更多面向業務的技術人員。
7月25日,阿里雲飛天大數據平臺亮相阿里雲峯會上海站,擁有中國惟一自主研發的計算引擎,是全球集羣規模最大的計算平臺,最大可擴展至10萬臺計算集羣,支撐海量數據存儲和計算。
阿里巴巴飛天大數據架構體系的主要組件/產品介紹:
MaxCompute(ODPS) :阿里雲大數據計算服務,它能提供快速、徹底託管的PB級數據倉庫解決方案,使您能夠經濟並高效的分析處理海量數據。https://www.aliyun.com/product/odps
Realtime Compute:實時計算(Alibaba Cloud Realtime Compute,Powered by Ververica)是阿里雲提供的基於 Apache Flink 構建的企業級大數據計算平臺。在 PB 級別的數據集上能夠支持亞秒級別的處理延時,賦能用戶標準實時數據處理流程和行業解決方案;支持 Datastream API 做業開發,提供了批流統一的 Flink SQL,簡化 BI 場景下的開發;可與用戶已使用的大數據組件無縫對接,更多增值特性助力企業實時化轉型。https://data.aliyun.com/product/sc
GraphCompute:支持千億規模(關係網絡)圖的可視化建模、自動並行化Gremlin毫秒級查詢和自定義算法的一站式圖分析平臺;
Elasticsearch:提供100%兼容開源Elasticsearch的功能,以及Security、Machine Learning、Graph、APM等商業功能,致力於數據分析、數據搜索等場景服務。與開源社區背後商業公司Elastic戰略合做,爲客戶提供企業級權限管控、安全監控告警、自動報表生成等場景服務。https://data.aliyun.com/product/elasticsearch
OpenSearch:開放搜索(OpenSearch)是阿里巴巴自主研發的大規模分佈式搜索引擎平臺,其核心引擎HA3(問天3)系統爲包括淘寶、天貓在內的阿里集團核心業務提供搜索服務支持。經過集成智能查詢語義理解、機器學習排序算法等能力,旨在爲企業提供高搜索質量的一站式內容智能搜索服務。https://www.aliyun.com/product/opensearch
DataX (CDP):阿里雲數據集成(Data Integration)是阿里集團對外提供的可跨異構數據存儲系統的、可靠、安全、低成本、可彈性擴展的數據同步平臺,爲400對數據源提供不一樣網絡環境下的全量/增量數據進出通道。https://www.aliyun.com/product/cdp
Hologres:阿里雲交互式分析(Hologres)是一款兼容PostgreSQL協議的實時交互式分析產品。交互式分析與大數據生態無縫打通,支持對PB級數據進行高併發、低延時的分析處理,讓您輕鬆而經濟地使用現有BI工具對數據進行多維分析透視和業務探索。https://www.aliyun.com/product/hologram
機器學習:阿里雲機器學習平臺PAI(Platform of Artificial Intelligence),爲傳統機器學習和深度學習提供了從數據處理、模型訓練、服務部署到預測的一站式服務。https://data.aliyun.com/product/learn
智能推薦:(Artificial Intelligence Recommendation,簡稱AIRec)基於阿里巴巴領先的大數據和人工智能技術,結合在電商、內容、新聞、視頻直播和社交等多個行業領域的積累,爲全球企業及開發者提供個性化推薦服務。https://www.aliyun.com/product/airec
Dataworks(D2):DataWorks是一個提供了大數據OS能力、並以all in one box的方式提供專業高效、安全可靠的一站式大數據智能雲研發平臺。 同時能知足用戶對數據治理、質量管理需求,賦予用戶對外提供數據服務的能力。https://data.aliyun.com/product/ide
DQC:數據質量是支持多種異構數據源的質量校驗、通知、管理服務的一站式平臺。數據質量依託DataWorks平臺,爲您提供全鏈路的數據質量方案,包括數據探查、數據對比、數據質量監控、SQL掃描和智能報警等功能。數據質量監控能夠全程監控數據加工流水線,根據質量規則及時發現問題,並經過報警通知負責人及時處理。https://help.aliyun.com/document_detail/73660.html
Apsara Core :阿里巴巴大數據計算平臺MaxCompute計算層(飛天內核);https://baike.baidu.com/item/%E9%A3%9E%E5%A4%A9/19964003
伏羲:阿里雲飛天大數據系統內核的分佈式資源調度系統;https://yq.aliyun.com/articles/66954
女媧:阿里雲飛天大數據系統內核的分佈式一致性協同服務系統;https://yq.aliyun.com/articles/65226
盤古:阿里雲飛天大數據系統內核的分佈式文件儲存系統;https://yq.aliyun.com/articles/64374
本文爲CSDN博主「wwdede」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。