分布式并行计算基本原理

简介: 朴素的分布式并行计算理念

大数据的任务除了存储以外,更加重要的时计算。因此当完成了分布式存储的设计之后,不妨再来尝试设计一款分布式并行计算的框架。
对于计算而言,场景是非常众多的,这里以最简单的数字累加为例。在基于前一节的分布式存储框架之上,文件已经进行了拆分存储到不同的磁盘,每个磁盘代表着一台单独的计算机,拥有着单独的cpu和内存进行计算,因此,对于累加的操作而言,单台电脑计算的情况下,纵使计算机能够完成数据的存储,基于相同cpu和内存的限制,计算速度仍然要比每台计算机计算自身磁盘上的文件,再将计算结果进行汇总慢得多。
总的来说,依靠分布式存储的机制,计算时可以依靠每台计算机自身的计算资源并行计算,摆脱计算资源不足的困境。因此,在解决了海量数据分布式存储的情况下,也同样通过分布式并行计算的方式解决了计算的效率问题,这也就是Hadoop基础计算框架MapReduce的雏形。
MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。
MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。
MapReduce的核心思想是“分而治之”。所谓“分而治之”就是把一个复杂的问题,按照一定的“分解”方法分为等价的规模较小的若干部分,然后逐个解决,分别找出各部分的结果,把各部分的结果组成整个问题的结果,这种思想来源于日常生活与工作时的经验,同样也完全适合技术领域。
为了更好地理解“分而治之”思想,先来看一个生活中的例子。例如,某大型公司在全国设立了分公司,假设现在要统计公司一年的营收情况制作年报,有两种统计方式。第一种方式是全国分公司将自己的账单数据发送至总部,由总部统一计算公司当年的营收报表;第二种方式是采用分而治之的思想,也就是说,先要求分公司各自统计营收情况﹐再将统计结果发给总部进行统一汇总计算。这两种方式相比,显然第二种方式的策略更好,工作效率更高。
MapReduce作为一种分布式计算模型,它主要用于解决海量数据的计算问题。使用MapReduce分析海量数据时,每个MapReduce程序被初始化为一个工作任务,每个工作任务可以分为Map 和 Reduce两个阶段,具体介绍如下。
Map阶段:负责将任务分解,即把复杂的任务分解成若干个“简单的任务”来并行处理,但前提是这些任务没有必然的依赖关系,可以单独执行任务。
Reduce阶段:负责将任务合并,即把Map 阶段的结果进行全局汇总。
使用MapReduce执行计算任务的时候,每个任务的执行过程都会被分为两个阶段,分别是 Map和 Reduce,其中Map阶段用于对原始数据进行处理,Reduce阶段用于对Map阶段的结果进行汇总﹐得到最终结果。
MapReduce 编程模型借鉴了函数式程序设计语言的设计思想,其程序实现过程是通过map()和reduce()函数来完成的。从数据格式上来看,map()函数接收的数据格式是键值对,产生的输出结果也是键值对形式, reduce()函数会将map()函数输出的键值对作为输入,把相同key值的value进行汇总,输出新的键值对。
MapReduce简易数据流模型说明如下:
(1)将原始数据处理成键值对<K1,V1>形式。
(2)将解析后的键值对<K1,V1>传给map()函数, map()函数会根据映射规则,将键值对<Kl,Vl>映射为一系列中间结果形式的键值对<K2,V2>。
(3)将中间形式的键值对<K2,V2>形成<K2,{ V2,…}>形式传给reduce()函数处理,把具有相同key 的value合并在一起,产生新的键值对<K3,V3>,此时的键值对<K3,V3>就是最终输出的结果。

相关文章
|
7月前
|
机器学习/深度学习 分布式计算 数据处理
分布式计算框架:并行力量的交响乐章
分布式计算框架如Apache Spark解决单机计算挑战,通过拆分任务到多机并行处理提升效率。Spark以其内存计算加速处理,支持批处理、查询、流处理和机器学习。以下是一个PySpark统计日志中每日UV的示例,展示如何利用SparkContext、map和reduceByKey进行数据聚合分析。这些框架的运用,正改变大数据处理领域,推动数据分析和机器学习的边界。【6月更文挑战第18天】
263 2
|
2月前
|
机器学习/深度学习 边缘计算 人工智能
第二届边缘计算与并行、分布式计算国际学术会议(ECPDC 2025) 2025 2nd international Conference on Edge Computing, Parallel and Distributed Computing
第二届边缘计算与并行、分布式计算国际学术会议(ECPDC 2025) 2025 2nd international Conference on Edge Computing, Parallel and Distributed Computing 机器学习 计算学习理论 数据挖掘 科学计算 计算应用 数字图像处理 人工智能
69 6
|
2月前
|
存储 Dubbo Java
分布式 RPC 底层原理详解,看这篇就够了!
本文详解分布式RPC的底层原理与系统设计,大厂面试高频,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
分布式 RPC 底层原理详解,看这篇就够了!
|
1月前
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
66 4
|
2月前
|
存储 分布式计算 负载均衡
分布式计算模型和集群计算模型的区别
【10月更文挑战第18天】分布式计算模型和集群计算模型各有特点和优势,在实际应用中需要根据具体的需求和条件选择合适的计算架构模式,以达到最佳的计算效果和性能。
82 2
|
3月前
|
分布式计算 Hadoop 网络安全
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
47 1
|
3月前
|
存储 机器学习/深度学习 缓存
Hadoop-07-HDFS集群 基础知识 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
Hadoop-07-HDFS集群 基础知识 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
59 1
|
3月前
|
分布式计算 资源调度 Hadoop
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
64 1
|
3月前
|
存储 缓存 数据处理
深度解析:Hologres分布式存储引擎设计原理及其优化策略
【10月更文挑战第9天】在大数据时代,数据的规模和复杂性不断增加,这对数据库系统提出了更高的要求。传统的单机数据库难以应对海量数据处理的需求,而分布式数据库通过水平扩展提供了更好的解决方案。阿里云推出的Hologres是一个实时交互式分析服务,它结合了OLAP(在线分析处理)与OLTP(在线事务处理)的优势,能够在大规模数据集上提供低延迟的数据查询能力。本文将深入探讨Hologres分布式存储引擎的设计原理,并介绍一些关键的优化策略。
162 0
|
5月前
|
分布式计算 并行计算 大数据
NumPy 并行计算与分布式部署
【8月更文第30天】随着数据量的不断增长,传统的单机计算模型已经难以满足对大规模数据集处理的需求。并行和分布式计算成为了处理这些大数据集的关键技术。虽然 NumPy 本身并不直接支持并行计算,但可以通过结合其他库如 Numba 和 Dask 来实现高效的并行和分布式计算。
49 1