Python MapReduce框架
项目描述
mrjob是一个Python 2.7/3.4+软件包,帮助您编写和运行Hadoop Streaming作业。
mrjob完全支持Amazon的Elastic MapReduce(EMR)服务,允许您以每小时为基础购买Hadoop集群时间。mrjob对Google Cloud Dataproc(Dataproc)有基本支持,允许您以每分钟为基础购买Hadoop集群时间。它还可以与您自己的Hadoop集群一起工作。
一些重要特性
在EMR、Google Cloud Dataproc、您自己的Hadoop集群或本地(用于测试)上运行作业。
编写多步骤作业(一个map-reduce步骤输送到下一个步骤)
轻松在EMR或您自己的Hadoop集群上启动Spark作业
在Hadoop中复制生产环境
上传源树并将其放入作业的$PYTHONPATH
运行make和其他设置脚本
设置环境变量(例如$TZ)
轻松从tar包安装python包(仅限EMR)
通过mrjob.conf配置文件透明地处理设置
自动解析错误日志
到hadoop作业跟踪器的SSH隧道(仅限EMR)
最小化设置
要在EMR上运行,设置$AWS_ACCESS_KEY_ID和$AWS_SECRET_ACCESS_KEY
要在Dataproc上运行,设置$GOOGLE_APPLICATION_CREDENTIALS
在您自己的Hadoop集群上使用mrjob无需设置
安装
pip安装mrjob
从v0.7.0版本开始,Amazon Web Services和Google Cloud Services是可选依赖项。要使用这些服务,请分别使用aws和google目标进行安装。例如
pip install mrjob[aws]
一个简单的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
获取您的访问密钥和秘密密钥(在您的账户页面上单击“安全凭证”)
相应地设置环境变量$AWS_ACCESS_KEY_ID和$AWS_SECRET_ACCESS_KEY
在Google上设置Dataproc
转到API管理器,搜索/启用以下API...
Google Cloud Storage
Google Cloud Storage JSON API
Google Cloud Dataproc API
在凭据下,创建凭据并选择服务账户密钥。然后,选择新建服务账户,输入名称并选择密钥类型JSON。
高级配置
要在其他AWS区域运行,上传源树,运行make,并使用其他高级mrjob功能,您需要设置mrjob.conf。mrjob在其conf文件中查找
$MRJOB_CONF的内容
~/.mrjob.conf
/etc/mrjob.conf
有关更多信息,请参阅mrjob.conf文档
项目链接
参考
更多信息
感谢Greg Killion (ROMEO ECHO_DELTA) 提供标志。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。