6.1.1. 使用Configuration
Configuration类是框架提供的用于读取系统提供的配置文件内容,如core-default.xml等,也可以读取自定义的配置文件。
可以在驱动代码中,调用Configuration对象的set(...)方法赋值,如图6-15所示。
图6-16
这种数据处理方式适合传递简单的键值对,不适合传递很多数据,也不适合传递数据文件。
6.1.2. 使用分布式缓存
DistributedCache是框架提供的一个分布式缓存工具,它通过访问hdfs,可以使得一个job中的所有map或者reduce访问同一份文件。当在作业运行前,首先DistributedCache会先把文件复制到任务所在节点的磁盘上,然后节点上的任务就可以加载该文件了。
在使用时,首先在驱动代码中调用addCacheFile(...)方法,如图6-17所示。
图6-18
可以看到,使用DistributedCache还是非常简单的。如果不使用它,我们只能把共享的文件手工放到所有的TaskTracker的指定linux文件中,当集群非常庞大时,工作量还是很大的,使用DistributedCache后就不需要我们自己管了。
要注意的一点是,如果缓存的文件是jar,那么在使用其包含的类时应该使用反射机制,因为jar所在的路径不在框架的类路径下,无法正常加载,如图6-19所示。
图6-19