Hadoop HDFS DataNode

Hadoop HDFS DataNode

  • DN 工作机制
  • 数据完整性
  • 掉线时限

DN 工作机制

数据块在 DataNode 上以文件形式存储在磁盘上 :

  • 数据本身
  • 元数据 : 数据块的长度,块数据的校验和,时间戳

流程 :

  1. DataNode 启动后向 NameNode 注册
  2. 以周期性 (6 小时) 向 NameNode 上报所有的块信息
  3. 通过心跳 (3 秒一次) 返回 NameNode 的命令 , 如 : 复制块数据到另一台机器,删除某个数据块
  4. 当超过10 分钟没有收到某个 DataNode 的心跳,就认为该节点不可用
  5. 集群运行中能安全加入和退出一些机器

Hadoop HDFS DataNode_第1张图片

代码流程 :

Hadoop HDFS DataNode_第2张图片

DN 向 NN 汇报当前解读信息的时间间隔 :

<property>
	<name>dfs.blockreport.intervalMsecname>
	<value>21600000value>
	<description>默认 6 小时description>
property>

DN 扫描自己节点块信息列表的时间,默认 6 小时 :

<property>
	<name>dfs.datanode.directoryscan.intervalname>
	<value>21600svalue>
	<description> 默认 6 小时 description>
property>

数据完整性

DataNode 保证数据完整性方法 :

  • 当 DataNode 读取 Block 时,它会计算 CheckSum
  • 当计算后的 CheckSum,与 Block 创建时值不一样,说明 Block 已损坏
  • 当损坏 , Client 会读取其他 DataNode 上的 Block
  • 常见的校验算法 : crc(32) , md5(128) , sha1(160)
  • DataNode 在文件创建后 , 会周期验证 CheckSum

Hadoop HDFS DataNode_第3张图片

掉线时限

  • 当 DataNode 进程死亡或 网络故障 , 会让 DataNode 无法与 NameNode 通信
  • 当 NameNode 通信 > 超时时间 (默认 : 10分钟+30秒 ) , 就认为该节点死亡

超时时长的计算公式 : 2 *_ dfs.namenode.heartbeat.recheck-interval + 10 *_ dfs.heartbeat.interval

hdfs-site.xml 配置文件 :

	
	<property>
		<name>dfs.namenode.beartbeat.recheck-intervalname>
		<value>300000value>
    <description>默认 5分钟description>
	property>
	
	<property>
		<name>dfs.heartbeat.intervalname>
		<value>3value>
    <description>默认 3秒description>
	property>

你可能感兴趣的:(Hadoop,hadoop,hdfs,大数据,架构,分布式)