gpt4 book ai didi

hadoop - 使用各种语言在 Hadoop 中运行作业的优缺点是什么?

转载 作者:可可西里 更新时间:2023-11-01 14:16:42 24 4
gpt4 key购买 nike

到目前为止,我一直使用 Pig 或 Java for Map Reduce 专门针对 Hadoop 集群运行作业。我最近尝试通过 Hadoop 流使用 Python Map Reduce,这也很酷。所有这些对我来说都很有意义,但我对何时使用一种实现与使用一种实现有点模糊。其他。 Java map reduce,我基本上只在需要速度时才使用它,但我什么时候会想要使用 Python 流式处理之类的东西,而不是仅仅在 PIG/Hive 中用更少、更容易理解的行写出同样的东西?简而言之,各自的优缺点是什么?

最佳答案

我将分别涉及 Java 与 Python,然后分别涉及 MR 与 Hive/Pig - 因为我将其视为两个不同的问题
Hadoop 是围绕 java 构建的,它的许多功能都可以通过 Java API 获得,并且 Hadoop 大部分可以使用 java 类进行扩展。

Hadoop 确实有能力处理用其他语言创建的 MR 作业——它被称为流式处理。该模型只允许我们定义 mapper 和 reducer,但有一些 java 中不存在的限制。同时 - 输入/输出格式和其他插件必须编写为 java 类
所以我将决策定义如下:a) 使用 Java,除非你有严肃的代码库,否则你需要在你的 MR 工作中重新使用。b) 当您需要创建一些简单的临时作业时,请考虑使用 Python。

关于 Pig/Hive - 它也是更高级别的以 java 为中心的系统。 Hive 可以在没有任何编程的情况下使用,但它可以使用 java 进行扩展。 Pig 从一开始就需要 java。我认为在可以应用的情况下,这个系统几乎总是比 MR 工作更可取。通常这些是处理类似 SQL 的情况。

流式处理与 native Java 之间的性能考虑。
流式传输通过其输入流将输入提供给映射器。它是进程间通信,在 java 的情况下,它本质上比记录读取器和映射器之间的进程内数据传递效率低。
从上面我可以得出以下结论:a) 在一些轻处理的情况下(比如寻找子字符串、计数......)这种开销可能很重要,java 解决方案会更有效。
b) 在一些繁重的处理的情况下,可以用一些非 Java 语言更有效地实现——基于流的解决方案可能有一些优势。

Pig/Hive 性能注意事项。
Pig/Hive 都实现了SQL 处理的原语。换句话说 - 他们在 RDBMS 世界中实现执行计划的元素。这些实现很好,并且经过了很好的调整。同时 Hive(我更了解的东西)是解释器。它不生成代码——它在预构建的 MR 作业中解释执行计划。这意味着如果您有一些复杂的条件并专门为它们编写代码 - 它有机会比 Hive 做得更好 - 代表编译器与 interpeter 的性能优势。

关于hadoop - 使用各种语言在 Hadoop 中运行作业的优缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9569009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com