最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

想了解Hadoop?看懂這篇文章就夠了

2021-03-19 15:51 作者:袋鼠云  | 我要投稿

本文首發(fā)于gzh:數(shù)棧研習(xí)社

我們在github上有一個開源項目:flinkx,大家歡迎來玩

https://github.com/DTStack/flinkx

2011年的時候我們在百度搜索Hadoop相關(guān)的問題每天只有零星幾個,2015年再去百度搜索Hadoop已經(jīng)有800多萬個問題,而如今已然已經(jīng)過億了,Hadoop已成為大數(shù)據(jù)必備的基礎(chǔ)設(shè)施了。Hadoop被公認(rèn)是一套行業(yè)大數(shù)據(jù)標(biāo)準(zhǔn)開源軟件,在分布式環(huán)境下提供了海量數(shù)據(jù)的處理能力。幾乎所有主流廠商都圍繞Hadoop開發(fā)工具、開源軟件、商業(yè)化工具和技術(shù)服務(wù)。近年大型IT公司,如EMC、Microsoft、Intel、Teradata、Cisco都明顯增加了Hadoop方面的投入。那么到底什么是Hadoop?它有什么作用?它的基礎(chǔ)架構(gòu)是怎么樣的?今天就Hadoop的這些基本概念來做一次簡單的梳理。

一、Hadoop是什么?

Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu), 是一個存儲系統(tǒng)+計算框架的軟件框架。主要解決海量數(shù)據(jù)存儲計算的問題,是大數(shù)據(jù)技術(shù)中的基石。Hadoop以一種可靠、高效、可伸縮的方式進行數(shù)據(jù)處理,用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序,用戶可以輕松地在Hadoop上開發(fā)和運行處理海量數(shù)據(jù)的應(yīng)用程序。

二、Hadoop能解決什么問題

1、海量數(shù)據(jù)存儲

HDFS有高容錯性的特點,并且設(shè)計用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(High throughput)來訪問數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應(yīng)用程序,它由n臺運行著DataNode的機器組成和1臺(另外一個standby)運行NameNode進程一起構(gòu)成。每個DataNode 管理一部分?jǐn)?shù)據(jù),然后NameNode負(fù)責(zé)管理整個HDFS 集群的信息(存儲元數(shù)據(jù))。

2、資源管理,調(diào)度和分配

Apache Hadoop YARN(Yet Another Resource Negotiator,另一種資源協(xié)調(diào)者)是一種新的 Hadoop 資源管理器,它是一個通用資源管理系統(tǒng)和調(diào)度平臺,可為上層應(yīng)用提供統(tǒng) 一的資源管理和調(diào)度,它的引入為集群在利用率、資源統(tǒng)一管理和數(shù)據(jù)共享等方面帶來了巨 大好處。

三、Hadoop組件架構(gòu)是什么樣的

看過了Hadoop 的基本介紹之后。我們來了解HDFS 和 YARN的核心架構(gòu)和原理,先上HDFS框架圖:

看完上面的圖之后,先來思考幾個問題:

1、元數(shù)據(jù)信息是什么,NameNode是如何維護元數(shù)據(jù)的,元數(shù)據(jù)信息如何保障一致性?

NameNode維護了HDFS 集群的元數(shù)據(jù)信息,包括文件的目錄樹,每個文件對應(yīng)的數(shù)據(jù)塊列表,權(quán)限設(shè)置,副本數(shù)等等。
元數(shù)據(jù)信息存儲在內(nèi)存里,那么NameNode異常宕機情況下咋辦?
NameNode對元數(shù)據(jù)的修改包含兩個部分
內(nèi)存數(shù)據(jù)修改
修改內(nèi)存之后寫一條EditLog
再來看兩個概念FsImageEditLog:
FsImage:FsImage是NameNode內(nèi)存中元數(shù)據(jù)的鏡像文件,是元數(shù)據(jù)的一個永久性checkpoint,包含了HDFS的所有目錄和文件idnode的序列化信息,可以類比銀行的賬戶余額,只有簡單的信息。
EditLog:EditLog是用于銜接內(nèi)存元數(shù)據(jù)和FsImage之間的操作日志,保存了自最后一次檢查點之后,所有針對HDFS文件系統(tǒng)的操作,比如增加文件、重命名文件、刪除目錄等等,可以類比銀行的賬戶流水,包括每一筆的記錄,如果日積月累,流水信息可以非常大。

