MAC M1大数据0-1成神篇-19 初识hadoop

写在前面:

认识一下数据类型和其中的节点。

进入主题:

一.文件的数据类型

  • 文件有一个stat命令
    • 元数据信息-->描述文件的属性
  • 文件有一个vim命令
    • 查看文件的数据信息
  • 分类
    • 元数据
  • 文件数据
    • 真实存在于文件中的数据 

二. NameNode(NN)

  •  
  •  

    2.1 功能

  • 接受客户端的读写服务
    • NameNode存放文件与Block的映射关系
    • DataNode存放Block与DataNode的映射关系
  • 保存文件的元数据信息
    • 文件的归属
    • 文件的权限
    • 文件的大小时间
    • Block信息,但是block的位置信息不会持久化,需要每次开启集群的时候DN上报 
  • 收集Block的信息
    • 系统启动时
      • NN关机的时候是不会存储任意的Block与DN的映射信息
      • DN启动的时候,会将自己节点上存储的Block信息汇报给NN
      • NN接受请求之后重新生成映射关系
      • Block--DN3
      • 如果某个数据块的副本数小于设置数,那么NN会将这个副本拷贝到其他节点 
  • 集群运行中
    • NN与DN保持心跳机制,三秒钟发送一次
    •  如果客户端需要读取或者上传数据的时候,NN可以知道DN的健康情况
    • 可以让客户端读取存活的DN节点
  • 如果DN超过三秒没有心跳,就认为DN出现异常
    • -不会让新的数据读写到DataNode
    • -客户访问的时候不提供异常结点的地址
    • 如果DN超过10分钟+30秒没有心跳,那么NN会将当前DN存储的数据转存到其他节点
      • 超时时长的计算公式为:timeout = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.interval。而默认的heartbeat.recheck.interval大小为5分钟,dfs.heartbeat.interval默认为3秒。

    2.2 性能

  • NameNode为了效率,将所有的操作都在内存中完成
    • NameNode不会和磁盘进行任何的数据交换
    • 问题:
      • 数据的持久化
      • 数据保存在内存中,掉电易失

 三.DataNode(DN)

    3.1 功能

  • 存放的是文件的数据信息和验证文件完整性的校验信息
    • 数据会存放在硬盘上
    • 1m=1条元数据 1G=1条元数据
    • NameNode非常排斥存储小文件,一般小文件在存储之前需要进行压缩
  • 汇报
    • 启动时
      • 汇报之前先验证Block文件是否被损坏
      • 向NN汇报当前DN上block的信息
    • 运行中
      • 向NN保持心跳机制
      • 客户可以向DN读写数据
  • 当客户端读写数据的时候,首先去NN查询file与block与dn的映射
    • 然后客户端直接与dn建立连接,然后读写数据

4. SecondaryNameNode

  • 传统解决方案
    • 日志机制
      • 做任何操作之前先记录日志
      • 当NN下次启动的时候,只需要重新按照以前的日志“重做”一遍即可
      • 缺点
        • edits文件大小不可控,随着时间的发展,集群启动的时间会越来越长
        • 有可能日志中存在大量的无效日志
      • 优点
        • 绝对不会丢失数据
    • 拍摄快照
      • 我们可以将内存中的数据写出到硬盘上
        • 序列化
      • 启动时还可以将硬盘上的数据写回到内存中
        • 反序列化
      • 缺点
        • 关机时间过长
        • 如果是异常关机,数据还在内存中,没法写入到硬盘
        • 如果写出频率过高,导致内存使用效率低(stop the world)JVM
      • 优点
        • 启动时间较短

  • SNN解决方案 

    • 解决思路(日志edits+快照fsimage)
      • 让日志大小可控
      • 定时快照保存
    • NameNode文件目录
      • 查看目录
        • /var/lzj/hadoop/local/dfs/name/current
        • edits_0000000000000000001-0000000000000000019
        • edits_inprogress_0000000000000000020
          • 当前已经正在执行的操作的日志信息
          • 这些日志信息还没有被合并到镜像中
        • fsimage_0000000000000000000
        • fsimage_0000000000000000000.md5
        • fsimage_0000000000000000019
        • fsimage_0000000000000000019.md5
          • 完整性校验规则
        • seen_txid -->19
        • VERSION 
    • 解决方案
      • 当我们启动一个集群的时候,会产生四个文件
        • edits_0000000000000000001
        • fsimage_00000000000000000
        • seen_txid
        • VERSION
      • 我们每次操作都会记录日志-->edits_inprogress-000000001
      • 随和时间的推移,日志文件会越来越大,当达到阈值的时候(64M或3600秒)
        • dfs.namenode.checkpoint.period每隔多久做一次checkpoint,默认3600s
        • dfs.namenode.checkpoint.txns每隔多少操作次数做一次checkpoint,默认1000000次
        • dfs.namenode.checkpoint.check.period每个多久检查一次操作次数,默认60s
      • 会生成新的日志文件
        • edits_inprogress-000000001 -->edits_0000001
        • 创建新的日志文件edits_inprogress-0000000016
      •  

 完毕。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值