Python 使用Bash的Hadoop流媒体-速度有多慢?
我从几篇文章中听说,使用bash的Hadoop流式处理要比编译代码或python慢得多。这是否仅适用于排序命令等?我的剧本需要修改 -将文件复制到节点 -在节点上执行以文件为参数的商业程序 -将输出传递回文件夹Python 使用Bash的Hadoop流媒体-速度有多慢?,python,bash,hadoop,mapreduce,apache-spark,Python,Bash,Hadoop,Mapreduce,Apache Spark,我从几篇文章中听说,使用bash的Hadoop流式处理要比编译代码或python慢得多。这是否仅适用于排序命令等?我的剧本需要修改 -将文件复制到节点 -在节点上执行以文件为参数的商业程序 -将输出传递回文件夹 我的直觉告诉我,这应该是一个类似于编译版本的速度。是吗?Hadoop流媒体之所以被认为很慢的主要原因是,对于mapper和reducer,您必须通过stdin传递参数,这意味着您必须将它们序列化为文本,并且为了获得mapper和reducer的输出,您必须将它们从文本反序列化回Java结
我的直觉告诉我,这应该是一个类似于编译版本的速度。是吗?Hadoop流媒体之所以被认为很慢的主要原因是,对于mapper和reducer,您必须通过stdin传递参数,这意味着您必须将它们序列化为文本,并且为了获得mapper和reducer的输出,您必须将它们从文本反序列化回Java结构,这通常会耗费很多时间 如果您有一个第三方编译的应用程序,能够从stdin读取输入数据并将数据传递给stdout,那么除了在Hadoop流媒体或Spark管道中运行它之外,您别无选择。但是,本机mapreduce应用程序当然会更快,因为它在将数据传递给应用程序时不需要进行数据序列化/反序列化
但是,如果应用程序只接受文件名并自行读取文件(例如,从NFS),则速度将与本机文件相同,当然,你应该考虑到这种类型的使用既不是针对Hadoop也不是针对SCAPLE——这些框架是用API提供的,用来处理这些数据,它们提供的不能因为RIP而被否决,但是谢谢你的回应!这对我来说很有意义。我知道这不是hadoop想要处理的工作类型,但我需要一个平台来支持google cloud上的并行计算,hadoop似乎是最好的选择。如果您的案例是将文件名传递给已编译的应用程序,您可以尝试创建自己的inputformat,这将为每个文件名提供单独的输入拆分,这样,处理单个文件的每个任务都将单独计划,并在出现故障时重新启动