17

我正在尝试评估这两个选项之间的差异。以下是我能想到的一些优点和缺点:

Elastic Map Reduce => 来自 Amazon 的更好支持,无需管理集群,更昂贵(?) EC2 + Hadoop => 更多地控制您的 hadoop 配置,更便宜(?)

我想知道是否有人对 EC2 + Hadoop 相对于 EMR 的性能进行了基准测试?大型集群部署的成本是否存在显着差异?还存在哪些其他差异?

4

3 回答 3

7

我们在我的工作中使用这两种方法(EMR 和 EC2)。

Amar 提到的 EMR 的优点或多或少是真实的:因此,如果您想要简单,它可能是要走的路。

但还有其他考虑:

  • EMR 的版本远远落后于 apache head。它大约是 0.20.205,而 head 是 2.X,这基本上是 3 个版本(1.0、1.1、2.0..)

hadoop@domU-12-31-39-07-B9-97:~$ ll hadoop*.jar lrwxrwxrwx 1 hadoop hadoop 73 Feb 5 12:00 hadoop-examples-0.20.205.jar -> /home/hadoop/。版本/0.20.205/share/hadoop/hadoop-examples-0.20.205.jar lrwxrwxrwx 1 hadoop hadoop 69 Feb 5 12:00 hadoop-test-0.20.205.jar -> /home/hadoop/.versions/0.20。 205/share/hadoop/hadoop-test-0.20.205.jar lrwxrwxrwx 1 hadoop hadoop 69 Feb 5 12:00 hadoop-core-0.20.205.jar -> /home/hadoop/.versions/0.20.205/share/ hadoop/hadoop-core-0.20.205.jar lrwxrwxrwx 1 hadoop hadoop 70 Feb 5 12:00 hadoop-tools-0.20.205.jar -> /home/hadoop/.versions/0.20.205/share/hadoop/hadoop- tools-0.20.205.jar lrwxrwxrwx 1 hadoop hadoop 68 Feb 5 12:00 hadoop-ant-0.20.205.jar -> /home/hadoop/.versions/0.20.205/share/hadoop/hadoop-ant-0.20。 205.jar

  • 由于在 EMR 上运行的旧版本中缺少 contrib 模块,因此我不得不重新编码/重组我的 Map/reduce 程序

  • 您没有机会使用非 Map/Reduce 算法,就好像您使用的是 M/R 的更新版本一样。

  • 混合和匹配 hadoop 生态系统版本的灵活性。

于 2013-03-02T23:28:42.943 回答
7

好吧,管理/监控/维护集群本身并不是一项小任务。使用 EMR,您可以立即使用自定义引导代码配置、启动和运行机器。除了做所有这些事情之外,EMR 还提供了许多其他工具/选项/设施。

在这里,您不必担心在作业完成后终止集群,您当然可以在 EC2+Hadoop 设置中为自己实现一种方法,但 EMR 以一种简洁的方式为您做到这一点。

即使您的作业正在运行,您也可以调整集群大小!

EMR 提供的 Pig 和 Hive 还包含补丁,可以更轻松地在 S3 中处理文件。

即使在答案中,您也可能会发现 EMR 已占上风。

于 2013-03-02T20:10:38.307 回答
0

我回答了另一个问题,因此在这里添加它以及它们是相关的可能会有所帮助。

有人在评论中提到(人们实际上有印象)EMR 在 ec2 节点(这是 spark 的底层主/计算节点)之上增加了一些成本,并且只提供集群,但事实并非如此。

但是 elastic map reduce 关注的是elasticscalability部分,这意味着为您的作业提供可伸缩性,其中可伸缩性不仅仅是集群中的节点数量,而是不同的参数,例如

  1. 使用正在运行的作业动态调整集群大小

  2. 减少和优化旋转时间,提供高效的重新提交步骤和选项,如步骤完成时自动终止

  3. 配置、管理和更新时间。就像一个小的你有一些东西,比如自动处理 spark/hadoop/其他应用程序版本的发布版本,为你提供了轻松更新你必须使用 ec2 手动执行的版本的方法。

  4. 生态系统的可用性。EMR 生态系统正在增长,它不会反映您何时开始,但例如当您的需求增长时,例如当您开始将其他系统流处理与 flink 集成时)然后在启动时选择更flink容易pig,,hive和如果您将来需要使用其他东西,请再等等。

  5. 已经有使用 AWS SDK 实现的库,例如 python 中的 boto3,可帮助您提交步骤、轮询完成等,这在您需要扩展时非常有用。此外,您还可以将 emr 与诸如气流之类的编排框架集成,其中可以感知状态、重新提交、一个命令在管道中旋转集群。

  6. 扩展上一点,例如EMR 笔记本为您提供了从 Jupiter 笔记本提交 Spark 作业并查看结果的快速交互方式,并立即查看作业进度,这可以提高您的工作效率。

  7. 根据我的经验,这一点是最重要的,有时,扩展具有更多节点的作业比使用少量节点的长时间运行作业可以节省更多的钱。因为添加节点的成本有时会低于您在 ec2 或小型 emr 集群上花费的标准化小时数。只是为了分享我的经验,我们有一个过去运行 3 天的工作,我们用更大的 EMR 集群来运行它,将它减少到 6-8 小时,它仍然是相同的成本,实际上少了一点。

于 2020-10-22T17:44:15.517 回答