“代码移至数据”而不是数据移至代码的原理是什么?

问题描述 投票:0回答:3

在最近关于分布式处理和流媒体的讨论中,我遇到了“代码移动到数据”的概念。有人可以帮忙解释一下吗?该短语的参考是MapReduceWay

就 Hadoop 而言,它在一个问题中陈述了,但仍然无法以技术不可知的方式找出原理的解释。

hadoop architecture mapreduce distributed-computing design-principles
3个回答
13
投票

基本思想很简单:如果代码和数据位于不同的机器上,则必须将其中一个移动到另一台机器上,然后才能在数据上执行代码。 如果代码比数据小,那么如果所有机器都同样快速且代码兼容,则将代码发送到保存数据的机器比发送相反的方式更好。 [可以说,您可以根据需要发送源代码和 JIT 编译]。

在大数据的世界中,代码几乎总是小于数据。

在许多超级计算机上,数据分布在许多节点上,整个应用程序的所有代码都复制在所有节点上,正是因为整个应用程序与本地存储的数据相比很小。 然后任何节点都可以运行适用于其保存的数据的程序部分。 无需按需发送代码。


1
投票

我也刚刚看到这句话“移动计算比移动数据更便宜”(来自Apache Hadoop文档),经过一番阅读后我认为这指的是数据局部性的原则。

数据局部性是一种任务调度策略,旨在基于通过网络移动数据成本高昂的观察来优化性能,因此,在计算/数据节点空闲时选择优先执行哪个任务时,将优先考虑该任务将操作空闲节点或其附近的数据。

这个(来自延迟调度:实现 集群调度中的局部性和公平性,Zaharia 等人,2010)解释得很清楚:

Hadoop 的默认调度程序按照 FIFO 顺序运行作业,具有五个优先级。当调度程序收到表明地图的心跳时 或者减少槽是空闲的,它按照优先级和提交时间的顺序扫描作业,以找到具有所需类型任务的作业。对于地图, Hadoop 使用 Google 的 MapReduce [18] 中的局部性优化:选择作业后,调度程序贪婪地选择 中的映射任务 数据最接近从站的作业(如果可能的话在同一节点上,否则在同一机架上,或者最后在远程机架上)。

请注意,Hadoop 跨节点复制数据这一事实增加了任务的公平调度(复制次数越高,任务在下一个空闲节点上拥有数据并因此被选择运行下一个的概率就越高)。


0
投票

查看我的出版物

https://www.researchgate.net/publication/333838273_ClientNet_Cluster_an_Alternative_of_Transferring_Big_Data_Files_by_Use_of_Mobile_Code

ClientNet集群是使用移动代码传输大数据文件的替代方案

摘要:

大数据已成为商业领域和科学应用领域的一个重要问题。随着数据的增长和数据入口点的扩展,它变得更加复杂。这些点指的是在极短的时间内生成大量数据的远程和本地源。这也可能指最终用户设备,包括计算机、传感器和无线设备。就科学应用而言,例如地球物理应用或实时天气预报需要大量数据和复杂的数学计算。此类应用程序会生成大量数据,需要通过传统计算机网络进行传输。当从远程位置传输或下载大量数据(文件或对象)时,大数据应用程序就会出现问题。由于数据不断向文件中添加新数据,并且与文件增长相比,远程计算机的下载速度仍然较慢,因此从大型数据文件/集实时得出的结果变得过时。本文解决了这个问题,并通过远程计算机的 ClientNet 集群(专业计算机集群)提供了可能的解决方案,作为在网络硬约束下处理实时数据分析的替代方案之一。这个想法是将用于分析处理的代码移动到远程可用的大尺寸文件,并将结果返回到分布式远程位置。当需要从分布式位置进行处理时,大数据文件不需要在网络上移动来上传或下载。

© www.soinside.com 2019 - 2024. All rights reserved.