DatanodeID
public String name;
/// 内容存放 :“hostname:portNumber” 也可以没有端口
///name 的值配置在这个 hdfs-site.xml的{dfs.datanode.address}
public String storageID;
/// 存放介质 不同机器存放不同介质。
protected int infoPort;
/// infoserver 的端口
public int ipcPort;
/// ipc server 端口
方法:
读出主机ip
public String getHost() {
int colon = name.indexOf(":");
if (colon < 0) {
return name;
} else {
return name.substring(0, colon);
}
}
读出主机端口 默认是50010
public int getPort() {
int colon = name.indexOf(":");
if (colon < 0) {
return 50010; // default port.
}
return Integer.parseInt(name.substring(colon+1));
}
equals和hashCode 由name 和storageID共同决定
public boolean equals(Object to) {
if (this == to) {
return true;
}
if (!(to instanceof DatanodeID)) {
return false;
}
return (name.equals(((DatanodeID)to).getName()) &&
storageID.equals(((DatanodeID)to).getStorageID()));
}
public int hashCode() {
return name.hashCode()^ storageID.hashCode();
}
因为介质不可能发生改变。 所以updateRegInfo只有三个参数
public void updateRegInfo(DatanodeID nodeReg) {
name = nodeReg.getName();
infoPort = nodeReg.getInfoPort();
ipcPort = nodeReg.getIpcPort();
// update any more fields added in future.
}
分享到:
相关推荐
2. **准备应答并更新DatanodeID**:对于每个接入请求,NameNode都会准备相应的响应,并更新请求中包含的`DatanodeID`。 3. **获取对应的DatanodeDescriptor**:NameNode会根据`StorageID`从`datanodeMap`中查找对应...
- `DatanodeInfo`和`DatanodeID`:这两个类在`org.apache.hadoop.hdfs.protocol`包中,分别表示DataNode的基本信息和唯一标识。 - `DatanodeDescriptor`:继承自`DatanodeInfo`,提供了更多的附加信息,如Block的...
转向`Datanode*`类,`DatanodeID`和`DatanodeInfo`在`org.apache.hadoop.hdfs.protocol`包中定义,而`DatanodeDescriptor`是`DatanodeInfo`的子类,增加了更多NameNode所需的状态信息。`DatanodeDescriptor`包含`...
<datanode id="dn1"> <dbhost>192.168.1.1 <dbport>3306 <dbname>test <username>root <password>password <writeHost id="writeHost1" weight="1"> <readHost id="readHost1" weight="1" load="1" ...
在启动服务之前,我们需要格式化 Namenode,使用命令 ${HADOOP_HOME}/bin/hdfs namenode -format -clusterid [clusterID]。然后,在某个 Namenode 上执行 ${HADOOP_HOME}/sbin/,启动服务。 高可用性 在这个部署...
客户端首先创建一个新的SocketOutputStream,向DataNode发送读取Block的请求头,包括数据传输版本、操作类型、Block ID、生成戳、起始偏移量和读取长度等信息。接着,客户端创建SocketInputStream,并检查返回的消息...
- 使用`cat ~/.ssh/id_rsa.pub`命令将公钥内容追加到`authorized_keys`文件中,以允许Master无密码登录到Slave节点。 3. HDFS配置: - 虽然具体内容没有在文档中列出,但根据标题可以推断,接下来应该是关于如何...
- 如果你有Hadoop的源码,并且对错误定位有深入需求,可以查看相关源码模块,特别是与进程管理和停止相关的部分,例如`ResourceManager`或`DataNode`的停止逻辑。 9. **工具使用**: - 使用如`jstack`或`ps`命令...
1、hadoop-root-datanode-master.log 中有如下错误:ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in导致datanode启动不了。原因:每次namenode format...
1. **DataNode**:表示决策树的节点,包含属性、子节点和类别信息。 2. **Dataset**:存储数据实例的类,提供数据预处理、计算信息熵等功能。 3. **Attribute**:表示数据集中的一项属性,包括属性名和可能的取值。 ...
Namenode负责维护整个HDFS文件系统的目录树结构和每一个文件的block信息,包括block的id、所在的Datanode服务器等信息。Namenode的元数据管理是HDFS的核心组件之一。 ### Datanode数据存储 Datanode负责存储文件的...
1. **查找ID文件**:如果经过检查发现NameNode与DataNode之间的节点ID不一致,那么需要找到对应的ID文件。这些文件通常位于Hadoop的`conf`目录下,文件名为`hadoop-env.sh`。 2. **手动修改ID**:在`hadoop-env.sh...
它记录了每个文件对应的block块信息,如block ID和所在的DataNode服务器。 2. 文件块映射:NameNode负责确定文件块到DataNode的映射关系,确保客户端能够找到并访问所需数据。它在客户端与DataNode之间协调数据共享...
- **Namenode验证文件**:Namenode检查文件是否存在,并获取该文件的元信息(包括Block ID及对应的DataNode列表)。 - **客户端选择DataNode**:客户端选择一个网络距离最近的DataNode,并向其请求读取数据块。如果...
而DataNode的VERSION文件中,blk_<id>文件保存具体的数据块内容,blk_<id>.meta文件保存数据块的属性信息,如版本、类型信息和校验和。 HDFS架构通过这样的设计能够支持大规模数据存储,并通过冗余复制提供容错能力...
1、准备新的DataNode节点机器,配置SSH互信,可以直接复制已有DataNode中.ssh目录中的authorized_keys和id_rsa 2、复制Hadoop运行目录、hdfs目录及tmp目录至新的DataNode 3、在新DataNode上启动hadoop ..sbin/...
在Hadoop的数据结构中,`Storage`类是核心,它包含了关于存储的相关信息,如版本号(layoutVersion)、命名空间ID(namespaceID)和创建时间(cTime)。`StorageInfo`是`Storage`的基类,提供了这些基本信息。`...
NameNode维护了一个文件系统树,其中包含了文件和目录的元数据,以及文件块的ID列表和位置信息。 ##### 1.4 数据复制 为了提高数据的可用性和容错性,HDFS会对每一个块进行复制。通常情况下,每个块都会被复制三份...
在上面的配置文件中,HDFS 高可用配置被启用,NameNode 的名称服务 ID 被设置为 "ruozeclusterg7",NameNode 的 ID 被设置为 "nn1" 和 "nn2",RPC 通信地址被设置为 "ruozedata001:8020" 和 "ruozedata002:8020",...