PythonMapReduce框架
mrjob的Python项目详细描述
mrjob是一个python 2.7/3.5+包,可以帮助您编写和运行hadoop 流作业。
Stable version (v0.6.10) documentation
Development version documentation
mrjob完全支持amazon的弹性mapreduce(emr)服务,它允许您 以每小时为基础在hadoop集群上购买时间。mrjob对google cloud dataproc(dataproc)有基本支持 它允许您一分钟一分钟地在hadoop集群上购买时间。它也适用于你自己的 Hadoop群集。
一些重要功能:
- 在emr、google cloud dataproc、您自己的hadoop集群或本地(用于测试)上运行作业。
- 编写多步骤作业(将一个map reduce step feeds映射到下一个)
- 在EMR或您自己的Hadoop群集上轻松启动Spark作业
- 在hadoop中复制生产环境
- 上载源代码树并将其放入作业的$PYTHONPATH
- 运行make和其他设置脚本
- 设置环境变量(例如$TZ)
- 从tarballs轻松安装python包(仅限emr)
- 安装程序由mrjob.confconfig文件透明处理
- 自动解释错误日志
- ssh隧道到hadoop作业跟踪器(仅限emr)
- 最小设置
- 要在emr上运行,请设置$AWS_ACCESS_KEY_ID和$AWS_SECRET_ACCESS_KEY
- 要在dataproc上运行,请设置$GOOGLE_APPLICATION_CREDENTIALS
- 在您自己的hadoop集群上使用mrjob不需要设置
安装
来自PYPI:
pip install mrjob
来源:
python setup.py install
一个简单的map reduce作业
此示例和更多示例的代码位于mrjob/examples中。
"""The classic MapReduce job: count the frequency of words. """ from mrjob.job import MRJob import re WORD_RE = re.compile(r"[\w']+") class MRWordFreqCount(MRJob): def mapper(self, _, line): for word in WORD_RE.findall(line): yield (word.lower(), 1) def combiner(self, word, counts): yield (word, sum(counts)) def reducer(self, word, counts): yield (word, sum(counts)) if __name__ == '__main__': MRWordFreqCount.run()
试试看!
# locally python mrjob/examples/mr_word_freq_count.py README.rst > counts # on EMR python mrjob/examples/mr_word_freq_count.py README.rst -r emr > counts # on Dataproc python mrjob/examples/mr_word_freq_count.py README.rst -r dataproc > counts # on your Hadoop cluster python mrjob/examples/mr_word_freq_count.py README.rst -r hadoop > counts
在Amazon上设置EMR
- 创建Amazon Web Services account
- 获取访问和密钥(单击“安全凭据”打开 your account page)
- 设置环境变量$AWS_ACCESS_KEY_ID和 $AWS_SECRET_ACCESS_KEY相应地
在google上设置dataproc
- Create a Google Cloud Platform account,请参见右上角
- Learn about Google Cloud Platform “projects”
- Select or create a Cloud Platform Console project
- Enable billing for your project
- 转到API Manager并搜索/启用以下api…
- 谷歌云存储
- 谷歌云存储json api
- 谷歌云数据处理API
- 在“凭据”下,创建凭据,然后选择服务帐户密钥。然后,选择new service account,输入名称并选择key typejson。
- 安装Google Cloud SDK
- 谷歌云存储
- 谷歌云存储json api
- 谷歌云数据处理API
高级配置
要在其他aws区域中运行,请上载源代码树,运行make,然后使用 其他高级mrjob功能,您需要设置mrjob.conf。MrJob看起来 其conf文件位于:
- $MRJOB_CONF 的内容
- ~/.mrjob.conf
- /etc/mrjob.conf
有关详细信息,请参见the mrjob.conf documentation。
更多信息
- PyCon 2011 mrjob overview
- Introduction to Recommendations and MapReduce with mrjob (source code)
- Social Graph Analysis Using Elastic MapReduce and PyPy
多亏了Greg Killion (ROMEO ECHO_DELTA)用于徽标。