HDFS1.0 学习笔记(一)

2017-12-26  本文已影响0人  武小寺

系统架构

物理架构

NameNode

对于实际文件数据的保存与操作,都是由DataNode负责。当一个客户端请求数据时,它仅仅是从NameNode中获取文件的元信息,而具体的数据传输不需要经过NameNode,是由客户端直接与相应的DataNode进行交互。

需要注意的是,NameNode元信息并不包含每个块的位置信息,这些信息会在NameNode启动时从各个DataNode获取并保存在内存中,因为这些信息会在系统启动时由数据节点重建。把块位置信息放在内存中,在读取数据时会减少查询时间,增加读取效率。NameNode也会实时通过心跳机制和DataNode进行交互,实时检查文件系统是否运行正常。不过NameNode元信息会保存各个块的名称及文件由哪些块组成。

SecondaryNameNode

DataNode

NameNode和DataNode架构图

问题

#Sun Dec 20 03:37:06 CST 2015
namespaceID=555938486
clusterID=CID-6d9c34e0-9d84-45be-8442-be73a03ddea8
cTime=0
storageType=NAME_NODE
blockpoolID=BP-391569129-10.6.3.43-1450226754562
layoutVersion=-59
  1. namespaceID :是文件系统的唯一标识符,在文件系统首次格式化之后生成的

  2. cTime :表示 NameNode 存储时间的创建时间,由于笔者我的 NameNode 没有更新过,所以这里的记录值为 0,以后对 NameNode 升级之后,cTime 将会记录更新时间戳

  3. storageType :说明这个文件存储的是什么进程的数据结构信息(如果是 DataNode,storageType=DATA_NODE)

  4. blockpoolID:是针对每一个 Namespace 所对应的 blockpool 的 ID,上面的这个 BP-391569129-10.6.3.43-1450226754562 就是在我的 nameserver1 的 namespace下的存储块池的 ID,这个 ID 包括了其对应的 NameNode 节点的 ip 地址。

  5. layoutVersion :表示 HDFS 永久性数据结构的版本信息, 只要数据结构变更,版本号也要递减,此时的 HDFS 也需要升级,否则磁盘仍旧是使用旧版本的数据结构,这会导致新版本的 NameNode 无法使用

  6. clusterID :是系统生成或手动指定的集群 ID,在 -clusterid 选项中可以使用它;如下说明

使用如下命令格式化一个 Namenode:
$HADOOP_HOME/bin/hdfs namenode -format [-clusterId <cluster_id>]
选择一个唯一的 cluster_id,并且这个 cluster_id 不能与环境中其他集群有冲突。如果没有提供 cluster_id,则会自动生成一个唯一的 ClusterID。

使用如下命令格式化其他 Namenode:
HADOOP_HOME/bin/hdfs namenode -format -clusterId <cluster_id> 升级集群至最新版本。在升级过程中需要提供一个 ClusterID,例如:HADOOP_PREFIX_HOME/bin/hdfs start namenode --config $HADOOP_CONF_DIR -upgrade -clusterId <cluster_ID>
如果没有提供 ClusterID,则会自动生成一个 ClusterID。

上一篇下一篇

猜你喜欢

热点阅读