四、HDFS的基本原理 1、概述
a、 NameNode是HDFS的核心 。b、 NameNode也称为Master 。c、 NameNode仅存储HDFS的元数据:文件系统中所有文件的目录树 , 并跟踪整个集群中的文件 。d、 NameNode不存储实际数据或数据集 。数据本身实际存储在DataNodes中 。e、 NameNode知道HDFS中任何给定文件的块列表及其位置 。使用此信息NameNode知道如何从块中构建文件 。f、 NameNode并不持久化存储每个文件中各个块所在的DataNode的位置信息 , 这些信息会在系统启动时从数据节点重建 。g、 NameNode对于HDFS至关重要 , 当NameNode关闭时 , HDFS / Hadoop集群无法访问 。h、 NameNode是Hadoop集群中的单点故障 。i、 NameNode所在机器通常会配置有大量内存(RAM) 。
文章插图
2、概述
a、 DataNode负责将实际数据存储在HDFS中 。b、 DataNode也称为Slave 。c、 NameNode和DataNode会保持不断通信 。d、 DataNode启动时 , 它将自己发布到NameNode并汇报自己负责持有的块列表 。e、 当某个DataNode关闭时 , 它不会影响数据或群集的可用性 。NameNode将安排由其他DataNode管理的块进行副本复制 。f、 DataNode所在机器通常配置有大量的硬盘空间 。因为实际数据存储在DataNode中 。g、 DataNode会定期(dfs.heartbeat.interval配置项配置 , 默认是3秒)向NameNode发送心跳 , 如果NameNode长时间没有接受到DataNode发送的心跳 , NameNode就会认为该DataNode失效 。h、 block汇报时间间隔取参数dfs.blockreport.intervalMsec,参数未配置的话默认为6小时.
3、HDFS的工作机制3.1 写过程
1、datanode向namenode汇报自己的状态信息和块列表2、client找到namenode , 向namenode申请上传文件3、namenode进行校验是否有权限上传 , 看是否有同名的文件 如果没加入覆盖则不允许上传4、如果通过 , 则允许上传文件5、假如现在的文件是129m 则会对文件进行切割 , 一个是128 一个是16、进行上传 先上传第一个block块 , 这时会问namenode传送到哪个datanode块上去 , 7、namenode进行机架感知 , 选出一个datanode地址列表 , 并返回给客户端 , 比如node01、node038、这是client就会知道连接哪个datanode 。然后建立管道 , node01和node03之间也需要建立管道9、会把block块再次拆分成64k的包然后上传 , 最后根据偏移量组装成一个新的文件10、备份成功后会返回一个ack确认码11、然后继续上传第二个block块
3.2读过程
1、申请下载 , client向namenode询问 namenode中的namespace保存的是文件的名称和路径以及一些元数据信息2、这样就会知道你所要下载的文件到底在那个datanode上面 但是有时候备份很多的话 , 就会根据网络拓扑图翻回最近的一个block块并且是状态好的3、这样就会得到你需要的文件的地址列表 , 这样就会连接datanode , 进行并行的读取 , 就会很快速的读取 , 集群做的够大 , 他的吞吐能力是非常的强的
- 【hadoop】 1001-hadoop介绍
- 小程序问题集:保存失败:Error: ENOENT: no such file
- 关于pytorch中的distributedsampler函数使用
- 含源码 【保姆级教程】Docker基础操作篇-Dokerfile
- IllegalArgumentException: myid file is m
- NFS 文件存储简介
- Network File System NFS 网络文件系统
- filestorage可以删除吗
- c盘里的program files可以删吗
- YourKit Profiler for .NET功能和内存一体探查器