一、参数含义
dfs.replication:设置数据块应该被复制的份数;
dfs.replication.min:所规定的数据块副本的最小份数;
dfs.replication.max:所规定的数据块副本的最大份数;
dfs.safemode.threshold.pct:指定应有多少比例的数据块满足最小副本数要求。
(1)当小于这个比例, 那就将系统切换成安全模式,对数据块进行复制;
(2)当大于该比例时,就离开安全模式,说明系统有足够的数据块副本数,可以对外提供服务。
(3)小于等于0意味不进入安全模式,大于1意味一直处于安全模式。
二、dfs.replication.min存在的意义
副本数按dfs.replication设置,如果有失效节点导致某数据块副本数降低,当低于dfs.replication.min后,系统再在其他节点处复制新的副本。如果该数据块的副本经常丢失,导致在环境中太多的节点处复制了超过dfs.replication.max的副本数,那么就不再复制了。
三、Hadoop安全模式的理解
hadoop的安全模式即只读模式,是指当前系统中数据块的副本数比较少,在该阶段要对数据块进行复制操作,不允外界对数据块进行修改和删除等操作。NameNode在启动的时候首先进入安全模式,如果datanode丢失的block达到一定的比例(1-dfs.safemode.threshold.pct),则系统会一直处于安全模式状态即只读状态。dfs.safemode.threshold.pct(缺省值0.999f)表示HDFS启动的时候,如果DataNode上报的block个数达到了元数据记录的block个数的0.999倍才可以离开安全模式,否则一直是这种只读模式。如果设为1则HDFS永远是处于SafeMode。