第二課 Hadoop原理與集群搭建筆記

一呛哟、理論部分知識

1垢袱、HDFS :Hadoop DIstributed File System簡寫幌甘。

易于擴展的分布式文件系統(tǒng)

運行在大量普通廉價機器上(成本低) 窖式,提供容錯的機制(可靠性高)

2蚁飒、HDFS優(yōu)點:

高容錯性

適合大數(shù)據(jù)批處理(移動計算不移動數(shù)據(jù)、數(shù)據(jù)位置暴露給計算框架萝喘、存儲量大淮逻、百萬規(guī)模以上的文件數(shù)量、10k節(jié)點規(guī)模)

流式文件訪問(一次寫入阁簸,多次讀取爬早,保證數(shù)據(jù)一致性)

構(gòu)建成本低、安全可靠(構(gòu)建在廉價機器上启妹、通過多副本提高可靠性筛严、提供容錯和恢復(fù)機制)

3、HDFS缺點:

不適合低延遲數(shù)據(jù)訪問(毫秒級不支持)

不適合大量小文件存儲(占用NameNode大量內(nèi)存空間:會導(dǎo)致Namenode不可用饶米、磁盤尋道時間超過讀取時間)

不適合并發(fā)寫入(一個文件只能一個寫入者:多線程同時寫一個不行桨啃,只有一個能成功,其他都會報異常)

不提供文件隨機修改(只支持追加)

4檬输、HDFS設(shè)計需求

1)超大文件2)流式數(shù)據(jù)訪問3)低成本4)數(shù)據(jù)一致性5)高吞吐率6)易擴展7)高容錯

5照瘾、HDFS 架構(gòu)圖

hdfs架構(gòu)圖

若想有更高的容錯,可以復(fù)制多個副本數(shù)丧慈。

6网杆、HDFS核心概念:

Active NameNode

1)主Master(只有一個)

2)管理HDFS文件系統(tǒng)命名空間

3)管理副本策略(默認3個副本)

4)處理客戶端讀寫請求

Standby NameNode: Active NameNode的熱備節(jié)點

1)NameNode 元數(shù)據(jù)文件

? ? edits:編輯日志

? ? fsimage: 文件系統(tǒng)元數(shù)據(jù)檢查點鏡像文件,保存文件系統(tǒng)中所有目錄和文件信息

2)NameNode 內(nèi)存中保存一份最新的鏡像信息

3)NameNode定期將edits+fsimage合并保存到磁盤

DataNode

1)slave工作節(jié)點伊滋,可以啟動多個

2)存儲數(shù)據(jù)庫和數(shù)據(jù)校驗和

3)執(zhí)行客戶端讀寫請求操作

4)通過心跳機制定期向NameNode 匯報運行狀態(tài)和塊列表信息

5)集群啟動時向NameNode 提供存儲的塊列表信息

Block數(shù)據(jù)塊

1)文件寫入到HDFS會被切分成若干個Block塊

2)數(shù)據(jù)塊大小固定碳却,默認大小128MB,可自定義修改

3)HDFS最小存儲單元

4)若一個塊的大小小于設(shè)置的數(shù)據(jù)塊大小笑旺,則不會占用整個塊的空間

5)默認情況下每個Block有三個副本

Client

1)文件切分

2)與NameNode交互獲取元數(shù)據(jù)信息

3)與DataNode昼浦,讀取/寫入數(shù)據(jù)

4)管理HDFS

7、HDFS為什么不適合存儲小文件筒主?

元數(shù)據(jù)信息存儲在NameNode內(nèi)存中关噪,內(nèi)存大小有限

NameNode存儲BLock數(shù)據(jù)有限

一個Block元數(shù)據(jù)消耗大約150byte內(nèi)存

如果存儲一億個block,大約需要20G內(nèi)存

如果一個文件為10K,則1億個文件大小只有1TB乌妙,卻消耗了20G內(nèi)存

8使兔、HDFS高可用原理


高可用原理

JournalNode一般部署奇數(shù)個,3臺最多允許1臺掛掉藤韵,否則集群不可用

對于ActiveNode虐沥,寫請求時阻塞,元數(shù)據(jù)同時寫入edit ,還同時寫入所有的JournalNode ,都寫入完成后,會在內(nèi)存中寫一個文件欲险,更新內(nèi)存中的目錄數(shù)镐依。元數(shù)據(jù)信息會定期的更新到fsimage ,fsimage相當(dāng)于一個鏡像文件

對于Standby Node天试,定期從JournalNode中同步元數(shù)據(jù)信息到內(nèi)存中槐壳,然后定期的更新到fsimage。

9喜每、YARN核心組件

ResourceManage:整個集群只有一個Master

NodeManage :每個節(jié)點只有一個务唐,集群上會有多個,一般與DataNode一一對應(yīng)带兜,在相同的集群上部署绍哎。

ApplicationManage:每個應(yīng)用程序只有一個,負責(zé)應(yīng)用程序的管理鞋真,資源申請和任務(wù)調(diào)度崇堰。

