-
使用命令
将hdfs上文件拷到本地:
hadoop fs -get url localurlrm -rf url 删除文件及目录。
du -sm * | sort -n 统计当前目录下的文件大小并排序
hadoop fs -du url 显示hadoop 路径下的文件大小及路径 -
保护进程
使用上边的hadoop fs -get url localurl 来拷贝大文件到本地的话很容易中途断掉。原因是:文件过大,拷贝时间过长,一旦shell客户端的网络状况不良则会拷贝中断。(..+ &)将当前任务提交给后台,让后台去执行。从而使这个任务在本地执行,不停止/重启hadoop则不会拷贝中断。
解决方法:在命令末尾加 & 符号。
eg:hadoop fs -get /xxx/bb /yyy/aa &其他思想
关于这样用命令来拷贝文件其实是很慢的(特别是大文件时,问题更突出),一般1TB 的文件使用这样的命令拷贝完成时间一般为10小时左右。所以最好的处理这类的方法是对一个大文件进行多个线程的处理,使用编程来做到。这样就快多了。文件名长度影响拷贝
一般在liunx系统中文件命不能超过255字符,长度超过则文件拷贝时报错:fileName is too long!从而拷贝中断。这个问题就要先查下文件中是否存在这样的过长文件名。
另:在拷贝过程中有些文件会报错,但只要程序还在继续运行就不用管这些错(我是因为没有找到原因和解决的方法,有谁知道请多指教,以后明白原因后再回来改过。)。