Hadoop-数据块缓存技术



我正在运行一些实验,以比较读取和处理存储在HDFS上的不同参数的数据所需的时间(通过map reduce)。我使用pig脚本来启动map reduce作业。由于我经常使用同一组文件,我的结果可能会因为文件/块缓存而受到影响。

我想了解在map reduce环境中使用的各种缓存技术。

假设存储在HDFS上的文件foo(包含一些要处理的数据)占用1 HDFS块,并存储在机器STORE中。在地图缩减任务中,机器COMPUTE通过网络读取该块并对其进行处理。缓存可以在两个级别上发生:

  1. 缓存在机器STORE的内存中(内存文件缓存中)
  2. 缓存在机器COMPUTE的内存/磁盘中

我非常确信#1缓存会发生。我想确定是否会发生类似#2的事情?从这里的帖子来看,似乎没有进行客户端级缓存,因为在刷新缓存之前,COMPUTE缓存的块不太可能在同一台机器中再次被需要。

此外,hadoop分布式缓存是否仅用于将任何特定于应用程序的文件(而不是特定于任务的输入数据文件)分发到所有任务跟踪器节点?还是特定于任务的输入文件数据(如foo文件块)缓存在分布式缓存中?我假设local.cache.size和相关参数仅控制分布式缓存。

请澄清。

HDFS中唯一应用的缓存是操作系统缓存,以最大限度地减少磁盘访问。因此,如果你从数据节点访问一个块,如果那里没有其他事情发生,它很可能会被缓存。

在您的客户端,这取决于您对块所做的操作。如果您直接将其写入磁盘,则很可能是您的客户端操作系统缓存了它

分布式缓存只用于需要在作业启动任务的集群中分布的jar和文件。因此,这个名字有点误导,因为它什么都不"缓存"。

相关内容

  • 没有找到相关文章

最新更新