【发布时间】:2015-01-23 02:12:21
【问题描述】:
我从几篇文章中听说,使用 bash 进行 Hadoop 流式传输比编译代码或 python 慢得多。这仅适用于排序命令等吗?我的脚本需要
- 复制文件到节点 -on node 以文件为参数执行商业程序 - 将输出传回文件夹
我的直觉告诉我,这应该与编译版本的速度相似。会吗?
【问题讨论】:
标签: python bash hadoop mapreduce apache-spark
我从几篇文章中听说,使用 bash 进行 Hadoop 流式传输比编译代码或 python 慢得多。这仅适用于排序命令等吗?我的脚本需要
- 复制文件到节点 -on node 以文件为参数执行商业程序 - 将输出传回文件夹
我的直觉告诉我,这应该与编译版本的速度相似。会吗?
【问题讨论】:
标签: python bash hadoop mapreduce apache-spark
Hadoop Streaming 被认为很慢的主要原因是,对于 mapper 和 reducer,您必须通过 stdin 传递参数,这意味着您必须将它们序列化为文本,并获取 mapper 和 reducer 的输出您必须将它们从文本反序列化回 Java 结构,这通常会耗费大量时间。
如果您有第三方编译的应用程序,它能够从标准输入读取输入数据并将数据传递到标准输出,您别无选择,只能在 Hadoop 流式传输或 Spark 管道中运行它。当然,原生 mapreduce 应用程序应用程序会更快,因为它将消除将数据序列化/反序列化传递给应用程序的需要
但是,如果您的应用程序只接受文件名并自行读取文件(例如从 NFS),它的速度将与原生应用程序相同,但您当然应该考虑这种类型的使用不是Hadoop 和 Spark 都不是这样——开发这些框架是为了使用它们提供的 API 处理数据
【讨论】: