HDFS之NameNode

主服务器管理文件的 命名空间

  凡是对文件系统命名或其他属性的修改信息都会保存到这里。
  比如,有个名为Eva的文件放在目录/usr下,现在要将他改名为zuo,移动到/usr/local目录下,这些修改日志都会被 NameNode的edit log文件记录。

存放HDFS的 元数据 信息

  即文件系统的目录树以及追踪集群文件,简单来说就是NameNode不实际存储数据,但是他知道数据的存放位置。这些信息不是长久固定的,每次启动系统后需要重新从数据节点获取这些信息。
  比如,向上篇中的3号block放到从节点003,008,010这个节点上,在NaemNode中就会有一个信息:“3号数据块放在003,008,010这三个节点上”。

数据块位置分配

  每个数据文件被切分成128MB的大小的数据块之后,主节点会查看各个从节点的内存情况,选取内存较合适的从节点存放数据块。

数据复制

  每个DataNode需要定期向NameNode汇报他的“心跳”,也就是说NameNode需要定期接收这些“心跳”信息,一旦某个DataNode没有向NameNode证明它还“活着”,NameNode就会标记为“死亡”,不再向它请求IO, 这个DataNode上的数据就不能被HDFS使用,那么,NameNode就会启动数据复制,将这个死掉的节点上的数据复制到一个新的节点上。

接收用户操作请求

  客户端传入的请求是不会直接由DataNode执行操作的,而是由DataNode将请求发送给NameNode,然后由NameNode判断哪个DataNode来执行这个操作,当然这个DataNode上必须有需要的数据。
  选择的依据是什么呢?
  在第一篇中有提到“移动操作比移动数据成本小”这个概念,就是为了降低过度的IO处理造成的速度低,即NameNode判断哪个从接单适合执行这个命令,将命令移动到从节点上对数据进行任务。
总结
  NameNode是HDFS文件系统的管理者,它负责存放一些“高级”信息,具有绝对指挥权。

### HDFS NameNode 配置 HDFS(Hadoop Distributed File System)中的 NameNodeHDFS 的核心组件之一,负责管理文件系统的命名空间和控制客户端对文件的访问。NameNode 的配置主要涉及 `hdfs-site.xml` 文件中的参数设置。 - **dfs.namenode.checkpoint.dir**:指定 SecondaryNameNode 的检查点目录,用于存储检查点文件。通常配置为本地文件系统路径或共享存储路径,例如 `file:///opt/module/hadoop-3.1.3/data/dfs/namesecondary`。 - **dfs.namenode.checkpoint.period**:定义两次检查点之间的最大时间间隔,单位为秒,默认为 3600 秒。 - **dfs.namenode.checkpoint.txns**:定义两次检查点之间最大的事务数,默认为 1000000 次事务。 - **dfs.namenode.checkpoint.check.period**:定义 NameNode 检查是否需要触发检查点的时间间隔,默认为 60 秒。 - **dfs.namenode.checkpoint.max-retries**:定义检查点操作的最大重试次数,默认为 3 次。 这些配置参数可以优化 NameNode 的性能和可靠性,确保文件系统的高效运行[^2]。 ### HDFS NameNode 管理 NameNode 的管理主要包括启动、停止、检查点操作以及维护其高可用性。 - **启动与停止**:NameNode 可以通过 `hdfs --daemon start namenode` 和 `hdfs --daemon stop namenode` 命令启动和停止。 - **检查点操作**:NameNode 会定期执行检查点操作,将内存中的元数据写入磁盘,生成新的 `fsimage` 文件,并清空旧的 `edits` 日志文件。SecondaryNameNode 负责协助 NameNode 完成这一过程。 - **高可用性(HA)**:为了提高 NameNode 的可用性,Hadoop 提供了 HA 模式,允许配置多个 NameNode 实例,其中一个处于 Active 状态,其他处于 Standby 状态。Active NameNode 处理所有客户端请求,而 Standby NameNode 保持同步,随时准备接管服务。 ### HDFS NameNode 故障排查 NameNodeHDFS 的单点故障源,因此其故障排查尤为重要。 - **NameNode 进程崩溃**:如果 NameNode 进程意外崩溃,可以通过 SecondaryNameNode 恢复数据。具体步骤包括: 1. 将 SecondaryNameNode 中的检查点数据复制到原 NameNode 的数据目录。 2. 重新启动 NameNode 服务。 3. 验证数据是否恢复成功,尝试上传文件进行测试。 - **数据丢失**:如果 NameNode 的元数据存储目录被意外删除,同样可以通过 SecondaryNameNode 恢复。使用 `scp` 命令将 SecondaryNameNode 的数据复制回 NameNode 的数据目录,并重启 NameNode 服务[^3]。 - **安全模式**:NameNode 启动时会进入安全模式,此时文件系统只接受读操作,不允许进行修改或删除操作。安全模式的目的是确保所有 DataNode 向 NameNode 汇报其数据块信息,确保文件系统的完整性。可以通过 `hdfs dfsadmin -safemode leave` 命令手动退出安全模式。 - **日志分析**:当 NameNode 出现故障时,首先应检查其日志文件,通常位于 `logs` 目录下。通过分析日志,可以快速定位问题原因,例如网络连接问题、磁盘空间不足或配置错误等[^4]。 ### 示例:恢复 NameNode 数据 以下是一个简单的示例,展示如何从 SecondaryNameNode 恢复 NameNode 数据: ```bash # 停止 NameNode 服务 [atguigu@hadoop102 hadoop-3.1.3]$ hdfs --daemon stop namenode # 删除 NameNode 数据目录 [atguigu@hadoop102 hadoop-3.1.3]$ rm -rf /opt/module/hadoop-3.1.3/data/dfs/name/* # 从 SecondaryNameNode 拷贝数据 [atguigu@hadoop102 dfs]$ scp -r atguigu@hadoop104:/opt/module/hadoop-3.1.3/data/dfs/namesecondary/* /opt/module/hadoop-3.1.3/data/dfs/name/ # 重新启动 NameNode 服务 [atguigu@hadoop102 hadoop-3.1.3]$ hdfs --daemon start namenode ``` 以上步骤展示了如何通过 SecondaryNameNode 恢复 NameNode 的元数据,确保 HDFS 的正常运行[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值