这是我参与「第四届青训营 」笔记创作活动的第5天
HDFS特点
- 高容错性
- 高吞吐量
- 故障的检测和自动快速恢复
- 流式的数据访问
- 大数据集
- 一次写入,多次读写
HDFS架构
主从架构,包括一个NameNode和多个DataNode
NameNode是整个文件系统的管理节点,它负责文件系统名字空间(NameSpace)的管理与维护,同时负责客户端文件操作的控制以及具体存储任务的管理与分配
DataNode提供了真实文件数据的存储服务
NameNode是管理者,一个Hadoop集群有一个NameNode节点,是一个通常在HDFS实例中的单独机器上运行的软件.它负责管理文件系统名字空间和控制外部客户机的访问。
NameNode决定是否将文件映射到DataNode的复制块上。
实际的I/O事务并没有经过NameNode,只有表示DataNode和块的文件映射的元数据经过NameNode。当外部客户机发送请求要求创建文件时,NameNode会以块标识和该块的第一个副本的DataNode IP地址作为响应。这个NameNode还会通知其他将要接收该块的副本的DataNode。
NameNode的功能
- NameNode提供名称查询服务,它是一个Jetty服务器
- NameNode保存metadata信息.具体包括:文件owership和permissons;文件包含哪些块,Block保存在哪个DataNode(由DataNode启动时上报)
- NameNode的metadata信息在启动后会加载在内存
Hadoop集群中包含一个NameNode和大量的DataNode,DataNode通常以机架的形式组织,机架通过一个交换机将所有系统连接起来
DataNode响应来自HDFS客户机的读写请求,它们还响应来自NameNode的创建、删除和复制块的命令
DataNode的功能
- 保存Block,每一个块对应一个元数据信息文件。这个文件主要描述这个块属于哪个文件,第几个块等信息
- 启动DataNode线程的时候会向NameNode汇报Block信息
- 通过向NameNode发送心跳保持其联系(3秒一次),如果NameNode10分钟没有收到DataNode的心跳,则认为其已经lost,并将其上的Block复制到其他DataNode