分布式如何进行解决大数据的存储与计算问题个人理解

分布式如何解决大数据的存储与计算问题个人理解

  • 分布式:如何解决大量数据的计算和存储问题的?

    • 问题1:为什么不用MySQL存储和分析计算?

      • 数据量大,MySQL存储不了
      • 即使能存储,处理的性能也很差
        • 数据的价值会随着时间的流逝而逐渐降低
        • 离线架构:以一定时间为单位处理数据
          • 今天处理昨天的数据,时效性比较慢【分钟及以上级别】
        • 实时架构:以数据生成为单位处理数据
          • 数据产生一条处理一条,时效性比较高【ms级别】
      • 数据种类的多样化
    • 问题2:如何解决数据大无法存储或者计算的问题?

      • 分布式:分而治之
        • 先分
        • 计算处理
        • 后合
      • 定义:就是将多台机器的资源【集群】在逻辑上合并成==一个整体==,通过分布式的软件,提供分布式的服务
      • 过程
        • step1:有一个很大的任务:存储、计算
        • step2:提交给分布式服务,分布式服务实现分的过程
          • 将这个很大的任务拆分成若干个小的任务
        • step3:分布式服务将若干个小的任务分配给多台机器共同执行,每台机器处理不同的小任务
        • step4:当用户需要获取结果时,要将所有小任务的结果进行合并,返回最终结果
      • 举例
        • 存储
          • 机器:3台:8T = 24TB
          • 文件:15TB
          • 过程
            • 用户提交存储给分布式存储服务:15TB
            • 分布式服务会将这个文件拆分
              • Block1:5TB
              • Block2:5TB
              • Block3:5TB
            • 分布式服务将这个三个5TB的块,存储到三台机器,每台机器存储5TB
              • 元数据:必须记录这个文件与这三个块,以及三个块在三台机器存储位置的这个信息
            • 当用户读取这个文件,向分布式服务请求读取,分布式服务要根据当初这个文件拆分的三个块合并,返回给用户
        • 计算
          • 机器:3台:2Core 4GB => 6Core 12GB
          • 文件:9GB =》 累加 : 1 + …… +9
          • 过程
            • 用户提交计算给分布式计算服务: 1 + …… +9
            • 分布式服务会将这个计算拆分
              • task1:1+2+3
              • task2:4+5+6
              • task3:7+8+9
              • task4:将其他task的结果累加
            • 将三个task分配给三台机器来运行计算
              • node1:task1:6
              • node2:task2:15
              • node3:task3:24
            • 启动Task4将三台机器的结果进行合并
              • node3:task4:45
            • 将最后结果返回给用户
    • 问题3:分布式解决了什么问题?

      • 解决了大数据量的存储和计算的问题
      • 单台机器资源不足问题
      • 单台机器资源性能差问题【主要】
    • 问题4:分布式的通用架构是什么样的?【不包括zookeeper】

      • 主从架构:主从节点进程
      • 主节点:管理节点
        • 主要负责分布式服务的管理类操作
          • 管理所有从节点的死活
          • 管理任务的分配
        • 接客:接受客户端的请求
        • 不同分布式从节点的进程名称都不一样:Leader、NameNode,ResourceManager、Master……
      • 从节点:负责管理每一台机器自己的资源
        • 有几台机器,就有几个从节点
        • 不同分布式从节点的进程名称都不一样:Follower、DataNode、NodeManager、Worker……
        • 接受主节点分配的任务【小任务】,调用自己机器的来执行任务
    • 问题5:分布式架构中存在问题?

      • 单点故障问题:主节点只有一个,如果主节点进程或者所在机器故障,会导致整个分布式服务不可用的
      • 分布式数据一致性问题:多台机器要共享同一份数据,如何保证读取的数据一致性问题
      • 解决:Zookeeper
    • 问题6:zookeeper如何解决分布式的两个问题?

      • 问题:数据一致性问题
        • 利用ZK实现一致性存储,将数据存储在ZK中
        • 所有节点都从ZK中读取数据
      • 问题:主节点单点故障问题
        • 解决:分布式框架可以构建多个主节点,保证同一时刻只有一个是工作状态
        • 状态
          • Active:工作状态
          • Standby:备份状态
      • 问题:如何决定谁是工作谁是备份?
        • 解决:利用zookeeper的临时节点进行辅助选举
        • 实现:让两个主节点A和B都到ZK中创建一个同名临时节点file,谁创建成功,谁就是Active,另外一个由于节点已存在,就会创建失败
          • 假设A创建成功,A就是Active的
          • B作为Standby,并为file节点设置监听,如果A故障,与ZK的会话会断开,file这个临时节点,就会被删除,B会受到这个监听的信息,发现A故障,就会切换为Active状态
  • Zookeeper:解决分布式存在的问题

    • 功能
      • 用于存储共享数据:元数据、索引数据
      • 辅助选举
    • 所有分布式框架,要么利用zk解决分布式问题,要么自己实现类似ZK的解决方案
    • 问题7:zookeeper自己也是分布式的,它的问题需要自己解决?
      • 问题:如果有一台ZK故障了,是否影响?
        • 不影响
        • zk是公平节点,zk每一台节点存储的内容是一致的,而且任何一台ZK都可以接受读写请求
      • 问题:zk如何保证每台机器的内容是一致的?
        • 限定只能由leaderxier,leader同步给其他节点
      • 问题:如果leader故障怎么办?
        • 公平节点:每台机器都可以被选举为Leader
          ,leader同步给其他节点
      • 问题:如果leader故障怎么办?
        • 公平节点:每台机器都可以被选举为Leader

[外链图片转存中…(img-l9kYu1r2-1606877554427)]

  • Hadoop:大数据存储和计算的问题=》设计:分布式方案

猜你喜欢

转载自blog.csdn.net/mitao666/article/details/110472613