You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kylin.apache.org by "Guangxu Cheng (Jira)" <ji...@apache.org> on 2020/06/15 07:11:00 UTC
[jira] [Created] (KYLIN-4567) Improve TopN merge performance in MR
engine
Guangxu Cheng created KYLIN-4567:
------------------------------------
Summary: Improve TopN merge performance in MR engine
Key: KYLIN-4567
URL: https://issues.apache.org/jira/browse/KYLIN-4567
Project: Kylin
Issue Type: Improvement
Components: Measure - TopN
Reporter: Guangxu Cheng
Assignee: Guangxu Cheng
We have a cube that needs to calculate the TOPN of 13 columns. The number of data source is only 500k. But, the cubing job always fail when building base cuboid.
we found that the map task always killed by the ApplicationMaster due to time out
{noformat}
ERROR-[-10001]-[MR]:[Mr Task Timeout]:[AttemptID:attempt_1591996262448_229922_m_000000_1 Timed out after 3600 secs!] ERROR-[-10015]-[MR]:[Container Exit Accidentally]:[Container killed by the ApplicationMaster. Container killed on request. Exit code is 143 Container exited with a non-zero exit code 143 ]
{noformat}
the stack information as below:
{noformat}
"SpillThread" #35 daemon prio=5 os_prio=0 tid=0x00007f9a89771800 nid=0x133a2 runnable [0x00007f9a56e3f000]
java.lang.Thread.State: RUNNABLE
at java.util.LinkedList.toArray(LinkedList.java:1052)
at java.util.List.sort(List.java:477)
at java.util.Collections.sort(Collections.java:175)
at org.apache.kylin.measure.topn.TopNCounter.sortAndRetain(TopNCounter.java:96)
at org.apache.kylin.measure.topn.TopNCounter.merge(TopNCounter.java:183)
at org.apache.kylin.measure.topn.TopNAggregator.aggregate(TopNAggregator.java:44)
at org.apache.kylin.measure.topn.TopNAggregator.aggregate(TopNAggregator.java:27)
at org.apache.kylin.measure.MeasureAggregators.aggregate(MeasureAggregators.java:83)
at org.apache.kylin.engine.mr.steps.CuboidReducer.doReduce(CuboidReducer.java:108)
at org.apache.kylin.engine.mr.steps.CuboidReducer.doReduce(CuboidReducer.java:44)
at org.apache.kylin.engine.mr.KylinReducer.reduce(KylinReducer.java:77)
at org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:171)
at org.apache.hadoop.mapred.Task$NewCombinerRunner.combine(Task.java:1688)
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.sortAndSpill(MapTask.java:1645)
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.access$900(MapTask.java:884)
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer$SpillThread.run(MapTask.java:1540)
{noformat}
From the stack information, we found that sorting takes a lot of time. After merge another counter into this counter, need to re-sort this counter. Maybe we can reduce the frequency of sorting
--
This message was sent by Atlassian Jira
(v8.3.4#803005)