我的问题是专门针对Hadoop的分布式缓存的概念,是否应该叫分布式缓存。分布式缓存的常规定义是“分布式缓存跨越多个服务器,因此它的大小和事务容量可以增长”。
这在 hadoop 中不是真的,因为分布式缓存分布到运行任务的所有节点,即驱动程序代码中提到的相同文件。
这不应该被称为复制缓存。如果我们按照传统的分布式缓存定义,所有节点上缓存的交集应该为空(或接近)。但是对于 hadoop,交集的结果是存在于所有节点中的同一个文件。
我的理解是正确的还是我遗漏了什么?请指导。
谢谢
最佳答案
任何Cache
的一般理解和概念是使数据在内存中可用,避免在读取数据时碰到磁盘。因为从磁盘读取数据比从内存读取数据成本更高。
现在让我们对 Hadoop
生态系统做同样的类比。这里的磁盘是您的 HDFS
而 memory
是实际任务运行的本地文件系统。在应用程序的生命周期中,可能有多个任务在同一个节点上运行。因此,当第一个任务在节点中启动时,它将从 HDFS
中获取数据并将其放入本地系统。现在同一节点上的后续任务不会再次获取相同的数据。这样一来,与从本地文件系统获取数据相比,它可以节省从 HDFS
获取数据的成本。这就是MapReduce
框架中Distributed Cache
的概念。
数据的大小通常足够小,可以加载到 Mapper
内存中,通常为几 MB。
关于hadoop - Hadoop 中的分布式缓存概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34147876/