这是我参与「第四届青训营 」笔记创作活动的第9天。
HDFS原理与应用
hdfs简介 hdfs是一个分布式文件系统。hdfs使用多台计算机存储文件,并提供统一的访问接口,就像使用普通文件系统一样方便。
hdfs的优点: 1.存储非常大的文件。高吞吐量,低延时。 2.采用流式的数据访问方式,即一次写入,多次读取。数据集经常从数据源生成或者拷贝一次,然后在其上做很多分析工作。 3.低成本。可运行于普通廉价机器。 4.高容错性。 5.高扩展性。
hdfs架构: hdsf是master/slave结构。主要由部分组成:client、namenode、datanode和secondary namenode。
Client/SDK:client就是客户端,作用如下: 文件切片。将大文件切分成多个block进行分布式存储。 与namenode通信。获取文件存储地址。 与datanode通信。进行文件读写操作。 提供一些命令来管理和访问hdfs。 读写操作的发起点,HDFS很多读写逻辑都是在SDK中实现的。 NameNode:namenode就是master,如下作用: 存储数据的元数据。 管理hdsf的namespace。 管理block的映射信息。 配置副本策略。 处理客户端读写请求。 元数据节点,是HDFS的中枢节点,也是服务的入口。 DataNode: datanode就是slave,执行namenode的命令。 实际存储数据块 执行数据读写操作。 datanode提供真实文件数据的存储服务。 DataNode以数据块的形式存储HDFS文件; DataNode响应HDFS客户端读写请求; DataNode周期性向NameNode汇报心跳信息; DataNode周期性向NameNode汇报数据块信息; DataNode周期性向Namenode汇报缓存数据块信息数据节点,存放实际用户数据。
secondary namenode是辅助namenode的节点,并不是namenode的热备用。一般不和namenode配置在同一台机器上。 辅助namenode,分担工作量。主要就是辅助管理fsimage和edits文件。 定期合并fsimage和edits,并更新给namenode。合并后,namenode中edits会清空。 紧急情况下可恢复namenode。