HDFS、YARN猿诸、Mapreduce概述

當(dāng)今時(shí)代婚被,互聯(lián)網(wǎng)世界中每天都有數(shù)以億計(jì)的數(shù)據(jù)產(chǎn)出,比如某東某寶的商城訂單梳虽,日志流量等數(shù)據(jù)址芯,越來(lái)越多的小伙伴都投身大數(shù)據(jù)領(lǐng)域,基于海量數(shù)據(jù)進(jìn)行數(shù)據(jù)處理窜觉,從數(shù)據(jù)中挖掘出各種有價(jià)值的信息谷炸,而Hadoop作為大數(shù)據(jù)的基石,核心組件包括HDFS禀挫、MapReduce旬陡、YARN,為海量數(shù)據(jù)的存儲(chǔ)和計(jì)算提供了可行方案语婴。大數(shù)據(jù)涉及到數(shù)據(jù)采集描孟、數(shù)據(jù)處理/分析/挖掘、數(shù)據(jù)存儲(chǔ)腻格、數(shù)據(jù)可視化等画拾,開(kāi)源世界是偉大的,各種大數(shù)據(jù)框架應(yīng)運(yùn)而生菜职,比如Pig青抛、Hive、Hbase酬核、Flume蜜另、Oozie、Mahout等等等等嫡意,這些框架大都基于Hadoop举瑰,為大數(shù)據(jù)的處理提供多種多樣的技術(shù)選型,共同組成了一個(gè)大的技術(shù)棧也就Hadoop生態(tài)系統(tǒng)蔬螟,本文對(duì)大數(shù)據(jù)核心組件HDFS此迅、YARN和MapReduce做一個(gè)簡(jiǎn)單的概述。

背景

最初旧巾,大數(shù)據(jù)的存儲(chǔ)和分析中有很多系統(tǒng)瓶頸耸序,為了解決這些瓶頸,Google出了幾篇論文鲁猩,但并未做開(kāi)源實(shí)現(xiàn)坎怪,這些論文包括MapReduce、GigTable廓握、GFS搅窿,這就為Hadoop的產(chǎn)生提供了理論依據(jù)嘁酿。

這里先引出一個(gè)問(wèn)題,為什么很多公司選擇Hadoop作為大數(shù)據(jù)平臺(tái)的解決方案男应?原因有以下幾點(diǎn):

  • 源碼開(kāi)源
  • 社區(qū)活躍闹司、參與者很多
  • 涉及到分布式存儲(chǔ)和計(jì)算的方方面面:
    Flume進(jìn)行數(shù)據(jù)采集
    Spark/MR/Hive等進(jìn)行數(shù)據(jù)處理
    HDFS/HBase進(jìn)行數(shù)據(jù)存儲(chǔ)
  • 已得到企業(yè)界的驗(yàn)證
Hadoop常用發(fā)行版及選型包括原生版和商業(yè)公司發(fā)行版:
  • Apache Hadoop:原生Hadoop http://hadoop.apache.org
  • CDH:Cloudera Distributed Hadoop 商業(yè)公司發(fā)行 http://archive.cloudera.com
  • HDP:Hortonworks Data PlatForm 商業(yè)公司發(fā)行
    商業(yè)公司發(fā)行版可以避免很多組件之間版本兼容問(wèn)題,其中規(guī)模最大殉了、知名度最高的應(yīng)該是Cloudera公司开仰,下載地址:http://archive.cloudera.com/cdh5/cdh/5/,使用CDH時(shí)要注意薪铜,生產(chǎn)或者測(cè)試環(huán)境選擇對(duì)應(yīng)CDH版本時(shí)众弓,一定要采用尾號(hào)是一樣的版本
Hadoop三大核心組件包括:
  • HDFS :Hadoop distributed file system 分布式文件系統(tǒng)
  • YARN:Yet another resouce negotiator 負(fù)責(zé)整個(gè)集群資源的管理和調(diào)度
  • MapReduce :分布式計(jì)算

分布式文件系統(tǒng)HDFS

分布式文件系統(tǒng)HDFS的設(shè)計(jì)目標(biāo):
  • 非常巨大的分布式文件系統(tǒng)
  • 運(yùn)行在普通廉價(jià)的硬件上
  • 易擴(kuò)展、為用戶提供性能不錯(cuò)的文件存儲(chǔ)服務(wù)
HDFS架構(gòu)

HDFS采用1個(gè)Master(即NameNode)帶多個(gè)Slaves(DataNode)的架構(gòu)隔箍,即NameNode + N個(gè)DataNode谓娃,建議NameNode和DataNode部署在不同節(jié)點(diǎn)上,類(lèi)似這種架構(gòu)的還有YARN/HBase等蜒滩,這塊官方是這樣說(shuō)的:

A typical deployment has a dedicated machine that runs only the NameNode software.
Each of the other machines in the cluster runs one instance of the DataNode software.
The architecture does not preclude running multiple DataNodes on the same machine
but in a real deployment that is rarely the case.

