MapReduce特性(四) 边数据分布

边数据:作业所需的额外的只读数据,辅助处理主数据集

1 JobConf

    > Configuration类的setter方法

    > Context.getConfiguration()

    > 如果是复杂的元数据,用户自定义序列化或者使用Stringifier类

2 分布式缓存

分布式缓存优于序列化边数据

工作机制

    > 用户启动作业,Hadoop使用-files -archives -libjars等选项将指定文件复制到分布式文件系统中

    > 任务运行前,NM将文件从DFS复制到本地磁盘使任务访问,此时文件本地化

    > 文件以符号链接的方式指向任务工作目录

    > -libjars指定的文件会在任务执行前添加到任务的classpath

    > NM使用Counter统计文件使用情况

    > 缓存容量过高时,LRU删除文件

    > yarn-nodemanager.localizer.cache.target-size-mb设置缓存大小,默认10GB


工具GenericOptionsParser

-files 指定分发的文件,包含逗号隔开的URI列表

-archives 复制存档文件

-libjars 将JAR文件添加到classpath

hadoop jar hadoop-examples.jar\
MaxTemperatureByStationNameUsingDistributedCacheFile \
-files input/ncdc/metadata/stations-fixed-width.txt input/ncdc.all output

将本地文件statioins-fixed-width.txt复制到任务节点


分布式缓存API

Job API

addCacheXXXX()
setCacheXXXX()
addXXXXToClassPath()

猜你喜欢

转载自blog.csdn.net/weixin_42129080/article/details/80811376