If I launch more executors, GC gets worse.

2015-02-06 10:47 GMT+01:00 Guillermo Ortiz <konstt2...@gmail.com>:
> This is an execution with 80 executors
>
> MetricMin25th percentileMedian75th percentileMax
> Duration 31s 44s 50s 1.1min 2.6 min
> GC Time 70ms 0.1s 0.3s 4s 53 s
> Input 128.0MB 128.0MB 128.0MB 128.0MB 128.0MB
>
> I executed as well with 40 executors
> MetricMin25th percentileMedian75th percentileMax
> Duration 26s 28s 28s 30s 35s
> GC Time 54ms 60ms 66ms 80ms 0.4 s
> Input 128.0MB 128.0MB 128.0MB 128.0MB 128.0 MB
>
> I checked the %iowait and %steal in a worker it's all right in both of them
> I understand the value of yarn.nodemanager.resource.memory-mb is for
> each worker in the cluster and not the total value for YARN. it's
> configured at 196GB right now. (I have 5 workers)
> 80executors x 4Gb = 320Gb, it shouldn't be a problem.
>
>
> 2015-02-06 10:03 GMT+01:00 Sandy Ryza <sandy.r...@cloudera.com>:
>> Yes, having many more cores than disks and all writing at the same time can
>> definitely cause performance issues.  Though that wouldn't explain the high
>> GC.  What percent of task time does the web UI report that tasks are
>> spending in GC?
>>
>> On Fri, Feb 6, 2015 at 12:56 AM, Guillermo Ortiz <konstt2...@gmail.com>
>> wrote:
>>>
>>> Yes, It's surpressing to me as well....
>>>
>>> I tried to execute it with different configurations,
>>>
>>> sudo -u hdfs spark-submit  --master yarn-client --class
>>> com.mycompany.app.App --num-executors 40 --executor-memory 4g
>>> Example-1.0-SNAPSHOT.jar hdfs://ip:8020/tmp/sparkTest/ file22.bin
>>> parameters
>>>
>>> This is what I executed with different values in num-executors and
>>> executor-memory.
>>> What do you think there are too many executors for those HDDs? Could
>>> it be the reason because of each executor takes more time?
>>>
>>> 2015-02-06 9:36 GMT+01:00 Sandy Ryza <sandy.r...@cloudera.com>:
>>> > That's definitely surprising to me that you would be hitting a lot of GC
>>> > for
>>> > this scenario.  Are you setting --executor-cores and --executor-memory?
>>> > What are you setting them to?
>>> >
>>> > -Sandy
>>> >
>>> > On Thu, Feb 5, 2015 at 10:17 AM, Guillermo Ortiz <konstt2...@gmail.com>
>>> > wrote:
>>> >>
>>> >> Any idea why if I use more containers I get a lot of stopped because
>>> >> GC?
>>> >>
>>> >> 2015-02-05 8:59 GMT+01:00 Guillermo Ortiz <konstt2...@gmail.com>:
>>> >> > I'm not caching the data. with "each iteration I mean,, each 128mb
>>> >> > that a executor has to process.
>>> >> >
>>> >> > The code is pretty simple.
>>> >> >
>>> >> > final Conversor c = new Conversor(null, null, null,
>>> >> > longFields,typeFields);
>>> >> > SparkConf conf = new SparkConf().setAppName("Simple Application");
>>> >> > JavaSparkContext sc = new JavaSparkContext(conf);
>>> >> > JavaRDD<byte[]> rdd = sc.binaryRecords(path, c.calculaLongBlock());
>>> >> >
>>> >> >  JavaRDD<String> rddString = rdd.map(new Function<byte[], String>() {
>>> >> >      @Override
>>> >> >       public String call(byte[] arg0) throws Exception {
>>> >> >          String result = c.parse(arg0).toString();
>>> >> >           return result;
>>> >> >     }
>>> >> >  });
>>> >> > rddString.saveAsTextFile(url + "/output/" +
>>> >> > System.currentTimeMillis()+
>>> >> > "/");
>>> >> >
>>> >> > The parse function just takes an array of bytes and applies some
>>> >> > transformations like,,,
>>> >> > [0..3] an integer, [4...20] an String, [21..27] another String and so
>>> >> > on.
>>> >> >
>>> >> > It's just a test code, I'd like to understand what it's happeing.
>>> >> >
>>> >> > 2015-02-04 18:57 GMT+01:00 Sandy Ryza <sandy.r...@cloudera.com>:
>>> >> >> Hi Guillermo,
>>> >> >>
>>> >> >> What exactly do you mean by "each iteration"?  Are you caching data
>>> >> >> in
>>> >> >> memory?
>>> >> >>
>>> >> >> -Sandy
>>> >> >>
>>> >> >> On Wed, Feb 4, 2015 at 5:02 AM, Guillermo Ortiz
>>> >> >> <konstt2...@gmail.com>
>>> >> >> wrote:
>>> >> >>>
>>> >> >>> I execute a job in Spark where I'm processing a file of 80Gb in
>>> >> >>> HDFS.
>>> >> >>> I have 5 slaves:
>>> >> >>> (32cores /256Gb / 7physical disks) x 5
>>> >> >>>
>>> >> >>> I have been trying many different configurations with YARN.
>>> >> >>> yarn.nodemanager.resource.memory-mb 196Gb
>>> >> >>> yarn.nodemanager.resource.cpu-vcores 24
>>> >> >>>
>>> >> >>> I have tried to execute the job with different number of executors
>>> >> >>> a
>>> >> >>> memory (1-4g)
>>> >> >>> With 20 executors takes 25s each iteration (128mb) and it never has
>>> >> >>> a
>>> >> >>> really long time waiting because GC.
>>> >> >>>
>>> >> >>> When I execute around 60 executors the process time it's about 45s
>>> >> >>> and
>>> >> >>> some tasks take until one minute because GC.
>>> >> >>>
>>> >> >>> I have no idea why it's calling GC when I execute more executors
>>> >> >>> simultaneously.
>>> >> >>> The another question it's why it takes more time to execute each
>>> >> >>> block. My theory about the this it's because there're only 7
>>> >> >>> physical
>>> >> >>> disks and it's not the same 5 processes writing than 20.
>>> >> >>>
>>> >> >>> The code is pretty simple, it's just a map function which parse a
>>> >> >>> line
>>> >> >>> and write the output in HDFS. There're a lot of substrings inside
>>> >> >>> of
>>> >> >>> the function what it could cause GC.
>>> >> >>>
>>> >> >>> Any theory about?
>>> >> >>>
>>> >> >>>
>>> >> >>> ---------------------------------------------------------------------
>>> >> >>> To unsubscribe, e-mail: user-unsubscr...@spark.apache.org
>>> >> >>> For additional commands, e-mail: user-h...@spark.apache.org
>>> >> >>>
>>> >> >>
>>> >
>>> >
>>
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@spark.apache.org
For additional commands, e-mail: user-h...@spark.apache.org

Reply via email to