NullInstance

hdfs中ReflectionUtils在实例化ObjectWritable内部类NullIn...

亡梦爱人 提交于 2019-12-07 02:09:17
hadoop版本:1.0.3 问题描述: 在研究DataNode启动代码的时候遇到这么一个问题,通过Hadoop工具类ReflectionUtils反射生成NullInstance实例时,NullInstance父类Configured的成员变量conf未正确赋值,由于未正确赋值,在随后的代码中会抛出空指针异常。 问题分析: Hadoop在ObjectWritable对象的反序列化过程中,对于非基本类型都会通过反射生成对应的类实例,在这个过程中还会根据类是不是接口Configurable的实现类,进行成员变量conf的赋值操作。相关代码如下: ObjectWritable: public static Object readObject(DataInput in, ObjectWritable objectWritable, Configuration conf) throws IOException { ... Writable writable = WritableFactories.newInstance(instanceClass, conf); writable.readFields(in); instance = writable; ... } WritableFactories: public static Writable newInstance(Class<?