Hadoop

为什么使用mrjob

2019-03-21  本文已影响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集成,最终可能会实现,但目前还没有。

上一篇下一篇

猜你喜欢

热点阅读