2

我是 PIG 和 HDFS 的新手。这是我想要做的。

我有很多纯文本 LZO 压缩格式错误的服务器日志文件 - 每个大约 2 GB 每天从大约 400 台服务器生成。

我正在尝试利用 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 个节点的集群,我想知道如果我可以生成更多的映射器,我是否可以并行使用更多的服务器。

提前致谢

4

1 回答 1

1

PigStorage 中的压缩支持不提供拆分功能。对于 pig 的可拆分 lzo 压缩支持,您需要来自 twitter 的大象鸟库。此外,要使用现有的常规 lzo 文件进行拆分工作(正确地?),您需要在加载猪脚本之前对它们进行索引。

于 2012-09-21T04:58:53.473 回答