Amazon web services 在amazon EMR上降低100%Cpu利用率的配置单元提示

Amazon web services 在amazon EMR上降低100%Cpu利用率的配置单元提示,amazon-web-services,hadoop,hive,amazon-emr,Amazon Web Services,Hadoop,Hive,Amazon Emr,我使用下表来处理大约15GB(.gz压缩)的IIslog。 使用amazon EMR(1个中型主实例,4个大型核心实例,2个任务实例)。甚至需要大约1小时才能获得此查询的结果: select uri, cs_Cookie as Cookie, count(*) as hits from tmp1 group by cs_Cookie, uri order by hits Desc; 我看到所有数据节点上的cpu利用率都是100%。那么,有谁能建议如何减少查询时间和cpu利用率 表定义: cre

我使用下表来处理大约15GB(.gz压缩)的IIslog。 使用amazon EMR(1个中型主实例,4个大型核心实例,2个任务实例)。甚至需要大约1小时才能获得此查询的结果:

select uri, cs_Cookie as Cookie, count(*) as hits from tmp1 group by cs_Cookie, uri order by hits Desc;
我看到所有数据节点上的cpu利用率都是100%。那么,有谁能建议如何减少查询时间和cpu利用率

表定义:

create external table marData(logdate string, time string, computername string, clientip string, uri string, qs string, localfile string, status string, referer string, w3status string, sc_bytes string, cs_bytes string, w3wpbytes string, cs_username string, cs_user_agent string, time_local string, timetakenms string, sc_substatus string, s_sitename string, s_ip string, s_port string, RequestsPerSecond string, s_proxy string, cs_version string, c_protocol string, cs_method string, cs_Host string, EndRequest_UTC string, date_local string, CPU_Utilization string, cs_Cookie string, BeginRequest_UTC string) partitioned by (month string) ROW FORMAT SERDE
'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
               WITH SERDEPROPERTIES (
               "input.regex" ="([0-9-]+) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\".*\"|[^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\".*\"|[^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\".*\"|[^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([0-9-]+ [0-9:.]+) ([^ ]*) ([^ ]*) (\".*\"|[^ ]*) ([0-9-]+ [0-9:.]+)",
               "output.format.string"="%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s %10$s %11$s %12$s %13$s %14$s %15$s %16$s %17$s %18$s %19$s %20$s %21$s %22$s %23$s %24$s %25$s %26$s %27$s %28$s %29$s %30$s %31$s %32$s")
location 's3://logdata/Mar';

在此查询期间,节点上的内存使用情况如何

正如@Charles Menguy在评论中所说的,cpu的高使用率并不是天生的坏事


<>你可以考虑使用更多、更大的节点在更短的时间内完成任务。这可能需要一些实验,但这对你来说可能更便宜。例如,我们发现切换到更大的节点(我们使用m2.xlarge)可以使我们的作业每美元的运行速度比最初使用更多m1.xlarge实例的速度更快。

为什么这是一件坏事?100%的CPU表示您的群集正忙,这很好,如果低于100%,则表示您没有充分利用群集。我正在搜索群集利用率不足的原因。我要100%的感谢大家的建议。我还有一个查询,我目前正在使用REGEX解析日志数据,如表定义中所示。Regex在内部使用哈希表来解析数据并消耗大量内存。我能用更好的方法吗?