私は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
、または上記のコマンドを作成してファイルをより高速に検索する方法はありますか?
任意の提案をいただければ幸いです。