Hadoop中的分布式缓存概念



我的问题是关于专门针对Hadoop的分布式缓存的概念,以及它是否应该被称为分布式缓存。分布式缓存的传统定义是"分布式缓存跨越多个服务器,因此它可以在大小和事务容量上增长"。

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

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

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

感谢

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

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

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

我也同意它不是真正的"Distributed cache"。但我相信YoungHobbit关于IO操作不打磁盘的效率的评论。

根据Apache文档,我在这个机制中看到的唯一优点是:

在从属节点上执行作业的任何任务之前,框架将把必要的文件复制到该节点上。它的效率源于这样一个事实,即每个作业只复制一次文件,并且能够缓存从机上未归档的归档文件。

请注意,DistributedCache自2.6.0版本以来一直被弃用。您必须在Job类中使用新的API才能实现相同的功能。

相关内容

  • 没有找到相关文章