Hadoop 流与 Bash - 多慢



我从几篇文章中听说,使用bash进行Hadoop流式传输比编译代码或python慢得多。这仅适用于排序命令等吗?我的脚本需要

-将文件复制到节点-on node 执行一个以文件作为参数的商业程序- 将输出传递回文件夹

我的直觉告诉我,这应该与编译版本的速度相似。会吗?

Hadoop Streaming被认为是慢的主要思想是,对于映射器和reducer,你必须通过stdin传递参数,这意味着你必须将它们序列化为文本,并且要获得映射器和reducer的输出,你必须将它们从文本反序列化回Java结构, 这通常会消耗很多时间。

如果你有一个第三方编译的应用程序,能够从stdin读取输入数据并将数据传递给stdout,你别无选择,只能在Hadoop Streaming或Spark pipe中运行它。但是,当然,本机mapreduce应用程序会更快,因为它将消除将数据传递给应用程序时对数据序列化/反序列化的需求。

但是,如果您的应用程序只是接受文件名并自行读取文件(例如,从 NFS),它将与本机文件的速度相同,但当然您应该考虑到这种类型的使用对于 Hadoop 和 Spark 都不是这种情况 - 这些框架是为了使用它们提供的 API 处理数据而开发的

最新更新