18.MapReduce中的分布式缓存
来源:互联网 发布:java 接受syslog 编辑:程序博客网 时间:2024/05/21 05:37
简介
DistributedCache是Hadoop为MapReduce框架提供的一种分布式缓存机制,它会将需要缓存的文件分发到各个执行任务的子节点的机器中,各个节点可以自行读取本地文件系统上的数据进行处理。
符号链接
可以同在原本HDFS文件路径上+”#somename”来设置符号连接(相当于一个快捷方式)
这样在MapReduce程序中可以直接通通过:
- 1
- 1
来获得这个文件
缓存在本地的目录设置
以下为默认值:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
应用场景
1.分发第三方库(jar,so等)
2.共享一些可以装载进内存的文件
3.进行类似join连接时,小表的分发
使用方式
旧版本的DistributedCache已经被注解为过时,以下为Hadoop-2.2.0以上的新API接口,测试的Hadoop版本为2.7.2。
- 1
- 2
- 3
- 1
- 2
- 3
job.addArchiveToClassPath(archive); // 缓存jar包到task运行节点的classpath中
job.addFileToClassPath(file); // 缓存普通文件到task运行节点的classpath中
job.addCacheArchive(uri); // 缓存压缩包文件到task运行节点的工作目录
job.addCacheFile(uri) // 缓存普通文件到task运行节点的工作目录
由于新版API中已经默认创建符号连接,所以不需要再调用setSymlink(true)方法了,可以通过
- 1
- 1
来查看是否开启了创建符号连接。
之后在map/reduce函数中可以通过context来访问到缓存的文件,一般是重写setup方法来进行初始化:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
得到的path为本地文件系统上的路径。
这里的getLocalCacheFiles方法也被注解为过时了,只能使用context.getCacheFiles方法,和getLocalCacheFiles不同的是,getCacheFiles得到的路径是HDFS上的文件路径,如果使用这个方法,那么程序中读取的就不再试缓存在各个节点上的数据了,相当于共同访问HDFS上的同一个文件。
可以直接通过符号连接来跳过getLocalCacheFiles获得本地的文件。
单机安装的hadoop没有通过,提示找不到该文件,待在集群上进行测试。
注意事项
1.需要分发的文件必须是存储在HDFS上了
2.文件只读
3.不缓存太大的文件,执行task之前对进行文件的分发,影响task的启动速度
- 18.MapReduce中的分布式缓存
- MapReduce中的分布式缓存使用
- mapreduce分布式缓存
- 实验9 MapReduce-分布式缓存
- mapReduce使用分布式缓存机制
- Hadoop MapReduce进阶 使用分布式缓存进行replicated join
- MapReduce变量传递设置及分布式缓存DistributedCache
- Hadoop MapReduce进阶 使用分布式缓存进行replicated join
- Hadoop MapReduce进阶 使用分布式缓存进行replicated join
- Hadoop MapReduce进阶 使用分布式缓存进行replicated join
- Hadoop MapReduce进阶 使用分布式缓存进行replicated join
- Hadoop MapReduce进阶 使用分布式缓存进行replicated join
- MR-5.MapReduce分布式缓存(Distribute Cache)
- mapreduce 的partitioner,GroupComparator,KeyComparator,分布式缓存使用示例
- Mapreduce中分布式缓存的使用注意点
- hadoop中的分布式缓存——DistributedCache
- hadoop中的分布式缓存——DistributedCache
- 5. 分布式缓存中的一致性Hash 算法
- iOS使用WSDL2ObjC工具调用Webservice接口
- 针对elasticsearch在200并发持续测试下的cpu、内存监控(使用highlight与不使用highlight)
- spring maven项目解决依赖jar包版本冲突方案
- 混杂模式和非混杂模式
- KVM 存储虚拟化
- 18.MapReduce中的分布式缓存
- 我的收藏
- CPU 和内存虚拟化原理
- 录制App操作生成Gif动态图教程(Android)
- stm32的配置选项(学校的板子)
- 转:我希望进入大学时就能知道的一些事儿
- ubuntu下怎么显示右上角的小键盘
- linux命令之wget
- 远程管理 KVM 虚机