我正在研究 SunOS(有点脑残)。以下是上述 Solaris 机器的磁盘吞吐量 -
bash-3.00$ iostat -d 1 10
sd0 sd1 sd2 sd3
kps tps serv kps tps serv kps tps serv kps tps serv
0 0 0 551 16 8 553 16 8 554 16 8
0 0 0 701 11 25 0 0 0 1148 17 33
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
问题陈述
我有1000 files
,每个文件的大小为1GB
. 我需要String
在所有这些1000 files
以及哪些文件中找到包含该特定字符串的文件。我正在使用Hadoop File System
,所有这些1000 files
都在 Hadoop 文件系统中。
所有的1000 files
都在real-time
文件夹下,所以如果我在下面这样做,我将获得所有1000 files
. 我需要找到哪些文件包含特定的字符串。
bash-3.00$ hadoop fs -ls /apps/technology/b_dps/real-time
因此,对于上述问题陈述,我使用以下命令来查找包含特定字符串的所有文件-
hadoop fs -ls /apps/technology/b_dps/real-time | awk '{print $8}' | while read f; do hadoop fs -cat $f | grep cec7051a1380a47a4497a107fecb84c1 >/dev/null && echo $f; done
因此,在上述情况下,它将找到包含此字符串cec7051a1380a47a4497a107fecb84c1的所有文件。它对我来说工作正常,我能够获取包含特定字符串的文件名。
我的问题是-
但是上面命令的问题是,它非常非常慢。那么我们有什么办法可以parallelize
使用上述命令或使上述命令更快地搜索文件?
任何建议将不胜感激。