Hadoop的分布式缓存系统 Distributed Cache

我们在操作hadoop时会写很多jar文件, 或者使用streaming的时候会写很多python脚本, 当集群开始运行任务时需要把这些jar文件和python脚本分发到具体执行的每个节点上去, 这个过程中用的是什么框架呢?

就是Hadoop的 Distributed Cache系统

Distributed Cache系统还可以用于map端的join, 两个结果集join, 如果其中一个结果集size很小, 就可以把该结果集直接缓存到每个datanode的内存里去, 使hadoop集群任务运行效率大大提高.


以下小字为转载部分:

Hadoop有一个叫做分布式缓存(distributed cache)的机制来将数据分发到集群上的所有节点上。它通常用来分发所有mapper需要的包含“background”数据的文件。例如你使用Hadoop来分类文档,你可能会有一个关键字的列表,你将使用distributed cache来保证所有mapper能够获得这些keywords("background data")。

操作步骤:
1.将数据分发到每个节点上:
[java] view plaincopy

  1. DistributedCache.addCacheFile(new Path(args[0]).toUri(), conf);  
2.在每个mapper上使用DistributedCache.getLocalCacheFiles()来获取文件,之后再进行相应的操作:
[java]  view plain copy
  1. DistributedCache.getLocalCacheFiles();   


除了使用API外, 一个更加方便的方法是在命令行 里注明 -files 参数, 用逗号隔开所有要缓存的文件的路径(默认是本地路径).Hadoop会把所有-files 指定的文件放入缓存. 在代码中可以直接用 FileInputStream(new File("Filename.txt"))来读取.

在streaming模式中

hadoop jar hadoop-streaming.jar后加上 -files 参数, 多个文件用逗号分开

在Hive中命令行中:

add file 命令就是利用分布式缓存的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱知菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值