美文网首页Hadoop
为什么使用mrjob

为什么使用mrjob

作者: 顾业鸣 | 来源:发表于2019-03-21 20:14 被阅读0次

    概述:
    mrjob 是编写能够在hadoop上运行的python程序最简单的途径。您如果使用mrjob,可以在本地测试您的代码,甚至不需要安装hadoop或者在您选择的集群上运行。

    另外,mrjob可以和亚马逊的EMR(Elastic MapReduce)服务无缝集成。只要您设置完毕,就可以运行在EMR上,像在自己的笔记本上运行一样简单。

    下面是一些mrjob的特性,它们可以帮助您更方便地编写MapReduce程序:

    1. 保持完成一个任务所有MapReduce的代码在一个class中
    2. 简单的上传和安装代码和数据依靠
    3. 一行命令切换输入输出格式
    4. 自动下载和解析python tracebacks的错误日志
    5. 可以把命令行筛选器放在python代码之前或者之后(这里没看懂,可能翻译的不太到位)

    如果您不想成为hadoop专家,但是想利用MapReduce强大的计算能力,mrjob可能会是您需要的。

    为什么使用mrjob而不是X

    这里的X是说其他帮助hadoop对接python的库。

    1. mrjob比其他我们知道的框架或库有更多的文档。如果您正在读这篇文档,这很有可能是您和库的第一次接触,这时,您提供的反馈是非常有价值的。如果有哪里让您觉得不清楚或是难以理解的,请让我们知道。
    2. mrjob让您运行代码可以完全离开hadoop。其他框架则至少需要一个hadoop实例才可以。使用mrjob您也可以轻松的为您的代码编写合适的测试用例。
    3. mrjob为支持的环境提供了一致的接口,无论您是本地运行还是在云端运行还是在您的集群上,您的python代码不需要做出任何改变。
    4. mrjob做了许多机械的任务,用以得到代码或者数据在您工作的集群上,您不需要再做一系列的脚本来安装依赖或者上传文件。
    5. mrjob让debug变得更加简单。它可以在本地实现运行简单的过程中的MapReduce程序,如果出错,就会返回tracebacks在控制台而不是晦涩的日志文件。在集群上,它能帮您解析错误信息成python的tracebacks。
    6. mrjob自动地序列化或者反序列化每一个任务的输入数据或输出数据,所以您不需要一直json.loads()和json.dumps()。

    为什么使用X而不是mrjob

    mrjob简单易用的反面,带来的是它没有提供像Dumbo和Pydoop一个等级的对hadoop接口的访问能力。它简化了许多东西,但这并没有阻止一些公司,包括Yelp,使用它来日复一日的进行繁重的工作。对于寻常的(也包括一些不寻常的)情况,抽象带来的帮助大于阻碍。

    如果你使用typedbytes,其他库是可以更快的。已经有几次尝试,试着将它们与mrjob集成,最终可能会实现,但目前还没有。

    相关文章

      网友评论

        本文标题:为什么使用mrjob

        本文链接:https://www.haomeiwen.com/subject/zlqhvqtx.html