目前我正在处理大约19千兆字节的日志数据,
并且它们是分开的,因此输入文件的nubmer是145258(pig stat)。
在Web UI中执行应用程序和启动mapreduce作业之间
浪费了大量时间准备(约3小时?)然后mapreduce工作开始。
并且mapreduce作业本身(通过Pig脚本)非常慢,大约需要一个小时。
mapreduce逻辑并不复杂,就像按操作分组一样。
我有3个数据节点和1个namenode,1个辅助名称节点。
如何优化配置以提高mapreduce性能?
答案 0 :(得分:1)
您应该将pig.maxCombinedSplitSize设置为合理的大小,并确保将pig.splitCombination设置为其默认值true。
您的数据在哪里?在HDFS上?在S3?如果数据在S3上,你应该将数据合并到较大的文件中,然后在其上执行你的猪脚本,否则,无论如何都需要很长时间 - S3返回带有分页的对象列表,需要很长时间才能获取列表(如果您在存储桶中有更多对象,并且您没有搜索只有前缀模式的文件,hadoop将列出所有对象(因为S3中没有其他选项)。
答案 1 :(得分:1)
尝试hadoop fs -ls /path/to/files | wc -l
并查看回来需要多长时间 - 您有两个问题:
正如已经建议的那样,尝试将文件组合成更合理的文件大小(块大小附近或其倍数)。也许你可以将同一小时的所有文件合并到一个连接文件中(或者到一天,取决于你的处理用例)。
答案 2 :(得分:0)
看起来问题更多的是Hadoop而不是Pig。您可能希望尝试将所有小文件合并到Hadoop存档中,看看它是否可以提高性能。有关详细信息,请参阅this link
您可以尝试的另一种方法是运行一个单独的Pig作业,该作业会定期将所有日志文件UNION转换为一个“大”日志文件。这应该有助于减少主要工作的处理时间。