mrjob运行runner参数
来源:互联网 发布:微信打赏视频破解软件 编辑:程序博客网 时间:2024/05/16 05:11
本地测试
在本地测试作业python your_mrjob_sub_class.py <log_file >output
此脚本会使用InlineMRJobRunner自动调用自身运行各个步骤。如果要更接近Hadoop,可以使用--runner=local
,这个参数不会将你当前的工作目录加到PYTHONPATH
,而是设置一些Hadoop环境变量,使用多个子处理器来处理任务。
也可以使用参数--mapper
,--reducer
来运行单一的步骤。
缺省情况下,程序从stdin读入数据,但也可以指定一个活多个输入文件。程序会自动解压缩 .gz文件和.bz2文件。 python your_mr_job_sub_class.py log_01.gz log_02.bz2 log_03
测试作业
mrjob可以在没有Hadoop的情况下运行。虽然并不高效,但是一个很好的测试方法。
Inline runner
inline runner是mrjob的默认runner(当运行Python mr_your_job.py
没有任何 -r选项时使用)。它在单个处理器上运行作业,以便于快速得到反馈并且方便调试。
多划分
inline runner不会同时运行mapper或reducer,但是在每一步中至少有两个mapper,两个reducer。这样有助于获得相关MapReduce编程模型的不好的假设。
from mrjob.job import MRJob class MRCountLinesWrong(MRJob): def mapper_init(self): self.num_lines = 0 def mapper(self, _, line): self.num_lines += 1 def mapper_final(self): yield None, self.num_lines if __name__ == '__main__': MRCountLinesWrong.run()
是单处理器,但的确有两个mapper,如果在main函数里加上一个输出的话,只会输出一次。
隔离工作空间
就像Hadoop,Inline runner在mapper和reducer各自临时的工作目录中运行每个mapper和reducer。它会把原始的工作目录加入到$PYTHONPATH,以便它仍可以访问本地资源。
模拟jobconf
inline runner 模拟Hadoop中设置的jobconf变量/属性
* mapreduce.job.cache.archives
(mapred.cache.archives
)
* mapreduce.job.cache.files
(mapred.cache.files
)
* mapreduce.job.cache.local.archives
(mapred.cache.localArchives
)
* mapreduce.job.cache.local.files
(mapred.cache.localFiles
)
* mapreduce.job.id
(mapred.job.id
)
* mapreduce.job.local.dir
(job.local.dir
)
* mapreduce.map.input.file
(map.input.file
)
* mapreduce.map.input.length
(map.input.length
)
* mapreduce.map.input.start
(map.input.start
)
* mapreduce.task.attempt.id
(mapred.task.id
)
* mapreduce.task.id
(mapred.tip.id
)
* mapreduce.task.ismap
(mapred.task.is.map
)
* mapreduce.task.output.dir
(mapred.work.output.dir
)
* mapreduce.task.partition
(mapred.task.partition
)
可以利用jobconf_from_env()
从作业环境处读取
设置mapper和reducer的数量
如果想要更多或更少的划分,你可以使用设置Hadoop的方法来设置inline runner:使用mapreduce.job.maps和mapreduce.job.reduces的jobconf选项:
>$ python -m mrjob.examples.mr_count_lines_wrong --jobconf mapreduce.job.maps=5 README.rst 2> /dev/nullnull 24null 33null 38null 30null 12
Local runner
local runner(LocalMRJobRunner;-r local)支持以上特性,但是它使用的是子处理器。
local runner同时运行多个子处理器,但这并不意味这它可以取代Hadoop,只是用来测试。
这意味着可以用来测试在单处理器上不可以测试的选项,包括:python_bin、setup、steps_python_bin。
在自己的Hadoop集群上运行
- 设置一个Hadoop集群http://hadoop.apache.org/common/docs/current/
- 确认设置了$HADOOP_PREFIX
- p使用-r hadoop参数运行作业 python your_mr_job_sub_class.py -r hadoop <input >output
注意:不需要在Hadoop集群的节点上安装mrjob或任何其他的库,但是需要一个版本和你的作业兼容的Python。
在EMR上运行
- 设置亚马逊账号和证书http://pythonhosted.org/mrjob/guides/emr-quickstart.html#amazon-setup
- 使用参数-r emr运行作业:
python your_mr_job_sub_class.py -r emr <input >output
- mrjob运行runner参数
- mrjob运行方式
- jetty-runner-*.jar 运行war小例子
- mrjob文档
- python MRJob
- python MRJob
- MR_运行monkey runner出现的问题记录
- jetty-runner.jar指定端口运行war包
- Eclipse中采用本地作业运行器(Job Runner)运行Hadoop测试(Hadoop2.7.3)
- Eclipse中采用本地作业运行器(Job Runner)运行Hadoop测试(Hadoop2.7.3)
- VSCode下便捷编译运行C++代码——Code Runner配置及说明
- 关于VS Code使用code runner编译运行java出现报错乱码的问题
- Mrjob介绍 (hadoop with python)
- Mrjob介绍 (hadoop with python)
- mrjob开源开发包
- load runner
- ir-runner
- load runner
- JS倒计时类
- android官方文档学习之路-高效显示Bitmap
- 视觉slam学习资料
- 适配器模式 合成模式
- 短信验证码是什么?短信验证码是什么意思
- mrjob运行runner参数
- 一个奇奇怪怪的数学问题
- [转]数据结构--树形结构(1)--作者:深挖三尺--抓狂
- cocos2dx 2.2.6 hitWidget->onTouchEnded(pTouch, pEvent); 异常
- ios开发之网络POST请求
- iOS开发79-Xcode报错:The file “XXX” couldn’t be opened because you don’t have permission to view it.的解决方法
- 线程池(5)——基本使用(上)
- csu 1307 City Tour dijkstra+并查集 最短路 解题报告
- 系统分布式情况下最终一致性方案梳理