2017-08-20 164 views
0

我有一個使用Hadoop處理1000個小文件的場景。然後,Hadoop作業的輸出將被用作非Hadoop算法的輸入。在當前的工作流程中,讀取數據,轉換爲序列文件,處理,然後生成的小文件以序列文件的形式輸出到HDFS。但是,非Hadoop算法無法理解序列文件。因此,我編寫了另一個簡單的Hadoop作業來從序列文件中讀取結果文件的數據,並創建可供非Hadoop算法使用的最終小文件。Hadoop Yarn寫入本地文件系統

這裏的問題是,對於最後的工作,我必須從HDFS中讀取序列文件,並寫入每個節點的本地文件系統,以便通過非Hadoop算法進行處理。我嘗試將輸出路徑設置爲file:///<local-fs-path>並使用Hadoop LocalFileSystem類。但是,這樣做只會將最終結果輸出到namenode的本地文件系統。

只是爲了完成圖片,我有10個節點Hadoop與紗線設置。在Hadoop Yarn模式下,從HDFS中讀取數據並將結果寫入每個處理節點的本地文件系統中有沒有辦法?

謝謝

+0

您可以掛載NFS驅動器......如果您只是需要收集所有結果,我不會看到寫入本地datanodes的好處。另外,hadoop在成千上萬的小文件中表現不佳,所以你確定你正在使用正確的流程? –

+0

不幸的是,項目要求如上所述。使用Hadoop進行處理實際上爲我們節省了超過20個小時的工作量,儘管有很多文件,所以我會說我們對Hadoop很好。感謝您提供NFS,但我們已經考慮過了。 –

回答

0

不是真的。儘管您可以寫信給LocalFileSystem,但您不能要求YARN在所有節點上運行您的應用程序。另外,根據您的集羣配置方式,YARN的節點管理器可能不會在系統的所有節點上運行。

可能的解決方法是將轉換後的文件保存在HDFS中,然後讓您的非Hadoop進程首先調用hdfs dfs -copyToLocal

相關問題