Hadoop常用操作
Hadoop常用操作
1、Hadoop安裝
略
2、Hadoop配置
略
3、Hadoop多目錄配置
namenode和datanode節點下都可以進行多個目錄的配置,但是意義不同。namenode的多目錄配置是副本策略,保證資料可靠性,datanode多目錄配置是對容量進行擴容,由於datanode已經有副本機制了。
[hdfs-site.xml]
<!-- 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]
<property>
<name>hadoop.tmp.dir</name>
<value>/home/centos/hadoop/ha</value>
</property>
4、hadoop配額管理
配額是對空間和目錄個數進行限制,放置目錄下的檔案個數或大小過於龐大。因此配額分為空間配額和目錄配額。
目錄配額
限制目錄所含檔案或資料夾的個數。如果為1,則保持目錄為空(可以認為將目錄本身也包含在內)。
#設定配額 $>hdfs dfsadmin -setQuota 1 data #清除配額 $>hdfs dfsadmin -clsQuota data
空間配額
由於每份檔案都有三個副本,空間配額計算時也將副本數計算在內,加上每個資料塊檔案預設為128m,因此空間配額至少要指定384m的空間值。即128 * 3 = 384。
#該設定會出錯,說至少是384m空間 $>hdfs dfsadmin -setSpaceQuota 384m data
5、快照
快照是對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
注意:刪除目錄時,如果是可快照目錄並且有快照,需要先刪除快照,再刪除目錄。
6、元資料管理
6.1 映象檔案檢視
映象檔案存放的是hdfs的元資料,是最重要的資料檔案。可以通過多種格式進行檢視。內容包括目錄、許可權、配額、資料塊等資訊。
#i:input o:output p:處理方式
$>hdfs oiv -i fsimage_0000000000000207400 -o ~/1.xml -p XML
6.2 編輯日誌檢視
對hdfs的每個寫操作都會記錄到編輯日誌中,檢視方式同映象類似。
$>hdfs oev -i edits_0000000000000200088-00000000000002000199 -o 2.xml -p XML
6.3 映象控制
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>
7、舊節點下線操作
7.1 介紹
舊節點下線操作,需要通過黑白名單進行控制。下線時主要完成舊節點資料的安全轉移。成功後,就可以安全下線了。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並將退役 |
7.2 HDFS舊節點下線操作
準備黑白名單
- dfs_exclude.conf
- dfs_include.conf
配置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中刪除退役節點
8、HDFS新節點上線
新節點上線時,需要先配置ssh和hadoop軟體包。上線實操過程如下:
配置新節點ssh和安裝hadoop軟體包以及配置環境變數
略
新增新地址到白名單
重新整理名稱節點
$>hdfs dfsadmin -refreshNodes
更新slaves檔案
單獨啟動新節點的datanode程序
$>hadoop-daemon.sh start datanode
檢查webui
9、YARN舊節點下線
準備黑白名單
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中刪除退役節點