大数据之HDFS原理
lHDFS(Hadoop Distributed File System)基于Google发布的GFS论文设计开发,运行在通用硬件上的分布式文件系统。
l其除具备其它分布式文件系统相同特性外,还有自己特有的特性:
p高容错性:认为硬件总是不可靠的
p高吞吐量:为大量数据访问的应用提供高吞吐量支持
大文件存储:支持存储TB-PB级别的数据
HDFS架构包含三个部分:
NameNode,DataNode,Client
lNameNode:NameNode用于存储、生成文件系统的元数据。运行一个实例。
lDataNode:DataNode用于存储实际的数据,将自己管理的数据块上报给NameNode ,运行多个实例。
Client:支持业务访问HDFS,从NameNode ,DataNode获取数据返回给业务。多个实例,和业务一起运行
HDFS的关键特性
1.HA高可靠性
首先NameNode将信息存贮在三个DataNode里面,这样其中的一个DataNode死机了,信息也不会丢失,因为三个DataNode的信息存储相同的。其次有主备NameNode,如果发现主namenode宕机了,那么备namenode将会立马顶替主的位置。而如何发现主namenode宕机了呢,这靠的是zookeeper的信息调节
2.元数据持久化
1.备NameNode通知主NameNode生成新的日志文件,以后的日志写到Editlog.new中,并获取旧的Editlog。
2.备NameNode从主NameNode上获取FSImage文件及位于JournalNode上面的旧EditLog。
3.备NameNode将日志和旧的元数据合并,生成新的元数据FSImage.ckpt。
4.备NameNode将元数据上传到主NameNode。
5.主NameNode将上传的元数据进行回滚。
6.循环步骤1。
HDFS数据写入流程
1. 业务应用调用HDFS Client提供的API创建文件,请求写入。
2. HDFS Client联系NameNode,NameNode在元数据中创建文件节点。
3. 业务应用调用write API写入文件。
4. HDFS Client收到业务数据后,从NameNode获取到数据块编号、位置信息后,联系DataNode,并将需要写入数据的DataNode建立起流水线。完成后,客户端再通过自有协议写入数据到DataNode1,再由DataNode1复制到DataNode2, DataNode3。
5. 写完的数据,将返回确认信息给HDFS Client。
6. 所有数据确认完成后,业务调用HDFS Client关闭文件。
7. 业务调用close, flush后HDFS Client联系NameNode,确认数据写完成,NameNode持久化元数据。
HDFS不适合大量小文件、随机写入
- 点赞
- 收藏
- 关注作者
评论(0)