HDFS
HDFS介绍:
HDFS就是hadoop分布式文件系统,是hadoop核心组件之一,作为最底层的分布式存储服务而存在。
HDFS解决的问题就是大数据存储
hdfs的垃圾桶机制:
垃圾桶机制解析:
每一个文件系统都会有垃圾桶机制,便于将删除的数据回收到垃圾桶里面去,避免某些误操作删除一些重要文件,回收到垃圾桶里里面的资料数据,都可以进行恢复。
垃圾桶机制配置:
HDFS的垃圾回收的默认配置属性为0,也就是说,如果不小心误删除了某文件,那么这个文件就不可恢复的,为了解决这个问题,就可以利用垃圾桶机制。
机制配置:
修改core-site.xml:(设置回收站保存时间为1440分钟=1天)
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
修改完成后重启hdfs集群既可以生效
垃圾桶目录:/user/<用户名>/.Trash
HDFS重要特征:
-
是一个文件系统,用于存储文件,通过统一的命令空间目录树来定位文件;
-
是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色;
-
master/slave架构:Namenode(主节点)、Datanode(从节点)
-
分块存储:块的大小默认为128m
-
名字空间
-
Namenode元数据管理:
我们把目录结构及文件分块位置信息叫做元数据,Namenode负责保存每个文件对应的block块的信息
-
Datanode数据存储
-
副本机制:副本数量默认为3,可设置dfs.replication 修改
-
一次写入,多次读出:不支持文件的修改
HdFS的角色:
Namenode(主节点、Master):
- 存储的数据:HDFS的元数据(不存储实际数据或数据集);
- 知道HDFS中任何给定文件的块列表及其位置,使用此信息Namenode知道如何从块中构建文件;
- Namenode并不会持久化存储每个文件中各个块所在的DataNode的位置信息,这些信息会在系统启动时从从数据节点重建;
- Namenode是hadoop集群中的单点故障
Datanode(从节点、Slave):
- 存储的数据:HDFS的实际数据
- Namenode和Datanode会保持不断通信
- Datanode启动时,它会将自己发送到Namenode并汇报自己负责持有的块列表
- 当某个Datanode关闭时,它不会影响数据或集群的可用性,Namenode将安排有其他Datanode管理的块进行副本复制
- Datanode所在机器通常配置有大量的硬盘空间,因为实际数据存储在Datanode中
- Datanode会定期(dfs.heartbeat.interval 配置项配置,默认是3秒)向Namenode发送心跳,如果Namenode长时间没有接受到Datanode发送的心跳,Namenode就会认为该Datanode失效
- block汇报时间间隔取参数dfs.blockreport.intervalMsec,参数未配置的话默认为6个小时
Secondary NameNode:
协助Namenode进行元数据的备份
HDFS写入数据的流程:
- 客户端生成写入操作以后,会询问Namenode是否可以存储
- Namenode会检查所存储的目录是否存在,目录存在则Namenode返回到客户端可以存的Datanode的位置
- 客户端去连接对应的Datanode上传文件数据进行存储
- Datanode返回信息告知客户端是否存储成功
HDFS获取数据流程:
- 请求Namenode,Namenode会检查数据是否存在
- 如果数据存在,Namenode就会将存储数据的Datanode位置告知客户端
- 客户端请求Datanode获取对应的块数据
- Datanode将数据返回给客户端