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