知识点
相关文章
更多最近更新
更多FSNamesystem几个重要的成员变量
2019-03-28 13:24|来源: 网络
FSNamesystem中有几个非常重要的变量,对于理解NameNode的实现具有重要意义。下面,我们看一下这几个变量和他的作用。
- lblocksMap:blocksMap是类BlocksMap的实例,其代表了Block→{INode、datanodes}的映射。具体代表了每一个Block在哪一个DataNode上存储。
- datanodeMap:datanodeMap是类NavigableMap的实例,代表了datanode→block之间的映射关系。该map的key是StorageID,value是DatanodeDescriptor,即<String, DatanodeDescriptor>。该Map一般在下面三种情况下会被修改:
1.added to the map if it is a new storage id
2.Updated with a new datanode started as a replacement for the old one with the same storage id
3.Remove if and only if an existing datanode is restarted to serve a different storage id
- corruptReplicas:corruptReplicas是CorruptReplicasMap的一个实例。corruptReplicas保存了文件系统中所有的损坏block。注意,只有一个block的所有备份存储都损坏才认为该block是损坏的。其保存的形式如下,一个block和所有保存该block的datanode,Block→TreeSet<DatanodeDescriptor>
- host2DataNodeMap:host2DataNodeMap是类Host2NodesMap的实例,它保存了主机名到datanode之间的映射关系,即ip:port→DatanodeDescriptor的映射关系。
- dir:dir是FSDirectory的实例,他里面包含了INodeFile和INodeDirectory的层次结构。INodeFile和INodeDirectory分别对应硬盘上的文件和目录。每一个INodeFile都包含了该文件所拥有的所有的数据块,即dir保存了file→blocks的映射。
相关问答
更多-
MIC组合里面有几个成员,他们分别叫什么[2024-02-20]
由队长王浩、副队长赵泳鑫、团员檀健次、肖顺尧、池约翰五个男孩组合而成。 -
为什么静态成员变量要通过类外初始化赋值?[2023-08-26]
当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。 静态数据成员的用途之一是统计有多少个对象实际存在。 静态数据成员不能在类中初始化,实际上类定义只是在描述对象的蓝图,在其中指定初值是不允许的。也不能在够造函数中初始化该成员,因为静态数据成员为类的各个对象共享,那么每次创建一个类的对象则静态数据成员都要被重新初始化。 -
java 怎样让单例模式构建的类中有多个成员变量[2023-05-21]
跟定义单例中的对象一样,用private static final修饰就可以了啊。。。增加get方法(set方法加不了,因为是不可改变的),这样他的成员变量你直接用类名来点相应的get方法就可以了。。。唯一的不可变的 -
objective-c类成员函数与成员变量的访问性问题[2021-09-30]
方法是没有访问级别的,跟ObjectiveC跟C(不是C++)是类似的。 C里面定义了方法,但是如果不给出声明,别人调用时候是找不到的(虽然自己声明一个一模一样的方法也可以)。ObjectiveC也是一样,所有方法都没有访问保护级别(@property属性也是方法的一种) 只有一种有访问级别,就是大括号里面定义的成员变量,里面有public和private,貌似是没有protected的概念(可能有,但是我完全不用的)。 ObjectiveC 2.0以上已经很少需要自己定义成员变量了。@synthesize ... -
MFC 成员变量 数组初始化[2023-12-17]
有时vc编译器会莫名其妙出问题,尤其是6.0。建议你clean清除项目,重新编译。 -
成员变量就是全局变量吗?[2024-02-10]
不是的,,成员变量相当于程序集变量,,而全局变量是指在这个整个的程序内都可以使用这一个变量。而成员变量如果切换到另一个程序集后就不能使用了,纯属手打望最佳 -
java局部变量和成员变量名相同[2023-10-14]
实际上,java里面,在同一个作用域下,不能定义一样的标识符(也就是你做说的变量名)。为什么呢?因为,他需要保证你在某个作用于下使用某个标识符的时候,JVM能够正确进行区分!所以,实际上,全局变量和局部变量和内存并不存在绝对直接的关系。实际上,不管是全局的还是局部的变量,他的标识都是保存在栈里面的。 成员变量作用域在整个类,方法中为什么可以再重复定义? 因为在java中,局部定义的变量能够覆盖全局范围内的变量。在局部使用某个变量的时候JVM会优先找和当前使用位置"近"的变量的的定义!如果在局部定义了和全局变 ... -
是否应该使用受保护的成员变量? 取决于你对隐藏状态的挑剔。 如果你不想要任何内部状态的泄漏,那么将所有的成员变量声明为私有的就是要走的路。 如果你真的不在乎子类可以访问内部状态,那么保护就够了。 如果一个开发人员来到这个类,那么你可以把它们分类,因为他们完全不了解它们。 私人会员除了公共界面外,他们无法看到实现方式的具体细节,这些细节是如何进行的,这些细节可以让您稍后进行更改。 Should you ever use protected member variables? Depends on how pi ...
-
这是因为您已经通过类的__init__方法将board分配给了Game类,而不是单个实例,从而导致Game每个实例共享相同的Game.board属性。 为了确保每个实例都有自己的独立值,需要使用__init__ : def __init__(self, name): self.name = name self.board = [1, 2, 3] 如果你希望board成为具有潜在违约价值的可转让论证,如果你写了类似的东西,你将再次陷入类似的陷阱 def __init_ ...