一、概念介绍

1、分布式缓存的理解:Hadoop为MapReduce框架提供的一种分布式缓存机制,它会将需要缓存的文件分发到各个执行任务的子节点的机器中,各个节点可以自行读取本地文件系统上的数据进行处理。

2、符号连接:在原本HDFS文件路径上加”#filename”来设置符号连接(这样写新API会默认创建符号连接,相当于一个快捷方式)

  这样在MapReduce程序中可以直接通过:File file = new File("filename");来获得这个文件。

 要使用符号连接,需要检查是否启用了符号连接,通过 FileSystem.areSymlinksEnabled()的布尔返回值来确定。  如果未开启,使用 FileSystem.enableSymlinks()方法来开启符号连接。

二、使用1、添加分布式缓存:添加分布式缓存,将文件复制到任务节点
旧版本的DistributedCache已经被注解为过时,使用新的API来解决这个问题,如下:
不同文件类型的添加方法:job.addArchiveToClassPath(archive); // 缓存jar包到task运行节点的classpath中
job.addFileToClassPath(file); // 缓存普通文件到task运行节点的classpath中
job.addCacheArchive(uri); // 缓存压缩包文件到task运行节点的工作目录
job.addCacheFile(uri) // 缓存普通文件到task运行节点的工作目录

举个具体的例子:在main方法中,创建job时,添加需要使用到的缓存文件,如果需要使用第二个参数,URI参数那里可以不写hdfs://node:8020(举例)job.addCacheFile(new URI("/foo/bar//fileName.txt#fileName.txt"));//添加hdfs文件做缓存2、使用分布式缓存在Mapper类的setup方法中读取分布式缓存文件:Mapper类主要有4个方法:setup(),map(),cleanup(),run(),run()方法调用其它三个方法,顺序是:setup()-map()-cleanup。并且setup()执行且仅执行一次,主要用来为map()方法做一些准备工作,所以很多初始化的工作尽量放在这里做。Reducer类也是类似的。setup()方法实现示例如下:
 @Overrideprotected void setup(Context context) throws IOException, InterruptedException {super.setup(context);if (context.getCacheFiles() != null && context.getCacheFiles().length > 0) {            BufferedReader br = br = new BufferedReader(new InputStreamReader(new FileInputStream("fileName")));          // 这里的fileName应该是上一步中 # 后面的名字,需要对应String line;while ((line = br.readLine()) != null) {String[] temp = line.split("\t");// 具体的处理逻辑}
                br.close();}}

参考:http://www.codeweblog.com/yarn-mapreduce-2-0-%E4%B8%8B%E5%88%86%E5%B8%83%E5%BC%8F%E7%BC%93%E5%AD%98-distributedcache-%E7%9A%84%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9/




转载于:https://www.cnblogs.com/loveling-0239/p/7884195.html

