`

DistributedCache In Hadoop

 
阅读更多

分布式缓存在MapReduce中称之为DistributedCache,它可以方便map task之间或者reduce task之间共享一些信息,同时也可以将第三方包添加到其classpath路径中去。Hadoop会将缓存数据分发到集群的所有准备启动的节点上,复制到在mapred.temp.dir中配置的目录。

 

 

2、DistributedCache的使用

DistributedCache的使用的本质其实是添加Configuraton中的属性:mapred.cache.{files|archives}。图方便的话,可以使用DistributedCache类的静态方法。

不省事法:

conf.set("mapred.cache.files", "/data/data");

conf.set("mapred.cache. archives", "/data/data.zip");

省事法:

DistributedCacheaddCacheFile(URI, Configuration)

DistributedCache.addArchiveToClassPath(Path, Configuration, FileSystem)

需要注意的是,上面几行代码需要写在Job类初始化之前,否则在运行会中找不到文件(被折磨了很长时间),因为Job初始化时将传入Configuration对象克隆一份给了JobContext。

在MapReduce的0.21版本以后的org.apache.hadoop.mapreduce均移到org.apache.hadoop.mapred包下。但文档中提供的configure方法是重写的MapReduceBase中的,而新版本中map继承于mapper,reduce继承于reducer,所以configure方法一律改成了setup。要获得cache数据,就得在map/reduce task中的setup方法中取得cache数据,再进行相应操作:

 
  1. @Override 
  2. protected void setup(Context context) throws IOException,  
  3.         InterruptedException {  
  4.     super.setup(context);  
  5.     URI[] uris = DistributedCache.getCacheFiles(context  
  6.                 .getConfiguration());  
  7.     Path[] paths = DistributedCache.getLocalCacheFiles(context  
  8.                 .getConfiguration());  
  9.     // TODO  
  10. }  

而三方库的使用稍微简单,只需要将库上传至hdfs,再用代码添加至classpath即可:

DistributedCache.addArchiveToClassPath(new Path("/data/test.jar"), conf);

3、symlink的使用

Symlink其实就是hdfs文件的一个快捷方式,只需要在路径名后加入#linkname,之后在task中使用linkname即使用相应文件,如下:

conf.set("mapred.cache.files", "/data/data#mData");

conf.set("mapred.cache. archives", "/data/data.zip#mDataZip");

 
  1. @Override 
  2. protected void setup(Context context) throws IOException,  
  3.         InterruptedException {  
  4.     super.setup(context);  
  5.     FileReader reader = new FileReader(new File("mData"));  
  6.     BufferedReader bReader = new BufferedReader(reader);  
  7.     // TODO  

在使用symlink之前,需要告知hadoop,如下:

conf.set("mapred.create.symlink", "yes"); // 是yes,不是true

DistributedCache.createSymlink(Configuration)

4、注意事项

1)缓存文件(数据、三方库)需上传至HDFS,方能使用;

2)缓存较小的情况下,建议将数据全部读入相应节点内存,提高访问速度;

3)缓存文件是read-only的,不能修改。若要修改得重新输出,将新输出文件作为新缓存进入下一次迭代。

 

分享到:
评论

相关推荐

    基于Hadoop的研究及性能分析.pdf

    DistributedCache是Hadoop的一项功能,允许缓存文件到各个节点,减少数据传输。通过减少mapper输出的数据,可以降低网络通信开销,从而优化整个MapReduce作业的执行效率。 大数据的四大特性——海量、多样性、高速...

    基于Hadoop的研究及分析性能

    DistributedCache是Hadoop中的一个功能,允许在所有mapper和reducer之间共享文件,如库或配置文件。文中提出了一个基于DistributedCache的改进算法,通过减少mapper输出的数据量,从而减轻网络传输的负担,提升系统...

    基于Hadoop的研究及性能分析.docx

    DistributedCache是Hadoop提供的一种分布式缓存机制,允许应用程序共享和复用大文件或公共资源。文中提出了一种基于DistributedCache的改进算法,通过减少mapper输出的数据,降低网络传输负载,从而优化整体性能。 ...

    DistributedCache类使用

    在大数据处理框架Hadoop中,`DistributedCache`类是一个非常实用且强大的工具,主要用于缓存文件系统中的数据文件,以实现跨多个节点的数据共享。这对于提高分布式计算任务的性能至关重要,尤其是在进行复杂的连接...

    Hadoop实战-第2版-陆嘉恒.pdf

    1. Hadoop简介2.... Hadoop在yahoo的应用附录A: 云计算在线监测平台附录B: Hadoop安装、运行、使用说明附录C:使用DistributedCache的MapReduce程序附录D:使用ChainMapper和ChainReducer的MapReduce程序

    Hadoop实战-第二版-陆嘉恒 (2012版)

    1. Hadoop简介2.... Hadoop在yahoo的应用附录A: 云计算在线监测平台附录B: Hadoop安装、运行、使用说明附录C:使用DistributedCache的MapReduce程序附录D:使用ChainMapper和ChainReducer的MapReduce程序

    基于Hadoop的研究及性能分析 (2).pdf

    基于Hadoop的研究及性能分析 摘要:在大数据时代,本文对Hadoop技术进行了深入的研究,并对其性能进行了分析。首先,介绍了Hadoop的工作原理和核心技术MapReduce。然后,讨论了Hadoop推测执行算法和SALS推测执行...

    hadoop教程

    DistributedCache 是 Map/Reduce 框架中的一个概念,负责缓存和共享作业中的中间结果,以便提高作业的执行效率。 Tool 是 Map/Reduce 框架中的一个组件,负责提供一些有用的功能,例如数据压缩和解压缩、数据排序和...

    Hadoop Map Reduce教程

    - **缓存文件**:利用 Hadoop 的 DistributedCache 功能将常用的小文件缓存在节点上,避免多次读取。 - **Combiner 使用**:在 Map 端使用 Combiner 函数预先聚合数据,减少网络传输量。 #### 五、案例分析 - **...

    XXF.BaseService.DistributedCache-BSF-DistributedCache.zip

    《XXF.BaseService.DistributedCache-BSF-DistributedCache.zip:深入理解.NET分布式缓存中间件》 在当今的互联网环境中,随着应用规模的扩大,单机缓存已无法满足性能和高可用性的需求,因此分布式缓存成为了必要...

    基于Hadoop的研究及性能分析 (2).docx

    基于Hadoop的研究及性能分析 本文对Hadoop的研究及性能分析,首先介绍了Hadoop及其核心技术MapReduce的工作原理。然后,详细讨论了Hadoop推测执行算法和SALS推测执行算法,并对它们的性能进行分析。最后,分析了...

    Hadoop实战

    905.2.2 基于DistributedCache的复制联结 985.2.3 半联结:map侧过滤后在reduce侧联结 1015.3 创建一个Bloom filter 1025.3.1 Bloom filter做了什么 1025.3.2 实现一个Bloom filter 1045.3.3 Hadoop 0.20以上版本的...

    Hadoop_MapReduce教程

    - **DistributedCache**:DistributedCache 可以在作业运行时将一些辅助文件分发到各个 TaskTracker 上,便于 Mapper 或 Reducer 访问。 - **Tool**:Tool 是一个抽象类,可以用来构建自定义的命令行工具。 - **...

    通用大数据存储和分析处理平台-Hadoop.docx

    - **DistributedCache**:Hadoop的功能,用于缓存文件到各个工作节点,提高效率。 - **Hadoop档案**:归档工具,用于合并小文件以优化HDFS的存储效率。 - **安全性**:Hadoop支持安全模式,提供了权限管理、身份...

    6.Hadoop入门进阶课程_第6周_MapReduce应用案例.pdf

    在这种场景中,小表可以直接放入内存,通过DistributedCache类将小表复制多份,每个map任务执行时,内存中都有小表的一份副本,从而避免了不必要的数据传输,优化了join操作。 为了便于读者理解和操作,文档还介绍...

Global site tag (gtag.js) - Google Analytics