我從本地文件系統複製了一個10Gig文件到hdfs(通過使用-copyFromLocal),它是在所有datanodes之間分發還是僅在namenode上?我怎麼能確定它已經分發到所有datanode上?hadoop通過copyFromLocal分發文件
1
A
回答
1
正如我們所知,文件的元數據存儲在Namenode上,而實際數據存儲在羣集的Datanode上。
如果您已經移動了10 Gig文件,那麼該文件的絕對元數據將存儲在Namenode上,並且數據將存儲在Datanodes上。但是,文件的大小遠大於塊大小(通常爲64 MB或128 MB),那麼該文件數據肯定會存儲在羣集的多個不同Datanodes塊上(由於複製因素)。
只有Namenode具有羣集中這些數據位置的知識。
1
無論何時將文件複製到HDFS,它都將分佈在從節點中。根據文件的大小,它可能分佈在幾個或多個datanode上。你可以使用'fsck'命令檢查你的文件的分佈。使用以下命令檢查文件分發參數。
$ hdfs fsck <absolute path to your file on hdfs>
0
是的,copyFromLocal
操作將在集羣上分發輸入數據的chuncks與複製副本一起。將內容寫入HDFS的任何操作都將通過羣集分配數據。
出於任何原因,Namenode服務將不會存儲數據,因爲只要準備好可用於在集羣中存儲給定輸入數據的列表數據節點,只要任何客戶端(包括hadoop -copyFromLocal
)嘗試寫入數據。一旦客戶端從namenode獲得數據節點列表,則客戶端負責將數據塊與複製一起寫入數據節點。
文件寫入剖析 Hadoop權威指南第3章中的主題將幫助您清楚地理解上述場景。
好歹可以很好地檢查/您的數據塊被分配使用以下命令的羣集在塊,
hadoop fsck <hdfs_file_path> -files -blocks -locations
這個命令將讓你怎麼知道文件的大小,塊數,複製塊,損壞塊,缺失塊。此外,它還會顯示每個塊的更多詳細信息,包括塊的存儲位置以及塊的健康狀況。
相關問題
- 1. Hadoop -copyFromLocal找不到輸入文件
- 2. Hadoop:操作過程中出錯-copyFromLocal
- 3. Hadoop的錯誤DFS -copyFromLocal
- 4. Hadoop的DFS -copyFromLocal SRC DEST
- 5. HDFS如何在CopyFromLocal中分發新的塊或文件
- 6. Hadoop - copyFromLocal內部工作流程?
- 7. Hadoop java mapper -copyFromLocal堆大小錯誤
- 8. Hadoop DFS的CopyFromLocal命令如何工作?
- 9. hadoop fs -put和hadoop fs之間的區別-copyFromLocal
- 10. Hadoop的分發文件系統
- 11. 通過cmd提取hadoop文件時無法運行sh文件
- 12. Hadoop如何分割文件?
- 13. Hadoop日誌文件分析
- 14. Hadoop發行文件系統
- 15. Hadoop過程WARC文件
- 16. 通過IpV6發送文件
- 17. 通過qextserialport發送文件
- 18. 通過sftp發送文件
- 19. 通過MSMQ發送文件
- 20. 通過Http發送文件
- 21. 通過SOCKET發送文件
- 22. 通過FTP發送文件
- 23. 通過流發送文件
- 24. 通過rabbitmq發送文件
- 25. 通過PSSession發送文件
- 26. HADOOP HTTPFS:通過Http
- 27. hadoop中的文件分割/分區
- 28. 通過電子郵件發送文件 - 多部分
- 29. 通過findbugs分析過濾jar文件
- 30. -copyFromLocal和-put