YARN中的分布式缓存功能

时间:2014-11-28 09:08:19

标签: hadoop

目前我正在使用MAP-REDUCE YARN框架。并在伪分布式模式下使用hadoop。 我想使用"分布式缓存"这里的功能是添加一些文件到缓存并在我的map函数中使用它。我怎样才能做到这一点。

1 个答案:

答案 0 :(得分:2)

如何将文件添加到分布式缓存中

  • 使用hadoop选项

hadoop jar <application jar> <main class> <input> <output> -files <absolute path to distributed cache file>
  • 使用分布式缓存API:

job.addCacheFile(uri); 

hadoop -files选项或分布式缓存API将缓存文件复制到所有任务节点,并使其在执行期间可用于映射器/缩减器。

如何访问分布式缓存:

覆盖Mapper / reducer中的setup方法,并从上下文中调用getCacheFiles。 示例代码如下:

    @Override
    protected void setup(Context context)
            throws IOException, InterruptedException {

        Path[] localPaths = context.getCacheFiles();
        if (localPaths.length == 0) {
            throw new FileNotFoundException("Distributed cache file not found.");
        }
        File localFile = new File(localPaths[0].toString());
        // code to process cache file

    }

context.getCacheFiles方法返回Configuration中设置的文件的URI数组。