我从本地文件系统复制了一个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