大数据学习05_Hadoop: HDFS工作机制

HDFS数据流

HDFS数据写入流程

在这里插入图片描述

节点距离计算

节点距离: 两个节点到达最近的共同祖先的距离总和
在这里插入图片描述
Distance(/d1/r1/n0, /d1/r1/n0)=0(同一节点上的进程)
Distance(/d1/r2/n0, /d1/r3/n2)=4(同一数据中心不同机架上的节点)
Distance(/d1/r1/n1, /d1/r1/n2)=2(同一机架上的不同节点)
Distance(/d1/r2/n1, /d2/r4/n1)=6(不同数据中心的节点)

副本存储节点选择

在这里插入图片描述
HDFS每个block默认存储三个副本
第一个副本在Client所处的节点上。如果客户端在集群外,随机选一个
第二个副本和第一个副本位于相同机架,随机节点
第三个副本位于不同机架,随机节点

HDFS数据读取流程

在这里插入图片描述

NameNode

NN和2NN工作机制

在这里插入图片描述

NameNode的元数据存储在内存上,同时在硬盘上的fsimage文件上存储元数据的备份.
元数据有更新或者添加元数据时,修改内存中的元数据并追加到Edits文件上.
引入一个新的节点SecondaryNamenode,专门用于fsimage文件和Edits文件的合并

DataNode

DataNode工作机制

在这里插入图片描述
掉线判定
在这里插入图片描述

其中heartbeat.recheck.intervaldfs.heartbeat.interval都可以在hdfs-site.xml中配置

DataNode服役

克隆一台新主机,删除掉datalogs目录下的内容后再启动DataNode即可使新节点关联到NameNode下.
调用start-balancer.sh脚本可以均衡负载

DataNode退役

控制DataNodeNameNode的访问有两种方式:黑名单白名单

白名单

白名单中的主机节点都被允许访问NameNode;不在白名单的主机节点,都会被强制退出集群.

  1. hadoop目录下的etc/hadoop目录下创建dfs.hosts文件,在文件中列出DataNode白名单

    hadoop102
    hadoop103
    hadoop104
    
  2. etc/hadoop/hdfs-site.xml中添加如下属性,指定白名单文件的位置

    <property>
    	<!-- 指定白名单文件的位置 -->
    	<name>dfs.hosts</name>
    	<value>/opt/module/hadoop-2.7.7/etc/hadoop/dfs.hosts</value>
    </property>
    
  3. 在shell中刷新NameNode,更新ResourceManager节点

    hdfs dfsadmin -refreshNodes
    yarn rmadmin -refreshNodes
    

    刷新之后会发现不在白名单中的节点马上退出集群

  4. 均衡负载

    start-balancer.sh
    

黑名单

黑名单上的主机都会被强制退出集群

  1. hadoop目录下的etc/hadoop目录下创建dfs.hosts.exclude文件,在文件中列出DataNode黑名单
    hadoop105
    
  2. etc/hadoop/hdfs-site.xml中添加如下属性,指定黑名单文件的位置
    <property>
    	<name>dfs.hosts.exclude</name>
    	<value>/opt/module/hadoop-2.7.7/etc/hadoop/dfs.hosts.exclude</value>
    </property>
    
  3. 在shell中刷新NameNode,更新ResourceManager节点
    hdfs dfsadmin -refreshNodes
    yarn rmadmin -refreshNodes
    
    刷新后会发现黑名单上的节点不会马上退出集群,而是将数据拷贝到其他节点之后才退出集群.

这里是引用

  1. 均衡负载
    start-balancer.sh
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值