HDFS Architectrue
HDFS中塊和副本因子的概念
  • 在HDFS中滨达,每個(gè)文件會(huì)被拆分成多個(gè)Block,存儲(chǔ)在多個(gè)節(jié)點(diǎn)上俯艰,每個(gè)Block的大屑癖椤(blocksize)默認(rèn)為128M,當(dāng)然這個(gè)大小可以手動(dòng)修改竹握,這樣的話比如有一個(gè)文件大小為130M画株,那么會(huì)被拆分為2個(gè)Block,分別為128M和2M(All blocks in a file except the last block are the same size)啦辐,然后存儲(chǔ)到不同的節(jié)點(diǎn)上谓传,這樣對(duì)文件的讀取并發(fā)進(jìn)行,可以提高IO吞吐率芹关,加快速度续挟。
  • 這其中還有個(gè)概念叫做副本系數(shù)或者叫做副本因子(replication factor),表示每個(gè)Block會(huì)被存幾份侥衬,每一份都存儲(chǔ)到不同的節(jié)點(diǎn)上诗祸,萬(wàn)一某個(gè)節(jié)點(diǎn)掛掉了數(shù)據(jù)不可用,還可以有其他副本可用轴总,不至于造成數(shù)據(jù)丟失


    Block Replication

NameNode和DataNode的職責(zé):
NameNode:

  • 負(fù)責(zé)客戶端請(qǐng)求的響應(yīng)
  • 負(fù)責(zé)元數(shù)據(jù)(文件的名稱贬媒、副本系數(shù)、Block存放的DN)的管理

DataNode:

  • 存儲(chǔ)用戶的文件對(duì)應(yīng)的數(shù)據(jù)塊(Block)
  • 要定期向NN發(fā)送心跳信息肘习,匯報(bào)本身及其所有的block信息,健康狀況
HDFS環(huán)境搭建
  1. 下載Hadoop
    http://archive.cloudera.com/cdh5/cdh/5/2.6.0-cdh5.7.0
    wget http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.7.0.tar.gz

  2. 安裝jdk
    下載
    解壓到app目錄:tar -zxvf jdk-7u51-linux-x64.tar.gz -C ~/app/
    驗(yàn)證安裝是否成功:~/app/jdk1.7.0_51/bin ./java -version
    建議把bin目錄配置到系統(tǒng)環(huán)境變量(~/.bash_profile)中
    export JAVA_HOME=/home/hadoop/app/jdk1.7.0_51
    export PATH=$JAVA_HOME/bin:$PATH

  3. 機(jī)器參數(shù)設(shè)置
    hostname: hadoop001
    修改機(jī)器名: /etc/sysconfig/network
    NETWORKING=yes
    HOSTNAME=hadoop001
    設(shè)置ip和hostname的映射關(guān)系: /etc/hosts
    192.168.199.200 hadoop001
    127.0.0.1 localhost
    ssh免密碼登陸(本步驟可以省略坡倔,但是后面你重啟hadoop進(jìn)程時(shí)是需要手工輸入密碼才行)
    ssh-keygen -t rsa
    cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

  4. Hadoop配置文件修改: ~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop

    • hadoop-env.sh
      export JAVA_HOME=/home/hadoop/app/jdk1.7.0_51

    • core-site.xml

        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://hadoop001:8020</value>
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/hadoop/app/tmp</value>
         </property>  
      
    • hdfs-site.xml

        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
      
  5. 格式化HDFS
    注意:這一步操作漂佩,只是在第一次時(shí)執(zhí)行脖含,每次如果都格式化的話,那么HDFS上的數(shù)據(jù)就會(huì)被清空
    bin/hdfs namenode -format

  6. 啟動(dòng)HDFS
    sbin/start-dfs.sh
    驗(yàn)證是否啟動(dòng)成功:
    jps:
    DataNode
    SecondaryNameNode
    NameNode
    瀏覽器:
    http://hadoop001:50070/

  7. 停止HDFS
    sbin/stop-dfs.sh

資源管理和調(diào)度YARN

概述

使用yarn可以是XXX框架與其他計(jì)算框架共享集群資源投蝉,按資源需要分配养葵,進(jìn)而提高集群資源的利用率,不同計(jì)算框架可以共享同一個(gè)HDFS集群上的數(shù)據(jù)瘩缆,享受整體的資源調(diào)度关拒,XXX可以是Spark/MapReduce/Storm/Flink

YARN架構(gòu)

YARN和HDFS一樣,采用1個(gè)Master(即ResourceManager)帶多個(gè)Slaves(NodeManager)的架構(gòu)庸娱,即1 個(gè)ResourceManager + N個(gè)NodeManager

ResourceManager的職責(zé): 一個(gè)集群active狀態(tài)的RM只有一個(gè)着绊,負(fù)責(zé)整個(gè)集群的資源管理和調(diào)度

  • 處理客戶端的請(qǐng)求(啟動(dòng)/殺死)
  • 啟動(dòng)/監(jiān)控ApplicationMaster(一個(gè)作業(yè)對(duì)應(yīng)一個(gè)AM)
  • 監(jiān)控NM
  • 系統(tǒng)的資源分配和調(diào)度