Container:任務(wù)運行環(huán)境的抽象,只有在分配任務(wù)的時候才會抽象出一個Container涩咖。

二海诲、Hadoop分布式安裝

1、使用hadoop用戶解壓并安裝到apps路徑下

1.1使用hadoop用戶進入到在/home/hadoop/apps目錄下

? ? ? cd /home/hadoop/apps

注意:如果沒有/home/hadoop/apps路徑檩互,自行在/home/hadoop路徑下創(chuàng)建apps文件夾:

? ? ? mkdir /home/Hadoop/apps

1.2使用rz將本機的hadoop安裝包上傳到/home/hadoop/apps目錄下

1.3解壓安裝文件

tar -zxvf hadoop-2.7.4.tar.gz

1.4使用root用戶創(chuàng)建軟鏈接

ln -s /home/hadoop/apps/hadoop-2.7.4 /usr/local/hadoop

1.5使用root用戶修改軟鏈接屬主

chown -R hadoop:hadoop /usr/local/hadoop

1.6使用root用戶將hadoop相關(guān)內(nèi)容添加到環(huán)境變量中

注意:Hadoop配置文件路徑是/usr/local/hadoop/etc/hadoop

vim /etc/profile

添加內(nèi)容如下:

export HADOOP_HOME=/usr/local/hadoop

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export YARN_HOME=$HADOOP_HOME

export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

1.7使用root用戶重新編譯環(huán)境變量使配置生效

source /etc/profile

2. 配置HDFS

2.1使用hadoop用戶進入到Hadoop配置文件路徑

cd /usr/local/hadoop/etc/hadoop

2.2修改hadoo-env.sh

修改JDK路徑export JAVA_HOME=/usr/local/jdk

2.3 配置core-site.xml

2.4 配置hdfs-site.xml

3. 配置YARN

3.1 修改yarn-site.xml

3.2 修改mapred-site.xml

3.3 在/usr/local/hadoop路徑下創(chuàng)建hdpdata文件夾

cd /usr/local/hadoop

mkdir hdpdata

4. 修改slaves文件特幔,設(shè)置datanode和nodemanager啟動節(jié)點主機名稱

在slaves文件中添加節(jié)點的主機名稱

node03

node04

node05

注意:node03,node04闸昨,node05是我的虛擬機主機名稱蚯斯,在這三臺機器上啟動datanode和nodemanager,同學(xué)根據(jù)自己集群主機名稱情況自行修改饵较。

5. 配置hadoop用戶免密碼登陸

配置node01到node01拍嵌、node02、node03循诉、node04横辆、node05的免密碼登陸

在node01上生產(chǎn)一對鑰匙

ssh-keygen -t rsa

將公鑰拷貝到其他節(jié)點,包括自己本機

ssh-copy-id -i node01

ssh-copy-id -i node02

ssh-copy-id -i node03

ssh-copy-id -i node04

ssh-copy-id -i node05

注意:兩個namenode之間要配置ssh免密碼登陸

6. 將配置好的hadoop拷貝到其他節(jié)點

scp -r hadoop-2.7.4 hadoop@node02:/home/hadoop/apps

scp -r hadoop-2.7.4 hadoop@node03:/home/hadoop/apps

scp -r hadoop-2.7.4 hadoop@node04:/home/hadoop/apps

scp -r hadoop-2.7.4 hadoop@node05:/home/hadoop/apps

在每個節(jié)點分別執(zhí)行如下四步操作

第一步:使用root用戶創(chuàng)建軟鏈接

ln -s /home/hadoop/apps/hadoop-2.7.4 /usr/local/hadoop

第二步:使用root用戶修改軟鏈接屬主

chown -R hadoop:hadoop /usr/local/hadoop

第三步:使用root用戶添加環(huán)境變量

vim /etc/profile

添加內(nèi)容:

export HADOOP_HOME=/usr/local/hadoop

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export YARN_HOME=$HADOOP_HOME

export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

第四步:使用root用戶重新編譯環(huán)境變量使配置生效

source /etc/profile


集群啟動步驟(注意使用hadoop用戶啟動茄猫,嚴格按照順序啟動)

su hadoop

1. 啟動journalnode(分別在node03狈蚤、node04、node05上執(zhí)行啟動)

/usr/local/hadoop/sbin/hadoop-daemon.sh start journalnode

運行jps命令檢驗划纽,node03脆侮、node04、node05上多了JournalNode進程

2. 格式化HDFS

在node01上執(zhí)行命令:

hdfs namenode -format

格式化成功之后會在core-site.xml中的hadoop.tmp.dir指定的路徑下生成dfs文件夾勇劣,將該文件夾拷貝到node02的相同路徑下

scp -r hdpdata hadoop@node02:/usr/local/hadoop

3. 在node01上執(zhí)行格式化ZKFC操作

hdfs zkfc -formatZK

執(zhí)行成功靖避,日志輸出如下信息

INFO ha.ActiveStandbyElector: Successfully created /hadoop-ha/ns in ZK

4. 在node01上啟動HDFS

sbin/start-dfs.sh

5. 在node02上啟動YARN

