MapReduce变量传递设置及分布式缓存DistributedCache
2012-12-23 23:57
253 查看
上节中我们提高在MapReduce中使用自定义的数据输入类,并且自己也实现了一个对应类叫MyTextInputFormat,重写了LineRecordReader类,并在MapReduce中成功使用。、
下面我讲介绍一些MapReduce程序中相关设置。
1. 如何从主函数中传递全局变量到各个节点的mapreduce操作中使用,在新就mapreduce的api中相关设置略有不同,下面就展示几个简单的实现:
在旧mapred中,变量传递方法如下:
在主函数run方法中设置:conf.setBoolean("var", true);
若希望在map方法中使用该变量传递过来的值则可以写一个configure函数获取该变量值,则可以在map中进行使用了:booleanvar = job.getBoolean("var", true);
下面我们将将一个在新mapreduce的api中使用传递一般变量的例子:
设置如下:
这是在ToolRunner调用的run方法中进行设置的,这里设置了两个变量,对应变量名和变量值。那么在map函数中需要调用时采用:
即可以获取所设置的变量。
2.
分布式缓存DistributedCache
memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少对数据库的访问次数,以提高动态web应用的速度,提高可扩展性。
分布式缓存一个最重要的应用就是在进行join操作的时候,如果一个表很大,另一个表很小很小,我们就可以将这个小表进行广播处理,即每个计算节点上都存一份,然后进行map端的连接操作,经过我的实验验证,这种情况下处理效率大大高于一般的reduce端join,广播处理就运用到了分布式缓存的技术。可参考网站:http://blog.csdn.net/kingjinzi_2008/article/details/7741320。因此,在对hbase进行mapreduce操作时可以考虑使用分布式缓存方式。
调用过程如下:
同样在main的run方法中设置:
当在map中需要使用时,可以在configure()方法中获取缓存文件:
注意:cache的文件不应该被调用的应用程序修改或者外部的其他程序修改,因为DistributedCache会跟踪cache文件的时间戳,修改后可能会引起异常。参考:http://blog.csdn.net/brince101/article/details/6683816
http://blog.sina.com.cn/s/blog_9ffceca50101c3zb.html
下面我讲介绍一些MapReduce程序中相关设置。
1. 如何从主函数中传递全局变量到各个节点的mapreduce操作中使用,在新就mapreduce的api中相关设置略有不同,下面就展示几个简单的实现:
在旧mapred中,变量传递方法如下:
在主函数run方法中设置:conf.setBoolean("var", true);
若希望在map方法中使用该变量传递过来的值则可以写一个configure函数获取该变量值,则可以在map中进行使用了:booleanvar = job.getBoolean("var", true);
下面我们将将一个在新mapreduce的api中使用传递一般变量的例子:
设置如下:
这是在ToolRunner调用的run方法中进行设置的,这里设置了两个变量,对应变量名和变量值。那么在map函数中需要调用时采用:
即可以获取所设置的变量。
2.
分布式缓存DistributedCache
memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少对数据库的访问次数,以提高动态web应用的速度,提高可扩展性。
分布式缓存一个最重要的应用就是在进行join操作的时候,如果一个表很大,另一个表很小很小,我们就可以将这个小表进行广播处理,即每个计算节点上都存一份,然后进行map端的连接操作,经过我的实验验证,这种情况下处理效率大大高于一般的reduce端join,广播处理就运用到了分布式缓存的技术。可参考网站:http://blog.csdn.net/kingjinzi_2008/article/details/7741320。因此,在对hbase进行mapreduce操作时可以考虑使用分布式缓存方式。
调用过程如下:
同样在main的run方法中设置:
当在map中需要使用时,可以在configure()方法中获取缓存文件:
注意:cache的文件不应该被调用的应用程序修改或者外部的其他程序修改,因为DistributedCache会跟踪cache文件的时间戳,修改后可能会引起异常。参考:http://blog.csdn.net/brince101/article/details/6683816
http://blog.sina.com.cn/s/blog_9ffceca50101c3zb.html
相关文章推荐
- uboot环境变量(设置bootargs向linux内核传递正确的参数)
- mapreduce框架中的全局变量的设置
- MapReduce中设置全局变量
- uboot环境变量(设置bootargs向linux内核传递正确的参数)
- mapreduce主程序如何传递变量到map或者reduce函数中使用
- perl 子程序传递参数不同类型变量 设置
- 通过环境变量设置将外部参数传递到qooxdoo应用系统内部
- uboot环境变量(设置bootargs向linux内核传递正确的参数)
- hive的变量传递设置
- Windows环境变量设置无效解决办法——DOS窗口设置环境变量
- 在Linux里设置环境变量的方法(export PATH)
- Linux环境变量查询与设置
- eclipse 下环境变量设置
- Linux环境变量的设置和查看方法
- ubuntu环境变量设置方法
- 临时变量作为非const的引用进行参数传递引发的编译错误
- 小程序之设置全局变量与改变全局变量的值 3ff8
- java环境变量设置
- Linux下修改/设置环境变量JAVA_HOME
- java 环境变量设置