hadoop - Hadoop 中的分布式缓存概念

标签 hadoop caching mapreduce distributed-computing

我的问题是专门针对Hadoop的分布式缓存的概念,是否应该叫分布式缓存。分布式缓存的常规定义是“分布式缓存跨越多个服务器,因此它的大小和事务容量可以增长”。

这在 hadoop 中不是真的,因为分布式缓存分布到运行任务的所有节点,即驱动程序代码中提到的相同文件。

这不应该被称为复制缓存。如果我们按照传统的分布式缓存定义,所有节点上缓存的交集应该为空(或接近)。但是对于 hadoop,交集的结果是存在于所有节点中的同一个文件。

我的理解是正确的还是我遗漏了什么?请指导。

谢谢

最佳答案

任何Cache的一般理解和概念是使数据在内存中可用,避免在读取数据时碰到磁盘。因为从磁盘读取数据比从内存读取数据成本更高。

现在让我们对 Hadoop 生态系统做同样的类比。这里的磁盘是您的 HDFSmemory 是实际任务运行的本地文件系统。在应用程序的生命周期中,可能有多个任务在同一个节点上运行。因此,当第一个任务在节点中启动时,它将从 HDFS 中获取数据并将其放入本地系统。现在同一节点上的后续任务不会再次获取相同的数据。这样一来,与从本地文件系统获取数据相比,它可以节省从 HDFS 获取数据的成本。这就是MapReduce框架中Distributed Cache的概念。

数据的大小通常足够小,可以加载到 Mapper 内存中,通常为几 MB。

关于hadoop - Hadoop 中的分布式缓存概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34147876/

相关文章:

Hadoop 仅使用主节点处理数据

javascript - 如何在 MongoDB MapReduce JavaScript 查询中引用对象数组中对象的每个属性?

database - 快速从CSV对DB表进行数据同步

json - 为嵌套的json数据创建Hive表

hadoop - (评估):export:1: not valid in this context

asp.net - ASP.NET中Cache.Insert的默认持续时间

php - 在维护授权信息的同时积极缓存生成的内容

javascript - Google Apps 脚本 - 永久缓存

hadoop - 如果我只有一个工作节点,处理文件需要多长时间?

hadoop - 如何在 Pig 中过滤时间戳