sbin/start-yarn.sh

在node01單獨啟動一個ResourceManger作為備份節(jié)點

sbin/yarn-daemon.sh start resourcemanager

6. 在node02上啟動JobHistoryServer

sbin/mr-jobhistory-daemon.sh start historyserver

啟動完成node02會增加一個JobHistoryServer進程

7. hadoop安裝啟動完成

HDFS HTTP訪問地址

NameNode (active):http://192.168.183.100:50070

NameNode (standby):http://192.168.183.101:50070

ResourceManager HTTP訪問地址

ResourceManager :http://192.168.183.101:8088

歷史日志HTTP訪問地址

JobHistoryServer:http://192.168.183.101:19888

三、hadoop集群驗證

1. 驗證HDFS 是否正常工作及HA高可用

首先向hdfs上傳一個文件

hadoop fs -put /usr/local/hadoop/README.txt /

在active節(jié)點手動關(guān)閉active的namenode

sbin/hadoop-daemon.sh stop namenode

通過HTTP 50070端口查看standby namenode的狀態(tài)是否轉(zhuǎn)換為active

手動啟動上一步關(guān)閉的namenode

sbin/hadoop-daemon.sh start namenode

2.驗證YARN是否正常工作及ResourceManager HA高可用

運行測試hadoop提供的demo中的WordCount程序:

hadoop fs -mkdir /wordcount

hadoop fs -mkdir /wordcount/input

hadoop fs -mv /README.txt /wordcount/input

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar wordcount /wordcount/input? /wordcount/output

驗證ResourceManager HA

手動關(guān)閉node02的ResourceManager

sbin/yarn-daemon.sh stop resourcemanager

通過HTTP 8088端口訪問node01的ResourceManager查看狀態(tài)

手動啟動node02 的ResourceManager

sbin/yarn-daemon.sh start resourcemanager

四、Hadoop集群搭建常見問題記錄

問題1 : 啟動hadoop集群后訪問node02的resouremanage 無激活的Nodes 如下圖所示?



解決方法筋蓖,是虛擬機內(nèi)存不夠,需要修改yarn-site.xml配置文件

修改yarn-site.xml配置文件添加如下內(nèi)容:


把這兩項配置添加到y(tǒng)arn-site.xml里退敦,所有機器都要改粘咖,保持配置文件一直然后關(guān)閉yarn? :sbin/stop-yarn.sh

關(guān)閉之后啟動:? sbin/start-yarn.sh

課上老師答疑記錄

問題1:假如說datanode掛了 硬件沒有問題的情況下能恢復(fù)么?

答:可以恢復(fù)侈百,DataNode掛了瓮下,會通過NameNode副本恢復(fù),然后DataNode重啟后钝域,數(shù)據(jù)塊就刪除了讽坏。

問題2:JN里面寫的是操作日志還是數(shù)據(jù)文件?

答:JN里面寫的是操作日志

問題3:zookeeper例证、yarn路呜、hdfs、hadoop 關(guān)系织咧?

答:hadoop包括hdfs胀葱、yarn; zookeeper是充當(dāng)nadenode ,resoursemanage選主過程笙蒙,老師繪制草圖如下:


當(dāng)nn1掛掉抵屿,臨時節(jié)點就會被刪除,nn2變?yōu)閍ctive捅位、

同理rm1掛掉轧葛,臨時節(jié)點被刪除,rm2再去請求艇搀,變?yōu)閍ctive

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末尿扯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子焰雕,更是在濱河造成了極大的恐慌姜胖,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淀散,死亡現(xiàn)場離奇詭異右莱,居然都是意外死亡,警方通過查閱死者的電腦和手機档插,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門慢蜓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人郭膛,你說我怎么就攤上這事晨抡。” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵耘柱,是天一觀的道長如捅。 經(jīng)常有香客問我,道長调煎,這世上最難降的妖魔是什么镜遣? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮士袄,結(jié)果婚禮上悲关,老公的妹妹穿的比我還像新娘。我一直安慰自己娄柳,他們只是感情好寓辱,可當(dāng)我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赤拒,像睡著了一般秫筏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挎挖,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天跳昼,我揣著相機與錄音,去河邊找鬼肋乍。 笑死鹅颊,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的墓造。 我是一名探鬼主播堪伍,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼觅闽!你這毒婦竟也來了帝雇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤蛉拙,失蹤者是張志新(化名)和其女友劉穎尸闸,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體孕锄,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡吮廉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了畸肆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宦芦。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖轴脐,靈堂內(nèi)的尸體忽然破棺而出调卑,到底是詐尸還是另有隱情抡砂,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布恬涧,位于F島的核電站注益,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏溯捆。R本人自食惡果不足惜丑搔,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望现使。 院中可真熱鬧低匙,春花似錦旷痕、人聲如沸碳锈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽售碳。三九已至,卻和暖如春绞呈,著一層夾襖步出監(jiān)牢的瞬間贸人,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工佃声, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留艺智,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓圾亏,卻偏偏與公主長得像十拣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子志鹃,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,612評論 2 350

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