一、DataNode
- 用于存储数据,注意数据是以Block形式存储
- 数据在DataNode上的存储位置由hadoop.tmp.dir属性决定,存储目录是dfs/data/current/块池/current/finalized/subdir0/subdir0
- DataNode会通过心跳机制(RPC方式)来向NameNode发送心跳信息
Hadoop的HDFS体系结构
二、SecondaryNameNode
- SecondaryNameNode只是辅助NameNode进行元数据的合并
- SecondaryNameNode能起到一定的备份作用,但是不能做到和NameNode之间进行实时热备 - 在实际开发中,一旦利用到SecondaryNameNode进行了备份,往往意味着数据已经产生了丢失
- 在HDFS中,最核心节点一定是NameNode,也因此在Hadoop2.0的完全分布式中,为了做到NameNode的热备,舍弃了SecondaryNameNode
三、复本放置策略
-
在HDFS中,默认是多复本策略,默认复本数量为3
-
复本放置策略:
-
- 第一个复本:如果是外部客户端上传数据,则此时NameNode会选择一个相对空闲的节点存放第一个复本;如果是内部上传,则第一个复本放在本节点上
- 第二个复本:在Hadoop2.7以前,第二个复本要放在和第一个复本不同机架的节点上;从Hadoop2.7开始,第二个复本放在和第一个复本相同机架的节点上
- 第三个复本:在Hadoop2.7以前,第三个复本是放在和第二个复本相同机架的节点上;从Hadoop2.7开始,第三个复本放在和第二个复本不同机架的节点上
- 更多复本:随机挑选空闲节点存放
四、机架感知策略
- 在Hadoop所指的机架并不是物理结构而是逻辑结构
- 可以通过映射关系来指定节点对应的机架,也就意味着同一个物理机架上的节点可以映射到不同的逻辑机架上
- 实际使用中,一般会将一个或者几个物理机架上的节点放在一个逻辑机架上
五、回收站机制
- 在HDFS中,回收站默认是不开启的,也就意味着一旦删除某个文件则这个文件会被立即移除
- 可以通过fs.trash.interval来指定在回收站中的停留时间