填坑之路——Hadoop分布式缓存相关推荐

  1. hadoop 分布式缓存

    Hadoop 分布式缓存实现目的是在所有的MapReduce调用一个统一的配置文件,首先将缓存文件放置在HDFS中,然后程序在执行的过程中会可以通过设定将文件下载到本地具体设定如下: public s ...

  2. 填坑之路!SpringBoot导包坑之spring-boot-starter-parent

    填坑之路!SpringBoot导包坑之spring-boot-starter-parent 大誌 2018-11-14 21:03:25 104522 收藏 83 分类专栏: Bug 文章标签: Sp ...

  3. Android Studio 3.0~3.x正式版填坑之路

    序言 总看别人的文章,今天尝试着自己来写一篇.在逛论坛时候,无意间发现Android Studio 3.0正式版本推送更新了,早听说AS 3.0添加了许多新功能,然后手贱迫不及待地想先睹为快,结果正中 ...

  4. NIOS_II填坑之路——EPCS出现“Cannot open flash device”解决办法

    读写EPCS出现"Cannot open flash device"的解决办法 SOPC填坑--第n天 代码看了千万遍,Debug千万遍,alt_flash_open_dev(EP ...

  5. 一款车载GPS定位产品后端服务器架构的填坑之路(一)

    文章名字取得有些唬人.这里说"架构"二字也是有些夸大,其实也就是实现一些简单的位置解析功能.数据存储等功能.整理出来,也只是给后来者一些借鉴.希望看到的能够去除糟粕,取其精华. 2 ...

  6. 微信小程序填坑之路其一:wx.request发送与服务端接受

    一.序言 应公司要求要求,要用小程序开发一个信息录入系统.没办法只能听话来填坑. 先介绍一下环境:客户端--小程序:服务端--java:数据库--mysql:服务器--centos7 需求:客户端输入 ...

  7. H5嵌入原生开发小结----兼容安卓与ios的填坑之路

    一开始听说开发H5,以为就是做适配现代浏览器的移动网页,心想不用管IE了,欧也.到今天,发现当初too young too simple,兼容IE和兼容安卓与IOS,后者让你更抓狂.接下来数一下踩过的 ...

  8. html公共模块提取出去,webpack 填坑之路--提取独立文件(模块)

    前言 最近重新看了一遍 webpack 提取公共文件的配置.原来觉得这东西是个玄学,都是 "凭感觉" 配置.这篇文章将以解决实际开发遇到的问题为核心,悉数利用 webpack 提取 ...

  9. Elasticsearch-2.3.x填坑之路

    使用版本说明:2.3.2 强制不能使用root用户启动? 因为在2.x版本强调了安全性,防止attracker侵入root用户,所以建议使用者创建其他用户启动.当然,可以通过配置来实现root用户启动 ...

最新文章

  1. 计算机更改本地用户,win10电脑更改本机账户名的详细步骤(图文)
  2. matlab 并联机械臂_MATLAB robot toolbox 机械臂轨迹规划
  3. cocos2d-x 学习资料(很全)
  4. 厦门one_理想ONE真是“500万内最好的车”?
  5. 学生PHP校园超市网站制作 学生PHP网页毕设源码 学生动态数据库网站作品 PHP电子商务商城购物网站
  6. Silverlight 2 Beta 1学习资源
  7. 诛仙服务器状态查询,《诛仙2》3月19日服务器数据互通公告
  8. 『电脑技巧』破解Win7/Win8登录密码
  9. 元宵节要到了,给大家猜几个谜语
  10. 开源项目推荐:OpenGL/Vulkan/Cairo/Skia/angle/VTK/OpenVG/MyPaint/GIMP/Krita/Pencil2D/inkspace/enve等绘图库或画图软件
  11. 2023湖南大学计算机考研信息汇总
  12. OpenGL /GLES 使用Pyqt5 + glad
  13. Microsoft Teams安装教程
  14. 摄像机(Camera)
  15. 2006中国城市竞争力:60个城市综合竞争力排名
  16. 第1章 初识计算机病毒 1.1 计算机病毒基础知识
  17. 服务器无线信号差怎么办,wifi隔墙信号不好怎么办
  18. 你好,C++(40)7.1 一切指针都是纸老虎:彻底理解指针
  19. 成为一流软件开发者的 34 条建议
  20. redis提高oracle性能,redis性能分析与优化建议

热门文章

  1. Java并发编程之LinkedTransferQueue阻塞队列详解
  2. Android SQLite数据库版本升级(分逐级升级和跨版本升级)
  3. yml中对特殊字符的处理
  4. 电子设计大赛-板球系统
  5. 启动Mysql服务时错误提示: InnoDB: File .\ib_logfile101: ‘aio write‘ returned OS error 187.
  6. Three.js 点击模型,高亮发光模型外轮廓
  7. realloc函_realloc函数使用规则
  8. 济宁ISO9001认证带标与不带标的区别
  9. 基于 Vue 的直播播放器实战
  10. MySQL备份数据库成一个sql文件的方法