大数据干货系列(二)--HDFS1.0
一、本质
HDFS(Hadoop Distributed File System)是一种适合运行在通用硬件上的分布式文件系统
二、HDFS解决了什么问题
1.海量数据存储和吞吐
2.write-once-read-many存取模式(无数据一致性问题)
3.高度容错
4.处理非结构化数据
三、系统架构
1. NameNode
1) 作用
• 管理着文件系统命名空间
• 在内存中存储元数据
- 文件名目录名及它们之间的层级关系
- 文件目录的所有者及其权限
- 每个文件块的名及文件有哪些块组成
• 保存文件,block,datanode之间的映射关系
2) 单点问题
• 全Hadoop系统只有一个NameNode
3) 两种解决方案
• 将hadoop元数据写入到本地文件系统的同时,再实时同步到一个远程挂载的网络文件系统
• 运行一个secondaryNameNode
2. SecondaryNameNode
1) 作用
• 元信息持久化到磁盘
- 存放元信息的文件是 fsimage
- 存放对元信息的操作的文件是edits
• 定时到NameNode去获取edit logs,并更新到fsimage[Secondary NameNode自己的fsimage]
• 一旦它有了新的fsimage文件,它将其拷贝回NameNode中。
• NameNode在下次重启时会使用这个新的fsimage文件,从而减少重启的时间。
3. DataNode
1) 作用
• 负责存储数据块,负责为系统客户端提供数据块的读写服务
• 根据NameNode的指示进行创建、删除和复制等操作
• 心跳机制,定期报告文件块列表信息
• DataNode之间进行通信,块的副本处理
2) block
• HDFS读写的基本单位
• HDFS默认数据块大小64MB,一般磁盘块是512B
• 块增大可以减少寻址时间,降低寻址时间/文件传输时间
• 块过大会导致整体任务数量过小,降低作业处理速度
四、三个策略
1.机架感知策略 (Block副本的放置策略)
• 第一个副本,在客户端相同的节点(如果客户端是集群外的一台机器,就随机算节
点,但是系统会避免挑选太满或者太忙的节点)
• 第二个副本,放在不同机架(随机选择)的节点
• 第三个副本,放在与第二个副本同机架但是不同节点上。
2.数据完整性校验
1) 校验和
检测损坏数据的常用方法是在第一次进行系统时计算数据的校验和,在通道传输过程中,如果新生成的校验和不完全匹配原始的校验和,那么数据就会被认为是被损坏的。
2) 数据块检测程序DataBlockScanner
在DataNode节点上开启一个后台线程,来定期验证存储在它上所有块,这个是防止物理介质出现损减情况而造成的数据损坏。
3.容错-可靠性措施
1) 故障检测
- DataNode
• 心跳包(检测是否宕机)
• 快报告(安全模式下检测)
• 数据完整性检测(校验和比较)
- NameNode
• 日志文件
• 镜像文件
2) 空间回收机制
- Trash目录
五、HDFS和MapReduce
六、HDFS的局限
1.存储小文件(不建议)
2.大量随机读(不建议)
3.需要对文件修改(不支持)
4.多用户写入(不支持)
以上.
如果觉得本文对你有帮助,可以帮忙点个赞表示支持吗,谢谢!
如果有任何意见和建议,也欢迎再下方留言~
关注这个公众号,每天22:00会有三道大数据面试题准时推送给你哦~
点击这里查看往期精彩内容:
一、本质
HDFS(Hadoop Distributed File System)是一种适合运行在通用硬件上的分布式文件系统
二、HDFS解决了什么问题
1.海量数据存储和吞吐
2.write-once-read-many存取模式(无数据一致性问题)
3.高度容错
4.处理非结构化数据
三、系统架构
1. NameNode
1) 作用
• 管理着文件系统命名空间
• 在内存中存储元数据
- 文件名目录名及它们之间的层级关系
- 文件目录的所有者及其权限
- 每个文件块的名及文件有哪些块组成
• 保存文件,block,datanode之间的映射关系
2) 单点问题
• 全Hadoop系统只有一个NameNode
3) 两种解决方案
• 将hadoop元数据写入到本地文件系统的同时,再实时同步到一个远程挂载的网络文件系统
• 运行一个secondaryNameNode
2. SecondaryNameNode
1) 作用
• 元信息持久化到磁盘
- 存放元信息的文件是 fsimage
- 存放对元信息的操作的文件是edits
• 定时到NameNode去获取edit logs,并更新到fsimage[Secondary NameNode自己的fsimage]
• 一旦它有了新的fsimage文件,它将其拷贝回NameNode中。
• NameNode在下次重启时会使用这个新的fsimage文件,从而减少重启的时间。
3. DataNode
1) 作用
• 负责存储数据块,负责为系统客户端提供数据块的读写服务
• 根据NameNode的指示进行创建、删除和复制等操作
• 心跳机制,定期报告文件块列表信息
• DataNode之间进行通信,块的副本处理
2) block
• HDFS读写的基本单位
• HDFS默认数据块大小64MB,一般磁盘块是512B
• 块增大可以减少寻址时间,降低寻址时间/文件传输时间
• 块过大会导致整体任务数量过小,降低作业处理速度
四、三个策略
1.机架感知策略 (Block副本的放置策略)
• 第一个副本,在客户端相同的节点(如果客户端是集群外的一台机器,就随机算节
点,但是系统会避免挑选太满或者太忙的节点)
• 第二个副本,放在不同机架(随机选择)的节点
• 第三个副本,放在与第二个副本同机架但是不同节点上。
2.数据完整性校验
1) 校验和
检测损坏数据的常用方法是在第一次进行系统时计算数据的校验和,在通道传输过程中,如果新生成的校验和不完全匹配原始的校验和,那么数据就会被认为是被损坏的。
2) 数据块检测程序DataBlockScanner
在DataNode节点上开启一个后台线程,来定期验证存储在它上所有块,这个是防止物理介质出现损减情况而造成的数据损坏。
3.容错-可靠性措施
1) 故障检测
- DataNode
• 心跳包(检测是否宕机)
• 快报告(安全模式下检测)
• 数据完整性检测(校验和比较)
- NameNode
• 日志文件
• 镜像文件
2) 空间回收机制
- Trash目录
五、HDFS和MapReduce
六、HDFS的局限
1.存储小文件(不建议)
2.大量随机读(不建议)
3.需要对文件修改(不支持)
4.多用户写入(不支持)
以上.
如果觉得本文对你有帮助,可以帮忙点个赞表示支持吗,谢谢!
如果有任何意见和建议,也欢迎再下方留言~
关注这个公众号,每天22:00会有三道大数据面试题准时推送给你哦~
点击这里查看往期精彩内容: