1.4 分布式内存计算

更新于 2026年10月10日 版权声明
1.4 分布式内存计算

地理要素的几何逼近是一个计算密集型问题,无论是在给定误差的条件下求最小数据量的近似,还是在给定数据量的条件下求得最小误差的近似,寻找最优解没有有效的多项式时间算法。面向交互式可视化的近似查询需要对地理要素数据集进行预处理以形成特定结构的样本集,而预处理过程具有计算密集与I/O密集的特点,可以考虑采用分布式内存计算方法以提高数据预处理的速度。

分布式计算是利用网络将成千上万的计算机连接起来,组成一台虚拟的超级计算机,完成单台计算机无法完成的超大规模的计算问题。图1-5列举了几种具有代表性的计算系统和框架。

图示

图1-5 分布式计算的典型模式

(1)批处理计算

批处理计算是一种针对海量数据的离线计算模式,先将数据进行存储,再对存储的静态数据集中处理。批处理计算时效性不高,但可以解决大数据的线下处理任务,对于空间大数据中非实时的计算类型都可以视为批处理任务。批处理计算的典型代表是MapReduce,模型通过单输入及Map、Reduce两个阶段进行数据处理,使用最为广泛的开源版本为Hadoop MapReduce。Hadoop是经典的大数据批处理计算架构,由分布式文件系统(Hadoop Distributed File System,HDFS)负责静态数据的存储,并通过Map Reduce将计算逻辑分配到各数据节点进行数据计算和价值发现。

Map Reduce模型的框架主要包括数据存储(Input)、数据映射(Map)、中间结果复制(Shuffle)、中间结果排序(Sort)、中间结果归并(Reduce)和数据输出(Output)六个部分。如图1-6所示,①数据存储表示将海量数据进行存储,并将存储的数据分割为多个切片,以键值对的形式进行解析;②数据映射是指生成若干对应的新的键值对;③中间结果复制指将相同键的中间结果汇聚到同一计算节点;④中间结果排序表示将中间结果按照键名进行分组排列;⑤中间结果归并表示将重新排序后的中间结果进行归并,调用用户自定义的归并算法,归并运算后输出最终的键值对;⑥数据输出表示将输出的键值对写入存储系统的输出目录中。

图示

图1-6 MapReduce系统架构(https://www.daowen.com)

(2)内存计算

内存计算是一种提高大数据计算性能的分布式计算,严格意义上并不属于一种计算模式,内存计算的最大改变在于处理器不需要从外部存储器获取数据输入状况,参与计算的输入数据和中间结果等可以存储于内存中,因此,系统I/O次数大大减少,较大程度地提高了计算性能。内存计算主要用于数据密集型计算的处理,针对密集大数据的处理,需要极高的数据传输及处理速率。因此在内存计算模式中,数据的存储与传输取代了计算任务成为新的核心。Spark是分布式内存计算的一个典型系统,如图1-7所示,通过分布式弹性数据集技术可以实现内存共享,并以内存计算的方式实现高速的大数据处理,具有优异的计算性能,因此Spark相比于Map Reduce来说在I/O方面有很大的优势。内存计算是未来大数据计算的主要发展方向之一,能较大程度上提高系统的整体计算性能。

图示

图1-7 Spark项目结构图

Spark基于Hadoop基础框架,包括Spark Streaming(实时流式计算)、SparkSQL(大数据查询引擎)、Graphx(图计算)、MLLib(机器学习)。

Spark架构采用分布式计算的Master-Slave模型,Master是对应集群中的含有Master进程的节点,并作为整个集群控制器,负责集群的正常运转,Slave是集群中含有Worker进程的节点,是计算节点,接收Master的命令并进行状态汇报,Executor负责任务执行,Client作为用户的客户端负责提交应用,Dirver负责控制应用的执行,SparkContext为整个应用的上下文,分布式弹性数据集(Resilient Distributed Datasets,RDD)为Spark的基本计算单元,DAGScheduler为有向无环图调度器,TaskScheduler为任务调度器,Spark Env是线程级别的上下文,存储运行时的重要组件应用,如图1-8所示。

图示

图1-8 Spark架构图

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)