zoukankan      html  css  js  c++  java
  • hdfs文件系统架构详解

    hdfs文件系统架构详解

    官方hdfs分布式介绍

    NameNode

    *Namenode负责文件系统的namespace以及客户端文件访问
    *NameNode负责文件元数据操作,DataNode负责文件内容的处理,跟文件有关的额数据不会经过NameNode
    *NameNode负责安排数据存在那台机器上,负责控制和调配最近的副本给用户读取(调节hdfs的balance属性,执行balance命令)
    	For the common case, when the replication factor is three, HDFS’s placement policy is to put one replica on one node in the local rack, another on a different node in the local rack, and the last on a different node in a different rack. 
    	通常,当备份数为3的时候,HDFS的分配策略会将一个放置在本地节点,另一个放在同一个机架的不同节点上,最后一个放置在不同机架的节点上
    *NameNode管理数据块的复制,周期性地接收心跳包(3s/次 10分钟GG)和blockreport(1h/次)
    

    Datanode

    *一个块保存了两个文件1:元文件(长度,校验,时间戳) 2:数据文件
    *可以随时安全加入退出机器
    *周期性地发送心跳包(3s/次 10分钟GG)和blockreport(1h/次)
    datanode路径如下(由etc/hadoop/core-site.xml文件决定)
    	data/tmp/dfs/data/current/BP-1645940924-127.0.1.1-1497948488160/current/finalized/
    		-rw-rw-r-- 1 cen cen  3589 6月  20 16:50 blk_1073741825 					#(数据文件)
    		-rw-rw-r-- 1 cen cen    39 6月  20 16:50 blk_1073741825_1001.meta		#(元数据)
    !!!值得一提的是,文件一旦创建,不能修改文件内容
    

    文件损坏处理

    *datanode读取block的时候会计算checksum
    *与创建时候的checksum进行比对,若不一致则执行损坏处理
    *让客户端读取其他datanode节点的数据
    *NameNode标记此block已GG,用其他块数据覆盖本节点
    *datanode每三周进行一次cehecksum工作
    

    HDFS-NameNode存储在

    *内存
    *本地磁盘
    	1.fsimage(镜像文件)
    	2.edits(编辑日志)
    

    第一次启动HDFS过程详解

    0-> format					(初始化文件系统)
    1-> fsimage					(生成镜像文件)
    2-> Start NameNode 	   (启动NameNode)
        *read fsimage  			(读取镜像文件)
    
    =======>>> SafeMode(进入HDFS文件系统的安全模式)<<<=======
    3-> Start DataNode 			(启动DataNode)
        *注册					(向NameNode注册)
        *block report			(向Namenode反馈块报告)
    
    当 DataNodes blocks / total blocks = 99.999%    
    =============>>> 30秒 CD 后退出安全模式<<<================
    <<<安全模式期间,不能改变文件系统命名空间(元数据),如增 删 改,允许查看文件>>>
    
    4-> create dir XXX  		(用户进行操作时候,内存中保存了修改,同时磁盘中修改了edits)
    5-> put files XXX			(同上)
    6-> delete files XX 		(同上)
    

    第二次启动HDFS

    1-> NameNode
        *read fsimage			(读取镜像文件)
        *read edits				(读取编辑日志)
        *gen write fsimage		(合并编辑日志,生成新的镜像文件,替换原来的文件)
        *gen write edits		(生成空的编辑日志,替换原来的文件)
    2-> DataNode
    ...    
    ...    
    ...
    

    SecondaryNameNode

    功能:定时合并编辑日志和镜像文件,用于辅助NameNode
    

    手动进入安全模式

        bin/hdfs dfsadmin -safemode <enter | leave | get | wait>
                                                        进入   |离开   |查看状态|等待|
  • 相关阅读:
    Rocketmq
    HTTPS 证书显示不安全
    js json 转为url参数
    Telnet 安装
    自己配置环境变量不起作用的问题
    Android笔记-Dalvik VM-1
    Fuzzy Logic/Expert System/Control
    PhD第一学期小结
    linux中的>、>>、2>&1、管道命令
    Hyper-v虚拟机设置静态IP
  • 原文地址:https://www.cnblogs.com/cenzhongman/p/7055390.html
Copyright © 2011-2022 走看看