1 FileSystem
2 CompressionCodec
3 TokenIdentifier
4 SecurityInfo
上面都是hadoop-commom的。下面的这个是mapreduce的:
5 ClientProtocolProvider
[img]http://dl2.iteye.com/upload/attachment/0085/4927/c117cda9-ef7a-3ff5-9568-90931bbaf8b6.png[/img]
private static void loadFileSystems() {
synchronized (FileSystem.class) {
if (!FILE_SYSTEMS_LOADED) {
ServiceLoader<FileSystem> serviceLoader = ServiceLoader.load(FileSystem.class);
for (FileSystem fs : serviceLoader) {
SERVICE_FILE_SYSTEMS.put(fs.getScheme(), fs.getClass());
}
FILE_SYSTEMS_LOADED = true;
}
}
}
2 CompressionCodec
private static final ServiceLoader<CompressionCodec> CODEC_PROVIDERS =
ServiceLoader.load(CompressionCodec.class);
3 TokenIdentifier
private static synchronized Class<? extends TokenIdentifier>
getClassForIdentifier(Text kind) {
if (tokenKindMap == null) {
tokenKindMap = Maps.newHashMap();
for (TokenIdentifier id : ServiceLoader.load(TokenIdentifier.class)) {
tokenKindMap.put(id.getKind(), id.getClass());
}
}
Class<? extends TokenIdentifier> cls = tokenKindMap.get(kind);
if (cls == null) {
LOG.warn("Cannot find class for token kind " + kind);
return null;
}
return cls;
}
4 SecurityInfo
private static ServiceLoader<SecurityInfo> securityInfoProviders =
ServiceLoader.load(SecurityInfo.class);
上面都是hadoop-commom的。下面的这个是mapreduce的:
5 ClientProtocolProvider
private static ServiceLoader<ClientProtocolProvider> frameworkLoader =
ServiceLoader.load(ClientProtocolProvider.class);
[img]http://dl2.iteye.com/upload/attachment/0085/4927/c117cda9-ef7a-3ff5-9568-90931bbaf8b6.png[/img]