略node
略web
namenode和datanode節點下均可以進行多個目錄的配置,可是意義不一樣。namenode的多目錄配置是副本策略,保證數據可靠性,datanode多目錄配置是對容量進行擴容,因爲datanode已經有副本機制了。shell
[hdfs-site.xml]centos
<!-- namenode多目錄配置 --> <property> <name>dfs.namenode.name.dir</name> <value>file://${hadoop.tmp.dir}/dfs/name1,file://${hadoop.tmp.dir}/dfs/name2</value> </property> <!-- datanode多目錄配置 --> <property> <name>dfs.datanode.data.dir</name> <value>file://${hadoop.tmp.dir}/dfs/data1,file://${hadoop.tmp.dir}/dfs/data2</value> </property>
其中${hadoop.tmp.dir}是hadoop臨時目錄配置。安全
[core-site.xml]ssh
<property> <name>hadoop.tmp.dir</name> <value>/home/centos/hadoop/ha</value> </property>
配額是對空間和目錄個數進行限制,放置目錄下的文件個數或大小過於龐大。所以配額分爲空間配額和目錄配額。oop
目錄配額ui
限制目錄所含文件或文件夾的個數。若是爲1,則保持目錄爲空(能夠認爲將目錄自己也包含在內)。spa
#設置配額 $>hdfs dfsadmin -setQuota 1 data #清除配額 $>hdfs dfsadmin -clsQuota data
空間配額日誌
因爲每份文件都有三個副本,空間配額計算時也將副本數計算在內,加上每一個數據塊文件默認爲128m,所以空間配額至少要指定384m的空間值。即128 * 3 = 384。
#該設置會出錯,說至少是384m空間 $>hdfs dfsadmin -setSpaceQuota 384m data
快照是對hdfs的目錄進行瞬間照相,內部採用差別化存儲機制。所以不會空間形成大量的消耗。這能夠經過查看blockid來考察。默認狀況下目錄是不容許快照的,所以若是要使用該功能,還須要對特定目錄先啓用快照。
#啓用快照 $>hfds dfsadmin -allowSnapshot data #禁用快照 $>hfds dfsadmin -disallowSnapshot data #建立快照 $>hdfs dfs -createSnapshot data sp1 #刪除 $>hdfs dfs -deleteSnapshot data sp1 #重命名 $>hdfs dfs -renameSnapshot data sp1 sp2
注意:刪除目錄時,若是是可快照目錄而且有快照,須要先刪除快照,再刪除目錄。
鏡像文件存放的是hdfs的元數據,是最重要的數據文件。能夠經過多種格式進行查看。內容包括目錄、權限、配額、數據塊等信息。
#i:input o:output p:處理方式 $>hdfs oiv -i fsimage_0000000000000207400 -o ~/1.xml -p XML
對hdfs的每一個寫操做都會記錄到編輯日誌中,查看方式同鏡像相似。
$>hdfs oev -i edits_0000000000000200088-00000000000002000199 -o 2.xml -p XML
2nn節點對nn節點會進行週期性檢查,以完成元數據的備份與融合。具體能夠經過如下屬性進行控制:
dfs.namenode.checkpoint.period
檢查週期,多長時間生成一次新的檢查點,默認爲3600秒,即1小時。
dfs.namenode.checkpoint.txns
操做記錄數控制,默認1000,000,發生這些次操做也會生成新的檢查點,即時時間不到1小時。
dfs.namenode.checkpoint.check.period
<property> <name>dfs.namenode.checkpoint.check.period</name> <value>60</value> <description>The SecondaryNameNode and CheckpointNode will poll the NameNode every 'dfs.namenode.checkpoint.check.period' seconds to query the number of uncheckpointed transactions. </description> </property>
dfs.namenode.num.checkpoints.retained
<property> <name>dfs.namenode.num.checkpoints.retained</name> <value>2</value> <description>The number of image checkpoint files (fsimage_*) that will be retained by the NameNode and Secondary NameNode in their storage directories. All edit logs (stored on edits_* files) necessary to recover an up-to-date namespace from the oldest retained checkpoint will also be retained. </description> </property>
舊節點下線操做,須要經過黑白名單進行控制。下線時主要完成舊節點數據的安全轉移。成功後,就能夠安全下線了。hdfs的黑白名單由dfs.hosts.exclude和dfs.hosts控制,yarn的黑白名單由yarn.resourcemanager.nodes.exclude-path和yarn.resourcemanager.nodes.include-path控制。
dfs.hosts
白名單,能夠連到namenode的datanode節點列表。
dfs.hosts.exclude
黑名單,不容許鏈接到namenode的datanode節點列表。
黑白名單組合規則:
dfs.hosts | dfs.hosts.exclude | 結果 |
---|---|---|
NO | NO | Not |
NO | YES | Not |
YES | NO | YES |
YES | YES | YES並將退役 |
準備黑白名單
配置hdfs-site.xml的黑白名單屬性
[hdfs-site.xml]
<!-- 白名單 --> <property> <name>dfs.hosts</name> <value>/soft/hadoop/etc/full/dfs_include.conf</value> </property> <!-- 黑名單 --> <property> <name>dfs.hosts.exclude</name> <value>/soft/hadoop/etc/full/dfs_exclude.conf</value> </property>
添加退役節點地址到黑名單,不要更新白名單
[dfs_exclude.conf]
s102
刷新nn
$>hdfs dfsadmin -refreshNodes
進入webui,查看退役的節點是否顯式爲"退役中",開始複製數據塊到其餘節點。
http://s101:50070/
一旦複製完成,狀態顯式"Decommissioned",中止退役節點
從白名單中刪除退役節點
再次刷新節點
$>hdfs dfsadmin -refreshNodes
從slaves中刪除退役節點
新節點上線時,須要先配置ssh和hadoop軟件包。上線實操過程以下:
配置新節點ssh和安裝hadoop軟件包以及配置環境變量
略
添加新地址到白名單
刷新名稱節點
$>hdfs dfsadmin -refreshNodes
更新slaves文件
單獨啓動新節點的datanode進程
$>hadoop-daemon.sh start datanode
檢查webui
準備黑白名單
yarn_exclude.conf
yarn_include.conf
配置yarn-site.xml的黑白名單屬性
[yarn-site.xml]
<!-- yarn白名單 --> <property> <name>yarn.resourcemanager.nodes.include-path</name> <value>/soft/hadoop/etc/full/yarn_include.conf</value> </property> <!-- yarn黑名單 --> <property> <name>yarn.resourcemanager.nodes.exclude-path</name> <value>/soft/hadoop/etc/full/yarn_exclude.conf</value> </property>
添加退役節點地址到黑名單,不要更新白名單
[yarn-exclude.conf]
s102
刷新yarn
$>yarn rmadmin -refreshNodes
進入webui,查看退役的節點是否顯式爲"退役中",開始複製數據塊到其餘節點。
http://rm:8088/
一旦複製完成,狀態顯式"Decommissioned",中止退役節點
從白名單中刪除退役節點
再次刷新節點
$>yarn rmadmin -refreshNodes
從slaves中刪除退役節點