最近在處理數十 TB 的 HTTP server log 有感,記錄一些可以拿來做分散式運算的工具以及語法 (參數)。
還有不少針對 gz 的工具可以使用,像是:zcat、zgrep 和 zless (這超神奇,其實打 less 好像就會自動偵測是不是 gz 了 XD)
parallel
之前的筆記參考一下即可。
sort
排序大量資料也是會耗掉相當多的時間,幸好 sort 內建平行運算功能,只要加個參數即可。
$ sort --parallel=8 -S 4G unsort.list > sorted.list
「–parallel」可以指定要同時多少資源做排序,而「-S」則是設定要使用多大的記憶體來做排序。
xargs
感謝 Joe Horn 和 Wen-Shih Chao 提供指點,xargs 也有 parallel 的功能。使用「-P」參數就可以讓 xargs 自動做平行處理。
ls *.log | xargs -P 8 grep PATTERN
目前最常用的是這幾個,其他的就待以後用到慢慢補上。若有更好的做法也歡迎分享~