大数据笔记|青训营笔记

69 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的的第8天。

本节课程主要分为 4 个方面:

   1.HDSF基本介绍
   2.架构原理
   3.关键设计
   4.应用场景

一.HDFS基本介绍

      1.1.HDFS:Hadoop Distributed File System
            1.3.分布式文件系统:
                 ■ 大容量
                 ■ 高可靠
                 ■ 低成本
      1.5.HDFS功能特性
              1).分布式
              2).容错
              3).高可用
              4).高吞吐
              5).可扩展
              6).廉价

二.架构原理

     2.1.HDFS组件 
           Client/SDK:读写操作的发起点,HDFS很多读写逻辑都是在SDK中实现的。 
           NameNode:元数据节点,是HDFS的中枢节点,也是服务的入口。 
           DataNode:数据节点,存放实际用户数据。
     2.4.元数据节点NameNode
           1).维护目录树
           2).维护文件和数据块的关系
           3).维护文件块存放节点信息
           4).分配新文件存放节点
     2.5.数据节点DataNode
           1).数据块存取
           2).心跳汇报
           3).副本复制

三.关键设计

       3.1.分布式存储系统基本概念
              ○ 容错能力 
              ○ 一致性模型 
              ○ 可扩展性 
              ○ 节点体系模式 
              ○ 数据放置策略 
              ○ 单机存储引擎
       3.2.NameNode目录树维护
              ■ fsimage
                  ✔ 文件系统目录树
                  ✔ 完整的存放在内存中
                  ✔ 定时存放到硬盘
                  ✔ 修改是只会修改内存中的目录树 
              ■ EditLog
                  ✔ 目录树的修改日志
                  ✔ client更新目录树需要持久化EditLog后才能表示更新成功
                  ✔ EditLog可存放在本地文件系统,也可存放在专用系统上
                  ✔ NameNode HA方案一个关键点就是如何实现EditLog共享
           NameNode数据放置
              ■ 数据块信息维护
                  ✔ 目标树保存每个文件的块id
                  ✔ NameNode维护了每个数据块所在的节点信息
                  ✔ NameNode根据DataNode汇报的信息动态维护位置信息
                  ✔ NameNode不会持久化数据块位置信息
              ■ 数据防止策略
                  ✔ 新数据存放到哪写节点
                  ✔ 数据均衡需要怎么合理搬迁数据
                  ✔ 3个副本怎么合理放置
        3.3.DataNode
              ■ 数据块的硬盘存放
                  ✔ 文件在NameNode已分割成block
                  ✔ DataNode以block为单位对数据进行存取
              ■ 启动扫盘
                  ✔ DataNode需要知道本机存放了哪些数据块
                  ✔ 启动时把本机硬盘上的数据块列表加载在内存中
         3.4.HDFS写异常处理:Lease Recovery
               ○ 租约:
                   Client要修改一个文件时,需要通过NameNode上锁,这个锁就是租约(Lease)
               ○ 情景:文件写了一半,client自己挂掉了
                   可能产生的问题:
                      ✔ 副本不一致
                      ✔ Lease无法释放
               ○ 解决方法:Lease Recovery
            3.4.1.HDFS写异常处理:Pipeline Recovery
                     ○ 情景: 文件写入过程中,DataNode侧出现异常挂掉了 
                     ○ 异常出现的时机:
                           ✔ 创建连接时 
                           ✔ 数据传输时 
                           ✔ complete阶段 
                     ○ 解决方法:Pipeline Recovery
          3.5.Client读异常处理
                 ○ 情景: 读取文件的过程,DataNode侧出现异常挂掉了 
                 ○ 解决方法:节点Failover 
                 ○ 增强情节:节点半死不过,读取很慢
          3.6.旁路系统
                ◌ Balancer
                ◌ Mover
          3.7.控制面建设
               ◆ 可观测性设施
                    ◎ 指标埋点
                    ◎ 数据采集
                    ◎ 访问日志
                    ◎ 数据分析
               ◆ 运维体系建设
                    ◎ 运维操作需要平台化
                    ◎ NameNode操作复杂
                    ◎ DataNode机器规模庞大
                    ◎ 组件控制面API

四.应用场景

     ○ 大数据技术中的应用 
           ◎ HDFS在大数据技术体系中的角色 
           ◎ 演示:PySpark读取分析HDFS上的文件 
                      □ 数据如何产生 
                      □ 数据如何读取 
                      □ 数据如何保存 
           ◎ ETL:数据如何产生、传输 
           ◎ OLAP:如何高效地读取分析数据 
     ○ 存储底座 
          ◎ HBase 
          ◎ 机器学习 
          ◎ 通用场景