我的问题是关于专门针对Hadoop的分布式缓存的概念以及它是否应该被称为分布式缓存。传统的分布式缓存定义是“分布式缓存跨越多个服务器,以便它可以增加大小和事务容量”。
在hadoop中不是这样,因为分布式缓存被分发到运行任务的所有节点,即驱动程序代码中提到的相同文件。
这不应该被称为复制缓存。如果我们按照传统的分布式缓存定义,所有节点上的缓存的交集应为null(或接近它)。但是对于hadoop,交集的结果与所有节点中存在的文件相同。
我的理解是正确还是我错过了什么?请指导。
由于
答案 0 :(得分:1)
任何Cache
的一般理解和概念是使数据在内存中可用并避免命中磁盘以读取数据。因为从磁盘读取数据比从内存中读取更昂贵。
现在让我们对Hadoop
生态系统进行类似的比喻。这里的磁盘是HDFS
,memory
是本地文件系统,其中运行的是实际任务。在应用程序的生命周期中,可能有多个任务在同一节点上运行。因此,当在节点中启动第一个任务时,它将从HDFS
获取数据并将其放入本地系统。现在,同一节点上的后续任务将不会再次获取相同的数据。这样,它将节省从HDFS
获取数据与从本地文件系统获取数据的成本。这是Distributed Cache
框架中MapReduce
的概念。
数据的大小通常很小,可以加载到Mapper
内存中,通常只有几MB。
答案 1 :(得分:1)