DataNode工作機(jī)制
1)一個數(shù)據(jù)塊在datanode上以文件形式存儲在磁盤上,包括兩個文件,一個是數(shù)據(jù)本身框弛,一個是元數(shù)據(jù)包括數(shù)據(jù)塊的長度,塊數(shù)據(jù)的校驗和敷硅,以及時間戳功咒。
2)DataNode啟動后向namenode注冊,通過后绞蹦,周期性(1小時)的向namenode上報所有的塊信息力奋。
3)心跳是每3秒一次,心跳返回結(jié)果帶有namenode給該datanode的命令如復(fù)制塊數(shù)據(jù)到另一臺機(jī)器幽七,或刪除某個數(shù)據(jù)塊景殷。如果超過10分鐘沒有收到某個datanode的心跳,則認(rèn)為該節(jié)點不可用澡屡。
4)集群運(yùn)行中可以安全加入和退出一些機(jī)器
數(shù)據(jù)完整性
1)當(dāng)DataNode讀取block的時候猿挚,它會計算checksum
2)如果計算后的checksum,與block創(chuàng)建時值不一樣驶鹉,說明block已經(jīng)損壞绩蜻。
3)client讀取其他DataNode上的block。
4)datanode在其文件創(chuàng)建后周期驗證checksum
掉線時限參數(shù)設(shè)置
datanode進(jìn)程死亡或者網(wǎng)絡(luò)故障造成datanode無法與namenode通信室埋,namenode不會立即把該節(jié)點判定為死亡办绝,要經(jīng)過一段時間,這段時間暫稱作超時時長姚淆。HDFS默認(rèn)的超時時長為10分鐘+30秒孕蝉。如果定義超時時間為timeout,則超時時長的計算公式為:
timeout = 2 * dfs.namenode.heartbeat.recheck-interval + 10 * dfs.heartbeat.interval腌逢。
而默認(rèn)的dfs.namenode.heartbeat.recheck-interval 大小為5分鐘,dfs.heartbeat.interval默認(rèn)為3秒降淮。
需要注意的是hdfs-site.xml 配置文件中的heartbeat.recheck.interval的單位為毫秒,dfs.heartbeat.interval的單位為秒搏讶。
<property>
<name>dfs.namenode.heartbeat.recheck-interval</name>
<value>300000</value>
</property>
<property>
<name> dfs.heartbeat.interval </name>
<value>3</value>
</property>
haoop新節(jié)點服役
0)需求:
隨著公司業(yè)務(wù)的增長佳鳖,數(shù)據(jù)量越來越大,原有的數(shù)據(jù)節(jié)點的容量已經(jīng)不能滿足存儲數(shù)據(jù)的需求媒惕,需要在原有集群基礎(chǔ)上動態(tài)添加新的數(shù)據(jù)節(jié)點系吩。
1)環(huán)境準(zhǔn)備
? (1)克隆一臺虛擬機(jī)
? (2)修改ip地址和主機(jī)名稱
? (3)修改xcall和xsync文件,增加新`增節(jié)點的同步ssh
? (4)刪除原來HDFS文件系統(tǒng)留存的文件(因為新添加的節(jié)點是克隆的服務(wù)器吓笙,所以需要預(yù)先刪除對應(yīng)文件夾的數(shù)據(jù))
? /opt/module/hadoop-2.7.2/data
2)服役新節(jié)點具體步驟
? (1)在namenode的/opt/module/hadoop-2.7.2/etc/hadoop目錄下創(chuàng)建dfs.hosts文件
[liyahui@hadoop105 hadoop]$ pwd
/opt/module/hadoop-2.7.2/etc/hadoop
[liyahui@hadoop105 hadoop]$ touch dfs.hosts
[liyahui@hadoop105 hadoop]$ vi dfs.hosts
添加如下主機(jī)名稱(包含新服役的節(jié)點)
hadoop102
hadoop103
hadoop104
hadoop105 #新服役的節(jié)點
? (2)在namenode的hdfs-site.xml配置文件中增加dfs.hosts屬性
<property>
<name>dfs.hosts</name>
<value>/opt/module/hadoop-2.7.2/etc/hadoop/dfs.hosts</value> </property>
? (3)刷新namenode
[liyahui@hadoop102 hadoop-2.7.2]$ hdfs dfsadmin -refreshNodes
Refresh nodes successful
? (4)更新resourcemanager節(jié)點
[liyahui@hadoop102 hadoop-2.7.2]$ yarn rmadmin -refreshNodes
17/06/24 14:17:11 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.1.103:8033
? (5)在namenode的slaves文件中增加新主機(jī)名稱
(一定是在namenode對應(yīng)的節(jié)點修改slaves文件)
? 增加105 不需要分發(fā)
hadoop102
hadoop103
hadoop104
hadoop105
? (6)單獨(dú)命令啟動新的數(shù)據(jù)節(jié)點和節(jié)點管理器
[liyahui@hadoop105 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start datanode
starting datanode, logging to /opt/module/hadoop-2.7.2/logs/hadoop-liyahui-datanode-hadoop105.out
[liyahui@hadoop105 hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager
starting nodemanager, logging to /opt/module/hadoop-2.7.2/logs/yarn-liyahui-nodemanager-hadoop105.out
? (7)在web瀏覽器上檢查是否ok
3)如果數(shù)據(jù)不均衡,可以用命令實現(xiàn)集群的再平衡
[liyahui@hadoop102 sbin]$ ./start-balancer.sh
starting balancer, logging to /opt/module/hadoop-2.7.2/logs/hadoop-liyahui-balancer-hadoop102.out
Time Stamp Iteration# Bytes Already Moved Bytes Left To Move Bytes Being Moved
hadoop節(jié)點退役
1)在namenode的/opt/module/hadoop-2.7.2/etc/hadoop目錄下創(chuàng)建dfs.hosts.exclude文件
[liyahui@hadoop102 hadoop]$ pwd
/opt/module/hadoop-2.7.2/etc/hadoop
[liyahui@hadoop102 hadoop]$ touch dfs.hosts.exclude
[liyahui@hadoop102 hadoop]$ vi dfs.hosts.exclude
添加如下主機(jī)名稱(要退役的節(jié)點)
hadoop105
2)在namenode的hdfs-site.xml配置文件中增加dfs.hosts.exclude屬性
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/module/hadoop-2.7.2/etc/hadoop/dfs.hosts.exclude</value> </property>
3)刷新namenode巾腕、刷新resourcemanager
[liyahui@hadoop102 hadoop-2.7.2]$ hdfs dfsadmin -refreshNodes
Refresh nodes successful
[liyahui@hadoop102 hadoop-2.7.2]$ yarn rmadmin -refreshNodes
17/06/24 14:55:56 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.1.103:8033
4)檢查web瀏覽器面睛,退役節(jié)點的狀態(tài)為decommission in progress(退役中)絮蒿,說明數(shù)據(jù)節(jié)點正在復(fù)制塊到其他節(jié)點。
5)等待退役節(jié)點狀態(tài)為decommissioned(所有塊已經(jīng)復(fù)制完成)叁鉴,停止該節(jié)點及節(jié)點資源管理器土涝。注意:如果副本數(shù)是3,服役的節(jié)點小于等于3幌墓,是不能退役成功的但壮,需要修改副本數(shù)后才能退役。
[liyahui@hadoop105 hadoop-2.7.2]$ sbin/hadoop-daemon.sh stop datanode
stopping datanode
[liyahui@hadoop105 hadoop-2.7.2]$ sbin/yarn-daemon.sh stop nodemanager
stopping nodemanager
6)從include文件中刪除退役節(jié)點常侣,再運(yùn)行刷新節(jié)點的命令
? (1)從namenode的dfs.hosts文件中刪除退役節(jié)點hadoop105
hadoop102
hadoop103
hadoop104
? (2)刷新namenode蜡饵,刷新resourcemanager
[liyahui@hadoop102 hadoop-2.7.2]$ hdfs dfsadmin -refreshNodes
Refresh nodes successful
[liyahui@hadoop102 hadoop-2.7.2]$ yarn rmadmin -refreshNodes
17/06/24 14:55:56 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.1.103:8033
7)從namenode的slave文件中刪除退役節(jié)點hadoop105
hadoop102
hadoop103
hadoop104
8)如果數(shù)據(jù)不均衡,可以用命令實現(xiàn)集群的再平衡
[liyahui@hadoop102 hadoop-2.7.2]$ sbin/start-balancer.sh
starting balancer, logging to /opt/module/hadoop-2.7.2/logs/hadoop-liyahui-balancer-hadoop102.out
Time Stamp Iteration# Bytes Already Moved Bytes Left To Move Bytes Being Moved
Attention Please--文章來自互聯(lián)網(wǎng)資料整理胳施,如有雷同溯祸,純屬李小李抄襲,如有侵權(quán)請聯(lián)系刪除 From 李小李