数据块缓存技术

x6h2sr28  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(406)

我正在运行一些实验来测试(通过map reduce)读取和处理存储在hdfs上的具有不同参数的数据所需的时间。我使用pig脚本启动map reduce作业。由于我经常使用同一组文件,我的结果可能会因为文件/块缓存而受到影响。
我想了解map reduce环境中使用的各种缓存技术。
假设一个文件 foo (包含一些要处理的数据)存储在hdfs上 1 hdfs块并将其存储在机器中 STORE . 在Map缩小任务中,机器 COMPUTE 通过网络读取并处理该块。缓存可以在两个级别进行:
缓存在机器的内存中 STORE (内存文件缓存)
缓存在机器的内存/磁盘中 COMPUTE .
我很肯定 #1 缓存发生。我想确定 #2 发生?从这里的帖子来看,似乎没有进行客户端级缓存,因为缓存的块不太可能由 COMPUTE 在刷新缓存之前,在同一台计算机中再次需要。
另外,hadoop分布式缓存是否仅用于将任何特定于应用程序的文件(而不是特定于任务的输入数据文件)分发到所有task tracker节点?或者是特定于任务的输入文件数据(如 foo 文件块)缓存在分布式缓存中?我想 local.cache.size 相关参数只控制分布式缓存。
请澄清。

avwztpqn

avwztpqn1#

hdfs中唯一应用的缓存是操作系统缓存,以最小化磁盘访问。因此,如果您从datanode访问一个块,如果那里没有发生任何其他事情,它很可能会被缓存。
在您的客户端,这取决于您如何处理块。如果您直接将其写入磁盘,那么您的客户机操作系统很可能会缓存它。
分布式缓存只用于jar和文件,这些jar和文件需要分布在作业启动任务的集群中。因此,这个名字有点误导,因为它“缓存”什么都没有。

相关问题