簡體   English   中英

HDFS中用於異構Hadoop集群的數據放置和分發

[英]Data placement and distribution in HDFS for heterogeneous Hadoop cluster

我已經安裝了具有5個異構節點的Apache Hadoop 2.x ,其中一個節點專門用於NameNode。

我正在使用以下命令將輸入​​文件放入HDFS

$ hdfs dfs -put /home/hduser/myspace/data /user/hduser/inputfile

HDFS將此輸入文件復制到三個DataNodes (DN) ,這意味着第四個DataNode沒有輸入塊。 如果我使用8個映射器(通過使用NLineInputFormat()方法設置拆分大小),那么會將這8個映射器分配給所有4個DN。 我認為應該是。 在這種情況下,來自其他DN的數據塊將移至第4個DN,由分配給它的映射器進行計算,這會增加總體執行時間。

我的問題是:

  1. 我們能否以某種方式設法將數據塊放置在每個DN上,從而無需在特定DN上移動映射器的數據。 它可以通過hdfs的“ put”命令完成嗎?

  2. 同樣在異構集群的情況下,是否可以根據節點的計算能力將不同大小的數據放在不同的DN上?

我們無法在每個DN上放置數據塊。您提到了HDFS將文件復制到3個DN。 僅當文件大小小於塊大小時,這才是正確的。 HDFS通過將文件分成多個塊來復制數據。 因此,文件數據(塊)分布在所有4個DN中的可能性更大。

塊放置完全取決於hadoop,它將在內部管理塊放置,您只能通過以下方式配置復制數量:

dfs.replication.factor

或大小

dfs.block.size

完成您的期望。

如果要檢查塊放置,可以打開HDFS的Web UI,即

名稱節點:50070

並瀏覽到此處的文件,它將向您顯示所有節點之間的塊放置。

暫無
暫無

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

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