【发布时间】:2013-02-24 01:40:49
【问题描述】:
我正在运行一些实验来测试(通过 map-reduce)读取和处理存储在 HDFS 上的具有不同参数的数据所需的时间。我使用 pig 脚本来启动 map-reduce 作业。由于我经常使用同一组文件,因此我的结果可能会因为文件/块缓存而受到影响。
我想了解在 map-reduce 环境中使用的各种缓存技术。
假设存储在 HDFS 上的文件foo(包含一些要处理的数据)占用1 HDFS 块,并存储在机器STORE 中。在 map-reduce 任务期间,机器 COMPUTE 通过网络读取该块并对其进行处理。缓存可以发生在两个级别:
- 缓存在机器内存
STORE(内存中文件缓存) - 缓存在机器
COMPUTE的内存/磁盘中。
我很确定 #1 缓存会发生。我想确保是否发生类似#2 的事情?从here 的帖子来看,似乎没有进行客户端级别的缓存,因为在刷新缓存之前,同一台机器上不太可能再次需要COMPUTE 缓存的块。
此外,hadoop 分布式缓存是否仅用于将任何特定于应用程序的文件(不是特定于任务的输入数据文件)分发到所有任务跟踪器节点?还是任务特定的输入文件数据(如foo 文件块)缓存在分布式缓存中?我假设local.cache.size 和相关参数只控制分布式缓存。
请澄清。
【问题讨论】:
标签: caching hadoop mapreduce hdfs