`
adoda
  • 浏览: 1701 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

Hadoop 中 DistributedCache 的应用

 
阅读更多
    前一段时间在写一个MapReduce程序时,需要用到一些第三方的Jar包,于是运行程序时需要把这些Jar包一一上传到所有Hadoop节点。
    当集群中增加一个节点或换一套集群环境时,又需要重新布置一遍这些Jar包,这样不仅费时,而且还容易遗漏、出错。并且,当我不再需要这些Jar包时,又得一个一个节点去清理。非常耗时。
    后来查阅相关资料,发现Hadoop提供一个DistributedCache,用它可以把HDFS中的文件加载到DistributedCache中,当我们需要这些文件时,DistributedCache自动把这些文件下载到集群中节点的本地存储上(mapred.local.dir)。这样就不需要一一布置第三方的Jar包,并且Hadoop集群增加节点也不需要再上传了。
    DistributedCache的使用方法,参考http://hadoop.apache.org/common/docs/r0.20.2/api/org/apache/hadoop/filecache/DistributedCache.html
   
// Setting up the cache for the application
     
     1. Copy the requisite files to the FileSystem:
     
     $ bin/hadoop fs -copyFromLocal lookup.dat /myapp/lookup.dat  
     $ bin/hadoop fs -copyFromLocal map.zip /myapp/map.zip  
     $ bin/hadoop fs -copyFromLocal mylib.jar /myapp/mylib.jar
     $ bin/hadoop fs -copyFromLocal mytar.tar /myapp/mytar.tar
     $ bin/hadoop fs -copyFromLocal mytgz.tgz /myapp/mytgz.tgz
     $ bin/hadoop fs -copyFromLocal mytargz.tar.gz /myapp/mytargz.tar.gz
     
     2. Setup the application's JobConf:
     
     JobConf job = new JobConf();
     DistributedCache.addCacheFile(new URI("/myapp/lookup.dat#lookup.dat"), 
                                   job);
     DistributedCache.addCacheArchive(new URI("/myapp/map.zip", job);
     DistributedCache.addFileToClassPath(new Path("/myapp/mylib.jar"), job);
     DistributedCache.addCacheArchive(new URI("/myapp/mytar.tar", job);
     DistributedCache.addCacheArchive(new URI("/myapp/mytgz.tgz", job);
     DistributedCache.addCacheArchive(new URI("/myapp/mytargz.tar.gz", job);
     
     3. Use the cached files in the Mapper
     or Reducer:
     
     public static class MapClass extends MapReduceBase  
     implements Mapper<K, V, K, V> {
     
       private Path[] localArchives;
       private Path[] localFiles;
       
       public void configure(JobConf job) {
         // Get the cached archives/files
         localArchives = DistributedCache.getLocalCacheArchives(job);
         localFiles = DistributedCache.getLocalCacheFiles(job);
       }
       
       public void map(K key, V value, 
                       OutputCollector<K, V> output, Reporter reporter) 
       throws IOException {
         // Use data from the cached archives/files here
         // ...
         // ...
         output.collect(k, v);
       }
     }

DistributedCache 不光对第三方Jar有用,对于Read-Only的数据都可以,这样也扩展了我们编写MapReduce程序的思路。
0
3
分享到:
评论

相关推荐

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

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

    Hadoop Map Reduce教程

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

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

    基于Hadoop的研究及性能分析 本文对Hadoop的研究及性能分析,首先介绍了Hadoop及其核心技术MapReduce的...本文对Hadoop技术的研究及性能分析,展示了Hadoop技术的应用前景和潜力,为社会发展提供了重要的参考价值。

    DistributedCache类使用

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

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

    总的来说,这篇论文深入研究了Hadoop在大数据环境下的应用及其性能优化,对于理解Hadoop的核心机制、推测执行策略以及MapReduce中的特定算法有重要价值。通过对Hadoop的深入研究,可以更好地应对大数据带来的挑战,...

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

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

    hadoop教程

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

    基于Hadoop的研究及分析性能

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

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

    综上所述,MapReduce应用案例文档深入地介绍了MapReduce编程模型在Hadoop生态系统中的实际使用,包括对join操作的细节分析,以及如何搭建Hadoop环境,如何上传和管理测试数据。此外,文档还提供了Hadoop学习资源的...

    开发和优化高效的Hadoop & Hive 程序

    Hadoop作为大数据生态的底层框架,Hive作为建立在Hadoop之上的数据仓库工具,二者在实际应用中都有着非常广泛的应用。淘宝作为国内知名的电商平台,其对Hadoop和Hive的调优以及开发经验具有较高的参考价值。 在对...

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

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

    Hadoop_MapReduce教程

    Hadoop MapReduce 是一个用于处理大规模数据集的软件框架,它使得开发者能够编写可以在大量廉价商用服务器组成的集群上运行的应用程序。该框架支持可靠的容错机制,并能够以并行的方式处理TB级别的数据集。 - **...

    Hadoop实战

    71.5.2 相同程序在MapReduce中的扩展 91.6 用Hadoop统计单词——运行第一个程序 111.7 Hadoop历史 151.8 小结 161.9 资源 16第2章 初识Hadoop 172.1 Hadoop的构造模块 172.1.1 NameNode 172.1.2 DataNode 182.1.3 ...

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

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

    Scala-hadoop-spark-新教程含金量最高的大数据教程

    - **addFile方法**:在Spark应用程序中,可以使用`SparkContext#addFile`将文件添加到DistributedCache,使得这些文件可以在任务中被所有Task访问。 - **常见错误**: - 文件路径不正确导致无法加载。 - 文件格式...

    分布式平台等值连接优化技术分析.pdf

    位图技术在MapReduce中可以用于生成背景文件,然后通过Hadoop的DistributedCache传输到各节点,并加载到内存中,在map阶段过滤掉无结果的元组,但这种方法在过滤效果上仍有改进空间。 布隆过滤器(BloomFilter)是...

    00-大数据技术之高频面试题+汇总.pdf

    2. Zookeeper的使用场景:了解Zookeeper在大数据技术中的使用场景,例如在Hadoop、Kafka、Storm等系统中的应用。 大数据技术高频面试题总结涵盖了Linux、Hadoop、Zookeeper等多个方面的知识点,了解这些知识点对于...

    各种集群框架知识扩展.pdf

    HDFS是Hadoop的分布式文件系统,能够提供高吞吐量的数据访问,非常适合大规模数据集的应用。MapReduce是一个编程模型和处理大数据的相关实现。 HDFS有着高容错性的特点,能够部署在廉价的硬件上。它通过将数据分块...

    MapReduce Tutorial 思考总结

    在Hadoop框架中,MapReduce负责将大规模数据集分割成较小的数据块,并在集群中并行处理这些数据块,以提高计算效率。以下是MapReduce的一些关键概念和流程的详细解释: 1. **前置条件**:在开始MapReduce工作之前,...

Global site tag (gtag.js) - Google Analytics