[ https://issues.apache.org/jira/browse/HIVE-12175?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14957900#comment-14957900 ]
Gopal V commented on HIVE-12175: -------------------------------- Kryo is currently thrashing the perm-gen in the higher concurrency queries. Using the newer Kryo will bypass some of these issues by relying on Unsafe access instead of creating more proxy classes. {code} ERROR org.apache.hadoop.hive.ql.exec.tez.TezProcessor: java.lang.OutOfMemoryError: PermGen space at sun.misc.Unsafe.defineClass(Native Method) at sun.reflect.ClassDefiner.defineClass(ClassDefiner.java:63) at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:399) at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:396) at java.security.AccessController.doPrivileged(Native Method) at sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:395) at sun.reflect.MethodAccessorGenerator.generateSerializationConstructor(MethodAccessorGenerator.java:113) at sun.reflect.ReflectionFactory.newConstructorForSerialization(ReflectionFactory.java:331) at org.apache.hive.com.esotericsoftware.shaded.org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.<init>(SunReflectionFactoryInstantiator.java:49) at org.apache.hive.com.esotericsoftware.shaded.org.objenesis.strategy.StdInstantiatorStrategy.newInstantiatorOf(StdInstantiatorStrategy.java:85) at org.apache.hive.com.esotericsoftware.kryo.Kryo.newInstantiator(Kryo.java:1100) at org.apache.hive.com.esotericsoftware.kryo.Kryo.newInstance(Kryo.java:1109) at org.apache.hive.com.esotericsoftware.kryo.serializers.FieldSerializer.create(FieldSerializer.java:526) at org.apache.hive.com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:502) at org.apache.hive.com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:694) at org.apache.hive.com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:106) at org.apache.hive.com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:507) at org.apache.hive.com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:776) at org.apache.hive.com.esotericsoftware.kryo.serializers.CollectionSerializer.read(CollectionSerializer.java:112) at org.apache.hive.com.esotericsoftware.kryo.serializers.CollectionSerializer.read(CollectionSerializer.java:18) at org.apache.hive.com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:694) at org.apache.hive.com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:106) at org.apache.hive.com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:507) at org.apache.hive.com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:776) at org.apache.hive.com.esotericsoftware.kryo.serializers.CollectionSerializer.read(CollectionSerializer.java:112) at org.apache.hive.com.esotericsoftware.kryo.serializers.CollectionSerializer.read(CollectionSerializer.java:18) at org.apache.hive.com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:694) at org.apache.hive.com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:106) at org.apache.hive.com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:507) at org.apache.hive.com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:776) at org.apache.hive.com.esotericsoftware.kryo.serializers.MapSerializer.read(MapSerializer.java:139) at org.apache.hive.com.esotericsoftware.kryo.serializers.MapSerializer.read(MapSerializer.java:17) {code} > Upgrade Kryo version to 3.0.x > ----------------------------- > > Key: HIVE-12175 > URL: https://issues.apache.org/jira/browse/HIVE-12175 > Project: Hive > Issue Type: Improvement > Components: Serializers/Deserializers > Affects Versions: 2.0.0 > Reporter: Prasanth Jayachandran > Assignee: Prasanth Jayachandran > > Current version of kryo (2.22) has some issue (refer exception below and in > HIVE-12174) with serializing ArrayLists generated using Arrays.asList(). We > need to either replace all occurrences of Arrays.asList() or change the > current StdInstantiatorStrategy. This issue is fixed in later versions and > kryo community recommends using DefaultInstantiatorStrategy with fallback to > StdInstantiatorStrategy. More discussion about this issue is here > https://github.com/EsotericSoftware/kryo/issues/216. Alternatively, custom > serilization/deserilization class can be provided for Arrays.asList. > Also, kryo 3.0 introduced unsafe based serialization which claims to have > much better performance for certain types of serialization. > Exception: > {code} > Caused by: java.lang.NullPointerException > at java.util.Arrays$ArrayList.size(Arrays.java:2847) > at java.util.AbstractList.add(AbstractList.java:108) > at > org.apache.hive.com.esotericsoftware.kryo.serializers.CollectionSerializer.read(CollectionSerializer.java:112) > at > org.apache.hive.com.esotericsoftware.kryo.serializers.CollectionSerializer.read(CollectionSerializer.java:18) > at > org.apache.hive.com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:694) > at > org.apache.hive.com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:106) > ... 57 more > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)