标签:style blog color 使用 strong 文件
案例:
Hadoop jar引用:hadoop jar -libjars aa.jar bb.jar ….
jar包会被上传到hdfs,然后分发到每个datanode
假设有20个jar文件,每天jar文件被上传上万次,分发达上万次(百G级),造成很严重的IO开销。
如何使这些jar包在HDFS上进行缓存,同一个jar只需上传和分发一次,后续所有的job可以节省此jar的上传和分发的开销,从而减少不必要的上传和分发呢?
解决方案:使用分布式缓存
MapReduce如何使用分布式缓存
Hadoop DistributedCache的使用
Configuration conf = new Configuration(); DistributedCache.createSymlink(conf); // 假设:/user/bi/input/xxx.jar为文件名 // #后的testFile为指定的名称,可以用testFile代替前面的文件 DistributedCache.addCacheFile(new URI("/user/bi/input/xxx.jar#testFile"), conf); Job job = new Job(conf);
DistributedCache的操作一定要放在job的初始化之前,否则会报出文件找不到的异常
在map端打开:
FileReader fr = new FileReader("testFile");
hive的add jar 是基于分布式缓存来进行设计的,会将jar自动加入到分布式缓存中。
在hive脚本使用:
add jar /opt/software/lib/UDF.jar;
create temporary function getPageId as ‘com.xxx.GetPageID‘;
或者是在通过设置hive的配置文件hive-site.xml 加入
<property> <name>hive.aux.jars.path</name> <value>file:///opt/software/lib/UDF.jar</value> </property>
Hive架构层面优化之六分布式缓存,布布扣,bubuko.com
标签:style blog color 使用 strong 文件
原文地址:http://www.cnblogs.com/luogankun/p/3851448.html