2012-09-20 36 views
2

我是PIG和HDFS的新手。這是我想要做的。不斷增大的mapper數量

我有很多扁平文本LZO壓縮不適格式化的服務器日誌文件 - 每天大約有400 GB服務器生成大約2 GB的日誌文件。

我想利用map reduce來格式化並使用我的java格式化程序清理HDFS中的數據,然後將輸出加載到Hive中。

我的問題是我的PIG腳本只產生一個需要大約15分鐘的映射器。按順序讀取文件。這對於我每天必須在配置單元中加載的數據量並不實用。

這是我的豬腳本。

SET default_parallel 100; 
SET output.compression.enabled true; 
SET output.compression.codec com.hadoop.compression.lzo.LzopCodec 
SET mapred.min.split.size 256000; 
SET mapred.max.split.size 256000; 
SET pig.noSplitCombination true; 
SET mapred.max.jobs.per.node 1; 

register file:/apps/pig/pacudf.jar 
raw1 = LOAD '/data/serverx/20120710/serverx_20120710.lzo' USING PigStorage() as (field1); 
pac = foreach raw1 generate pacudf.filegenerator(field1); 
store pac into '/data/bazooka/'; 

看起來像mapred.min.split.size設置不起作用。我可以看到只有1個映射程序正在啓動,它可以在羣集的單個服務器上運行整個2 GB文件。因爲我們有一個100個節點的集羣,所以我想知道如果我可以生成更多的映射器,是否可以並行使用更多的服務器。

感謝提前PigStorage

回答

1

壓縮支持不提供splitting ability。對於帶豬的可分離Lzo壓縮支持,您需要elephant-bird library from twitter。同樣爲了與現有的常規lzo文件分開工作(正確?),您需要在加載到您的豬腳本之前將它們編入索引。