NodeManager:整個(gè)集群中有N個(gè),負(fù)責(zé)單個(gè)節(jié)點(diǎn)的資源管理和使用以及task的運(yùn)行情況

  • 定期向RM匯報(bào)本節(jié)點(diǎn)的資源使用請(qǐng)求和各個(gè)Container的運(yùn)行狀態(tài)
  • 接收并處理RM的container啟停的各種命令
  • 單個(gè)節(jié)點(diǎn)的資源管理和任務(wù)管理

ApplicationMaster:每個(gè)應(yīng)用/作業(yè)對(duì)應(yīng)一個(gè)熟尉,負(fù)責(zé)應(yīng)用程序的管理

  • 數(shù)據(jù)切分
  • 為應(yīng)用程序向RM申請(qǐng)資源(container)归露,并分配給內(nèi)部任務(wù)
  • 與NM通信以啟停task, task是運(yùn)行在container中的
  • task的監(jiān)控和容錯(cuò)

Container:

  • 對(duì)任務(wù)運(yùn)行情況的描述:cpu斤儿、memory剧包、環(huán)境變量

Client

  • 提交作業(yè)
  • 查詢作業(yè)的運(yùn)行進(jìn)度
  • 殺死作業(yè)
YARN執(zhí)行流程
  • 用戶向YARN提交作業(yè)
  • RM為該作業(yè)分配第一個(gè)container(AM)
  • RM會(huì)與對(duì)應(yīng)的NM通信,要求NM在這個(gè)container上啟動(dòng)應(yīng)用程序的AM
  • AM首先向RM注冊(cè)往果,然后AM將為各個(gè)任務(wù)申請(qǐng)資源疆液,并監(jiān)控運(yùn)行情況
  • AM采用輪訓(xùn)的方式通過(guò)RPC協(xié)議向RM申請(qǐng)和領(lǐng)取資源
  • AM申請(qǐng)到資源以后,便和相應(yīng)的NM通信陕贮,要求NM啟動(dòng)任務(wù)
  • NM啟動(dòng)我們作業(yè)對(duì)應(yīng)的task
YARN環(huán)境搭建
  • mapred-site.xml

    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    
  • yarn-site.xml

     <property>
         <name>yarn.nodemanager.aux-services</name>
         <value>mapreduce_shuffle</value>
     </property>
    
  • 啟動(dòng)yarn:sbin/start-yarn.sh

  • 驗(yàn)證是否啟動(dòng)成功
    jps:
    ResourceManager
    NodeManager

    web: http://hadoop001:8088

  • 停止yarn: sbin/stop-yarn.sh

  • 在yarn上提交pi案例:
    hadoop jar /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar pi 2 3

大數(shù)據(jù)計(jì)算框架MapReduce

MapReduce處理數(shù)據(jù)流程包括Input Spliting Mapping Shuffling Reducing Final result等堕油,代碼編寫(xiě)時(shí)需要實(shí)現(xiàn)Mapper和Reducer,比較繁瑣飘蚯,取而代之的是spark等易于編寫(xiě)代碼馍迄、處理速度更快的框架。

MapReduce的局限性主要包括以下幾點(diǎn):
  • 代碼繁瑣局骤;
  • 只能夠支持map和reduce方法攀圈;
  • 執(zhí)行效率低下;
  • 不適合迭代多次峦甩、交互式赘来、流式的處理;
框架多樣化

目前凯傲,各種大數(shù)據(jù)計(jì)算處理框架應(yīng)運(yùn)而生犬辰,主要包括:

  • 批處理(離線):MapReduce、Hive冰单、Pig
  • 流式處理(實(shí)時(shí)): Storm幌缝、JStorm
  • 交互式計(jì)算:Impala
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市诫欠,隨后出現(xiàn)的幾起案子涵卵,更是在濱河造成了極大的恐慌浴栽,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轿偎,死亡現(xiàn)場(chǎng)離奇詭異典鸡,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)坏晦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)萝玷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人昆婿,你說(shuō)我怎么就攤上這事球碉。” “怎么了挖诸?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵汁尺,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我多律,道長(zhǎng)痴突,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任狼荞,我火速辦了婚禮辽装,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘相味。我一直安慰自己拾积,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布丰涉。 她就那樣靜靜地躺著拓巧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪一死。 梳的紋絲不亂的頭發(fā)上肛度,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音投慈,去河邊找鬼承耿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛伪煤,可吹牛的內(nèi)容都是我干的加袋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼抱既,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼职烧!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤阳堕,失蹤者是張志新(化名)和其女友劉穎跋理,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體恬总,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年肚邢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了壹堰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡骡湖,死狀恐怖贱纠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情响蕴,我是刑警寧澤谆焊,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站浦夷,受9級(jí)特大地震影響辖试,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜劈狐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一罐孝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肥缔,春花似錦莲兢、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至坟岔,卻和暖如春谒兄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背炮车。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工舵变, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瘦穆。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓纪隙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親扛或。 傳聞我的和親對(duì)象是個(gè)殘疾皇子绵咱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容