为什么UserGroupInformation类是这样设计的? 为什么 UserGroupInformation 类的setConfiguration(Configuration conf)方法是静态的?
我的理解是,这将限制客户端每个JVM只能连接一个集群。
我们如何从单个JVM同时连接到多个集群?我认为这是Hadoop API目前尚未支持的一个非常基本的场景。
任何帮助都将不胜感激。
答案 0 :(得分:3)
一般来说,使方法静态化的主要动机是方便。您可以在不创建任何对象的情况下调用静态方法,只需使用它的类名。因此,如果您需要一个方法,您希望通过类名直接调用该方法,请将该方法设为静态。实用类例如java.lang.Math
或StringUtils
是类的好例子,它使用静态方法。
setConfiguration(Configuration conf)
-
设置UGI的静态配置。特别是,设置安全认证机制和组查找服务。
我们如何从单一的同时连接到多个集群 JVM?我认为这是一个非常基本的情况,目前还没有 由Hadoop API支持。
Ans: Hadoop API在这里使用的是单独的设计模式。你不能这样做,因为如果你可以想象要求使用对象继承或需要为你的方法使用多态,你绝对应该跳过静态并使它成为一个实例方法。
这里描述了一个很好的场景:Static methods are a code smell
答案 1 :(得分:1)
我不确定为什么他们让这个方法变得静态。但是,如果您想从单个JVM访问多个集群,那么您可以使用多个类加载器来解决从单个JVM设置多个配置的问题。
以下是一些链接: