20201227
大数据 | 大数据基础--系统之大数据计算框架概述
亲爱的读者朋友大家晚上好,上次我们介绍了大数据计算系统的概述。今天就要开始讲计算框架了~
大数据的分布式并行计算
对大数据的处理无法由单台计算机完成时,需要由多台机器 共同承担计算任务。
例如:假设有一个巨大的2维数据需要处理(比如求每个元素 的开立方),其中对每个元素的处理是相同的,并且数据元素 间不存在数据依赖关系,可以考虑不同的划分方法将其划分为 子数组,由一组处理器并行处理。
大数据的任务划分和并行计算模型
主节点也就是Master:负责划分和分配任务;工作节点也就是worker:负责数据块计算,也就是执行子任务。
大数据计算框架的缘起
- 在分布式环境中进行大数据并行处理,除了访问存储系统,还涉及计算任务的分工,计算负荷的分配,计算机间的数据迁移等工作,并且要考虑计算机或网络发生故障时的数据安全,情况复杂。
- 对开发人员的挑战:编程难度大、调试难度大。
- 对系统设计人员的挑战:系统设计需要考虑的因素多。
- 对系统运维人员的挑战:运维工具缺少,容易积累错误。
从一个例子说起
从很多很多销售记录中统计各种商品销售额,一台机器无法处理,需要许多台计算机一起来 统计。
需要解决的问题:
问题一:如何为每台机器分配任务,是先按商品种类对销售记录分组,不同机器处理不同商 品种类的销售记录,还是随机向各台机器分发一部分销售记录进行统计,最后把各台机器的 统计结果按商品种类合并?
问题二:上述两种方式都涉及数据的排序问题,应选择哪种排序算法?应该在哪台机器上执 行排序过程?
问题三:如何定义每台机器处理的数据从哪里来,处理结果到哪里去?数据是主动发送,还 是接收方申请时才发送?如果是主动发送,接收方处理不过来怎么办?如果是申请时才发送, 那发送方应该保存数据多久?
问题四:会不会任务分配不均,有的机器很快就处理完了,有的机器一直忙着?甚至,闲着 的机器需要等忙着的机器处理完后才能开始执行?
问题五:如果增加一台机器,它能不能减轻其他机器的负荷,从而缩短任务执行时间?
问题六:如果一台机器挂了,它没有完成的任务该交给谁?会不会遗漏统计或重复统计?
问题七:统计过程中,机器之间如何协调,是否需要专门的一台机器指挥调度其他机器?如果这台机器挂了呢?
问题八:如果销售记录在源源不断地增加,统计还没执行完新记录又来了,如何保证统计结 果的准确性?能不能保证结果是实时更新的?再次统计时能不能避免大量重复计算?
问题九:能不能让用户执行一个语句就可以得到结果?
为什么有大数据计算框架?
- 除了问题一外,其余的都与具体任务无关,在其他分布式计算的场合也会遇 到,而且解决起来都相当困难
- 问题一中的分组、统计,在很多数据处理场合也会涉及,只是具体方式不同
- 如果能把这些问题的解决方案封装到一个计算框架中,则可大大简化这类应 用程序的开发
什么才是大数据计算框架?
- 计算框架: 一种抽象,在其中软件提供相应的通用功能供用户编写代码以实 现具体功能,从而形成面向应用的软件。
- 大数据计算框架:面向大数据的计算框架。
- 优势 –> 无需造轮子 – 提高开发效率 – 降低开发成本 – 降低运维难度 – 提高代码执行的可靠性
大数据计算框架的分类
- 如果不涉及上面提出的第8、9两个问题,则属于批处理框架。批处理框架 重点关心数据处理的吞吐量,又可分为非迭代式和迭代式两类,迭代式包括 DAG(有向无环图)、图计算等模型
- 若针对第8个问题提出来应对方案,则分两种情况:如果重点关心处理的实 时性,则属于流计算框架;如果侧重于避免重复计算,则属于增量计算框架
- 如果重点关注的是第9个问题,则属于交互式分析框架
总结
下一次就从Hadoop作为第一个计算框架的例子开始分析,敬请期待~~