2017-10-10 15 views
2

J'ai un cluster de fils avec étincelle (1.6.1), hdfs et ruche (2.1). Mes workflows ont bien fonctionné pendant quelques mois jusqu'à ce jour (sans aucun changement dans le code/sur les environnements). J'ai commencé à des erreurs comme celle-ci:org.apache.hive.com.esotericsoftware.kryo.KryoException: Identifiant de classe non enregistré rencontré: 21

org.apache.hive.com.esotericsoftware.kryo.KryoException: Encountered unregistered class ID: 21 
Serialization trace: 
outputFileFormatClass (org.apache.hadoop.hive.ql.plan.PartitionDesc) 
aliasToPartnInfo (org.apache.hadoop.hive.ql.plan.MapWork) 
invertedWorkGraph (org.apache.hadoop.hive.ql.plan.SparkWork) 
    at org.apache.hive.com.esotericsoftware.kryo.util.DefaultClassResolver.readClass(DefaultClassResolver.java:119) 
    at org.apache.hive.com.esotericsoftware.kryo.Kryo.readClass(Kryo.java:656) 
    at org.apache.hive.com.esotericsoftware.kryo.serializers.DefaultSerializers$ClassSerializer.read(DefaultSerializers.java:238) 
    at org.apache.hive.com.esotericsoftware.kryo.serializers.DefaultSerializers$ClassSerializer.read(DefaultSerializers.java:226) 
    at org.apache.hive.com.esotericsoftware.kryo.Kryo.readObjectOrNull(Kryo.java:745) 
    at org.apache.hive.com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:113) 
    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) 
    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:131) 
    at org.apache.hive.com.esotericsoftware.kryo.serializers.MapSerializer.read(MapSerializer.java:17) 
    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.readObject(Kryo.java:672) 
    at org.apache.hadoop.hive.ql.exec.spark.KryoSerializer.deserialize(KryoSerializer.java:49) 
    at org.apache.hadoop.hive.ql.exec.spark.RemoteHiveSparkClient$JobStatusJob.call(RemoteHiveSparkClient.java:318) 
    at org.apache.hive.spark.client.RemoteDriver$JobWrapper.call(RemoteDriver.java:366) 
    at org.apache.hive.spark.client.RemoteDriver$JobWrapper.call(RemoteDriver.java:335) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

Utiliser la ruche que je peux faire de simples sélectionne, mais toutes les autres opérations qui a besoin de l'étincelle se termine par Error: Error while processing statement: FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask (state=08S01,code=3) dans la console, et l'erreur ci-dessus dans les journaux de fil. Maintenant, ma base de données de chaque ruche est paralysée (j'en ai peu). J'essayais de résoudre ce problème toute la journée, mais je ne pouvais rien faire (redémarrage de la ruche, redémarrage du noeud, changement de maître de fil).

D'après vous, qu'est-ce qui cause le problème et comment peut-il être résolu?

Répondre

1

Je l'ai compris. Après le redémarrage de hive-server2 pour une petite période de temps au lieu d'obtenir l'erreur: org.apache.hive.com.esotericsoftware.kryo.KryoException: Encountered unregistered class ID: 26 j'ai eu l'erreur: org.apache.hive.com.esotericsoftware.kryo.KryoException: Unable to find class: org.apache.hadoop.hive.ql.io.RCFileOutputFormat. Avec la deuxième forme, il était évident que l'étincelle exécutée sur les nœuds n'avait pas de jarres sur le chemin de classe. Je ne sais pas la raison, pourquoi l'étincelle dans un moment était incapable de charger ces bocaux, mais après les avoir copiés manuellement dans son dossier lib sur chaque nœud et redémarrer le nœud, tout est revenu à la normale.