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

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

  • HDFS数据流
    • HDFS数据写入流程
      • 节点距离计算
      • 副本存储节点选择
    • HDFS数据读取流程
  • NameNode
    • NN和2NN工作机制
  • DataNode
    • DataNode工作机制
    • 新`DataNode`服役
    • 旧`DataNode`退役
      • 白名单
      • 黑名单

HDFS数据流

HDFS数据写入流程

大数据学习05_Hadoop: HDFS工作机制_第1张图片

节点距离计算

节点距离: 两个节点到达最近的共同祖先的距离总和
大数据学习05_Hadoop: HDFS工作机制_第2张图片
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(不同数据中心的节点)

副本存储节点选择

大数据学习05_Hadoop: HDFS工作机制_第3张图片
HDFS每个block默认存储三个副本
第一个副本在Client所处的节点上。如果客户端在集群外,随机选一个
第二个副本和第一个副本位于相同机架,随机节点
第三个副本位于不同机架,随机节点

HDFS数据读取流程

大数据学习05_Hadoop: HDFS工作机制_第4张图片

NameNode

NN和2NN工作机制

大数据学习05_Hadoop: HDFS工作机制_第5张图片

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

DataNode

DataNode工作机制

大数据学习05_Hadoop: HDFS工作机制_第6张图片
掉线判定
大数据学习05_Hadoop: HDFS工作机制_第7张图片

其中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.hostsname>
    	<value>/opt/module/hadoop-2.7.7/etc/hadoop/dfs.hostsvalue>
    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.excludename>
    	<value>/opt/module/hadoop-2.7.7/etc/hadoop/dfs.hosts.excludevalue>
    property>
    
  3. 在shell中刷新NameNode,更新ResourceManager节点
    hdfs dfsadmin -refreshNodes
    yarn rmadmin -refreshNodes
    
    刷新后会发现黑名单上的节点不会马上退出集群,而是将数据拷贝到其他节点之后才退出集群.

这里是引用

  1. 均衡负载
    start-balancer.sh
    

你可能感兴趣的:(大数据)