一些背景知识
- RunJar方式加载类,在Client端程序中 则jar参数指定的独有的类会采用了URLClassLoader加载,而HADOOP_CLASSPATH指定的类会采用AppClassLoader加载。双亲委派中,AppClassLoader是parent, 加载时处于优先位置。 参考http://grepcode.com/file/repo1.maven.org/maven2/org.apache.hadoop/hadoop-common/0.22.0/org/apache/hadoop/util/RunJar.java#RunJar.main%28java.lang.String[]%29
- 通过指定java.ext.dirs参数,可以采用ExtClassLoader加载,ExtClassLoader是AppClassLoader的parent, 指定的类具有更高的加载优先级。
Override Hadoop 类的几个方法
1. 指定java.ext.dirs参数;