2016-05-23 219 views
1

我正在計劃一個數據處理管道。我的情況是這樣的:HDFS和冗餘

  • 用戶上傳數據到服務器
  • 該數據應被分配到一個(也是唯一一個)節點在我的羣集。沒有分佈式計算,只是挑選當前最少的節點
  • 數據處理流水線從某種分佈式作業引擎中獲取數據。儘管這裏是(最後)我的問題:許多工作引擎依靠HDFS來處理數據。但由於這些數據僅在一個節點上處理,我寧願避免分發它。但我的理解是HDFS保持數據冗餘 - 儘管我無法找到任何信息,如果這意味着HDFS上的所有數據在所有節點上都可用,或者數據大部分在它處理的節點上(本地)。

如果HDFS上的數據完全冗餘,那麼由於我的使用場景的IO原因,這將是我關心的問題。

回答

1

您可以使用Hadoop(Map Reduce + HDFS)來解決您的問題。

  1. 您可以根據需要告訴HDFS存儲特定數量的副本。見下文dfs.replication屬性。如果您只需要一個副本,請將此值設置爲1。

CONF/HDFS-site.xml中 - 在主站和所有從機

<property> 
    <name>dfs.replication</name> 
    <value>1</value> 
    <description>Default block replication. 
    The actual number of replications can be specified when the file is created. 
    The default is used if replication is not specified in create time. 
    </description> 
</property> 

不必HDFS複製對每一個節點的數據。更多info

  1. Hadoop的工作原理是'將代碼移至數據'。由於移動代碼(主要以MB爲單位)所需的網絡帶寬要比移動GB或TB中的數據所需的網絡帶寬少得多,因此您無需擔心數據局部性或網絡帶寬。 Hadoop會照顧它。