略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中删除退役节点