您的位置:首页 > 其它

如何在MapReduce的各任务之间共享数据

2016-01-18 14:18 169 查看
我们的作业在提交给JobTracker之后,由JobTracker分发到各个TaskTracker节点去执行,有些TaskTracker节点运行Mapper任务,有些TaskTracker节点运行Reducer任务。在任务运行过程中,可能需要用到外部的数据或者文件,比如指定某个运行时参数的值,或者使用非常小的配置文件,怎么把这些值或者文件传递给各个TaskTracker哪?

1、通过Configuration在Job中进行相应的设置,在Map或者Reduce进行读取。

Configuration conf=new COnfiguration()

conf.set(String name,String value);

conf.setBoolean(String
name,Boolean value);

conf.setInt(String
name,int value);

conf.setFloat(String
name,Float value);

conf.setLong(String
name,Long value);

conf.get(String
name);

conf.getInt(String name);

2、通过DistributedCache进行文件的共享

在job中配置

job.setCacheFile(Path path);
在Maper之间的setup方法中一般使用
Path[] DistributedCache.getLocalCacheFiles(conf);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: