hdfs的4大机制,2大核心
hdfs提供的是高容错性的分布式数据存储方案
一、四大机制
hdfs的四大机制包括心跳机制、安全模式、机架策略和负载均衡。
hadoop集群start-dfs.sh启动集群时,各进程启动的顺序:
namenode
datanode
secondarynamenode
1.1 心跳机制
集群节点之间必须做时间同步,namenode是集群的老大,负责集群上任务的分工,如果要进行分工,则必须知道各个从节点的存活状况。
(1) namenode怎么知道从节点的存活?
答:通过datanode定期向namenode发送心跳报告。datanode会每隔3秒向namenode发送一次心跳报告,目的就是告诉namenode自己的存活状况。
默认情况下心跳间隔3秒的设置来源=》value决定datanode向namenode发送心跳报告的间隔时间。
<property>
<name>dfs.heartbeat.interval</name>
<value>3</value>
<description>Determines datanode heartbeat interval in seconds. </description>
</property>
(2) namenode什么时候会判定datanode死了?
答:datanode每隔3秒向namenode发送一次心跳报告,当namenode连续10次没有收到datanode的心跳报告则认为这个datanode可能死了,并没有判定死了(可能网络延迟),这个时候namenode会主动向datanode发送一次检查,发送一次检查的时间是5min(300000毫秒),如果一次检查没有返回信息,这时候namenode会再进行一次检查,如果再获取不到datanode的返回信息,这个时候才会判定当前的datanode死亡了。
<property>
<name>dfs.namenode.heartbeat.recheck-interval</name>
<value>300000</value>
<description>This time decides the interval to check for expired datanodes.With this value and dfs.heartbeat.interval, the interval of deciding the datanode id stale ot not is also calculated. The unit of this configuration is millisecond. </description>
</property>
即:namenode最终判断datanode死亡需要10*3s+2*5min=630s。namenode在连续630s中没有得到datanode的信息才会认为当前的datanode宕机。生产环境中,如果觉得网络可能会延迟,可以延长上述两个参数。
1.2 安全模式
集群启动的时候nameno