我还是 Hadoop 的新手,这次尝试处理一个 106GB 的文件。我曾经将-copyFromLocal
这个大文件复制到我的 Hadoop DFS,但由于文件很大,我不得不等待很长时间,而无法知道当前的复制状态。
有没有办法用这个命令显示当前文件复制状态?
提前感谢你们的帮助!
答案1
CopyFromLocal
无法显示文件复制进度。或者,您可以打开另一个 shell 并运行$ watch hadoop fs -ls <filenameyouarecopying>
。这将每 2.0 秒显示一次文件及其大小。
答案2
还可以使用pv
命令跟踪读取本地文件的进度并将文件内容传送到hdfs dfs
标准输入:
pv mylargefile.txt | hdfs dfs -put - /path/to/file/on/hdfs/mylargefile.txt
答案3
看起来任何复制命令(copyFromLocal、copyToLocal、get、put)都没有详细选项。最好的办法可能是查看 HDFS 上目标文件的大小,以衡量其进度。
答案4
您可以使用“nohup &”将复制作为后台进程执行。nohup 会使该进程在您退出服务器后继续执行。您可以随时使用“hadoop fs -ls”检查该进程。