NameNode和DataNode是如何运作的
NameNode – NameNode记录文件系统的元数据 • HDFS中文件的位置信息 • 文件的拥有者以及权限信息 • 单个block的名字 • block的位置 – Metadata被保存在硬盘上,当NameNode启动时被读取到内存中 • 文件名是fsimage • Note: block的位置信息未保存在fsimage中 – 当metadata需要做改动时,改动是发生在内存的 • 改动同时也被写入到了本地的edits log之中
– 当NameNode进程运行时,所有的metadata都是被读入内存的,以保证访 问的速度 – 每一个metadata中的item占用150-200 bytes的内存空间 – items: • 文件名,权限等 • 每一个block的相关信息
• DataNode – 文件以block的形式被存放于DataNode – Block本质是存放于DataNode本地文件系统下相应位置的普通文件 • 名称: blk_xxxxxxx • DataNode上并不会有某一个block属于哪一个hdfs上文件的信息 – 每个block都会在不同的节点上有备份,以保证数据的完整性 • 默认备份3份
• 数据的可靠性与恢复 – DataNode通过心跳heartbeat与NameNode进行通信 • 每三秒发送一次 – 持续一段时间内没有接收到心跳后,这个DataNode被认 • NameNode确定这个节点上的block已经丢失 • NameNode会找到拥有这些block副本的DataNode节点 – DataNode会把这些block复制给其他节点 • 保证了数据的3副本