一个HDFS集群(简单理解我们搭建的Hadoop集群)即一个namenode与N个datanode的组合。
1. namenode节点-Master节点:
(1)namenode是整个HDFS系统的入口,响应用户请求并实现对文件的管理操作。
(2)管理文件划分为多少个block块;管理这些文件块备份多少份,以及保存在哪些设备(datanode)上。 (3)监控datanode的健康状况,确保所掌控的从属节点都能正常运转;如有意外,会执行数据从健康节点复制转移到新节点,保证备份数量足够和有效。2. datanode节点-Slave节点:
(1)响应namenode最终执行用户对文件的读写请求。
(2)将文件最终通过block文件块的形式保存在硬盘上;根据namenode的要求保存这些文件块的副本。 (3)datanode是数据存储节点,也是数据运算节点。也就是说datanode和tasktracker是重叠的,他们执行在同一台机器上。3. HDFS文件系统的工作流程:
下图简单描述了HDFS文件系统的工作流程。其中并没有说明MapReduce的相关内容,下一章节将做出讲解。图中对secondarynamenode节点的工作做了简单描述,目前略过这一部分。
图中涉及到多个配置标签,它们关系到集群在实际工作中到底会有多少个datanode节点;到底会将文件分为多少个block文件块;到底会将文件保存多少备份等等。这些也将在之后的MapReduce深入讲解中做出说明。
4. HDFS数据安全机制:
(1)Block文件块:
一个block块默认保存三份(hdfs-site.xml中dfs.replication的配置),一在NameNode指定DataNode节点;一在与指定节点相同机架的DataNode;一在与指定节点不同机架的DataNode。具体位置是由Hadoop内置算法决定的。 Block文件块的大小默认为64MB(hdfs-site.xml中dfs.block.size的配置,单位kb),如果文件大于这个数值,将被分块;如果小于等于,将默认按原大小保存。(2)心跳检测:
也就是实时检测,jobstracker每隔3秒(hdfs-site.xml中heartbeat.recheck.interval配置,单位s)即检测tasktracker的健康状况;同时tasktracker每个指定时间会上报自身的运行状况。(3)数据均衡:
当某个从属节点上的数据超过磁盘空间的既定比例(使用HDFS的balancer命令配置Threshold值),那么部分数据会被转移到其它磁盘使用率较低的从属节点上。这在安装新的从属节点时非常有用。(4)数据校验:
当HDFS在磁盘上保存文件块的时候会给其添加CRC32校验信息,当从某从属节点读取这个文件块是会先读取这部分校验信息,如果信息完整有效,会使用这个文件块;否则会从另外两个(如果备份了3份)备份中选取。(5)安全模式:
安全模式默认是开启的,并且当系统启动检测全部DataNode节点上Block块的有效性及完成后续操作之后会自动关闭。这段时间HDFS系统内的内容不能修改和删除。在学习阶段,可以从命令行使用hadoop dfsadmin -safemode leave
命令关闭。
- end