记录一下
find . -type f -mtime +7 | xargs rm -rf -P10 -n20
详细可参考:xargs原理及用法详解 - 【The_crossing] - 博客园
并发实现多文件上传hdfs
在Linux中,你可以使用find
命令结合xargs
来查找多个文件,并且通过xargs
的并发特性来将这些文件并发上传到HDFS(Hadoop Distributed File System)。下面是一个基本的示例流程:
首先,你需要确保你有Hadoop命令行工具(如hdfs dfs
)已安装并正确配置,以便能够上传文件到HDFS。
以下是步骤:
-
使用
find
命令查找特定模式的文件。 -
使用
-print0
选项将找到的文件列表以null字符(\0
)作为分隔符输出,这样可以处理包含空格和特殊字符的文件名。 -
将
find
命令的输出传递给xargs
。 -
使用
xargs
的-P
选项来指定并发进程数,以及-n
选项来指定每个进程处理的参数数量。 -
使用
hdfs dfs -put
命令来上传文件到HDFS。
下面是一个命令示例:
复制代码find /path/to/search -type f -name "*.txt" -print0 | xargs -P 4 -n 10 -0 hdfs dfs -put -f /path/to/hdfs/
这里的命令解释:
/path/to/search
:你需要搜索的本地路径。-type f -name "*.txt"
:指定搜索类型为文件,并且文件名匹配模式为.txt
。-print0
:使用null字符作为文件名的分隔符。-P 4
:同时运行最多4个并发进程。-n 10
:每个hdfs dfs -put
命令最多接收10个文件参数。-0
:告诉xargs
输入是以null字符作为分隔符的。hdfs dfs -put -f
:Hadoop命令行工具的命令,用于上传文件到HDFS,-f
选项表示如果目标文件已经存在,则覆盖它。/path/to/hdfs/
:HDFS上的目标路径。
请注意,HDFS的命令和选项可能根据你的Hadoop版本有所不同。此外,并发上传的数量(-P
)和每个命令的参数数量(-n
)应该根据你的系统资源和HDFS集群的性能进行调整。
确保你拥有足够的权限来上传文件到HDFS,并且HDFS集群已经启动并运行。如果你的HDFS配置了高可用性,你可能需要确保你的Hadoop配置文件(如hdfs-site.xml
和core-site.xml
)正确配置了HDFS的地址和nameservices。