那么如果Editlog變的非常大之后,宕機之后需要讀取Editlog進行恢復(fù)元數(shù)據(jù),這是一個非常慢點過程。這個時候該StandbyNameNode 節(jié)點上場了。Standby 節(jié)點從JournalNode集合拉取Editlog,并定時將Editlog合并成FsImage. FsImage是一份合并之后的存量數(shù)據(jù)信息。同時將FsImage 上傳到ActiveNode節(jié)點。

2、NameNode Active 和 standby 之間是如何切換并始終保持一個ActiveNode?

我們可以在上面的HDFS框架圖中看到,鏈接ZK集群和NameNode的組件ZKFC
1、ZKFC 監(jiān)控NameNode的監(jiān)控狀態(tài)
2、ZKFC 利用ZK提供的主備節(jié)點選舉來切換
3、通知和修改NameNode的狀態(tài)
4、確認(rèn)元數(shù)據(jù)同步完成之后對外提供服務(wù)

再來看YARN框架圖:

上圖描述了YARN的一個任務(wù)的提交和資源分配流程,在整個過程中涉及到如下的組件:

  • ResourceManeger:負(fù)責(zé)所有資源的監(jiān)控、分配和管理,并處理客戶端請求,啟動和監(jiān)控AppMaster,NodeManager

  • NodeManager:單個節(jié)點上的資源管理和任務(wù)管理,處理ResourceManager,AppMaster 的命令

  • AppMaster:負(fù)責(zé)某個具體應(yīng)用程序的調(diào)度和協(xié)調(diào),為應(yīng)用程序申請資源,并對任務(wù)進行監(jiān)控

  • Container:YARN中的一個動態(tài)資源分配的概念,其擁有一定的內(nèi)存,核數(shù)。

一個任務(wù)提交的整體流程:
(1)Client向YARN中提交應(yīng)用程序,
其中包括ApplicationMaster程序、命令、用戶程序,資源等。
(2)ResourceManager為該應(yīng)用程序分配第一個Container,并與對應(yīng)的NodeManager通信,要求它在這個Container中啟動應(yīng)用程序的ApplicationMaster。
(3)ApplicationMaster首先向ResourceManager注冊,這樣用戶可以直接通過ResourceManager查看應(yīng)用程序的運行狀態(tài),然后它將為各個任務(wù)申請資源,并監(jiān)控它的運行狀態(tài)
(4)ApplicationMaster采用輪詢的方式通過RPC協(xié)議向ResourceManager申請和領(lǐng)取資源。
(5)一旦ApplicationMaster申請到資源后,便與對應(yīng)的NodeManager通信,要求它啟動任務(wù)。
(6)NodeManager為任務(wù)設(shè)置好運行環(huán)境(包括環(huán)境變量、Jar包、二進制程序等)后,將任務(wù)啟動命令寫到一個腳本中,并通過運行該腳本啟動任務(wù)。
(7)各個任務(wù)通過某個RPC協(xié)議向ApplicationMaster匯報自己的狀態(tài)和進度,以讓ApplicationMaster隨時掌握各個任務(wù)的運行狀態(tài),從而可以在任務(wù)失敗時重新啟動任務(wù)。在應(yīng)用程序運行過程中,用戶可隨時通過RPC向ApplicationMaster查詢應(yīng)用程序的當(dāng)前運行狀態(tài)。
(8)應(yīng)用程序運行完成后,ApplicationMaster向ResourceManager注銷并關(guān)閉自己。

通過上面的內(nèi)容,可以對Hadoop 的一些基本框架有一些簡單的印象了。之后在使用的時候可以對照上面的結(jié)構(gòu)圖和Hadoop 官網(wǎng)或者社區(qū)進行深入理解。


想了解Hadoop?看懂這篇文章就夠了的評論 (共 條)

分享到微博請遵守國家法律
逊克县| 客服| 南部县| 横峰县| 昭苏县| 龙游县| 麻阳| 灵石县| 前郭尔| 锡林郭勒盟| 凉城县| 青田县| 龙口市| 兴业县| 南康市| 栾川县| 潞城市| 越西县| 绥滨县| 翁牛特旗| 毕节市| 盱眙县| 湖口县| 光泽县| 开原市| 沐川县| 昭通市| 芮城县| 吉林省| 公主岭市| 买车| 临夏县| 新宁县| 吴堡县| 高邑县| 芦溪县| 南投市| 株洲市| 浦县| 绥江县| 新田县|