簡體   English   中英

使用Bash進行Hadoop流傳輸-速度有多慢?

[英]Hadoop streaming with Bash - how slow?

我從幾篇文章中聽說,使用bash進行Hadoop流傳輸比編譯后的代碼或python慢​​得多。 這僅適用於排序命令等嗎? 我的腳本需要

-將文件復制到節點-在節點上執行帶有文件作為參數的商業程序-將輸出傳遞回文件夾

我的直覺告訴我,這應該與編譯版本的速度相似。 可不可能是?

為什么認為Hadoop Streaming速度較慢的主要想法是,對於mapper和reducer來說,您都必須通過stdin傳遞參數,這意味着您必須將它們序列化為文本,並且必須獲得mapper和reducer的輸出。將它們從文本反序列化回Java結構,這通常會花費很多時間。

如果您擁有能夠從stdin讀取輸入數據並將數據傳遞到stdout的第三方編譯應用程序,您別無選擇,只能在Hadoop Streaming或Spark Pipe中運行它。 但是當然,本機mapreduce應用程序會更快,因為它將消除將數據傳遞到應用程序時對數據進行序列化/反序列化的需求

但是,如果您的應用程序僅接受文件名並自己讀取文件(例如,從NFS讀取文件),則其速度與本機文件讀取器的速度相同,但是您當然應該考慮這種使用方式對於兩種情況都不適用Hadoop或Spark-這些框架旨在通過其提供的API處理數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM