这是我参与「第四届青训营 」笔记创作活动的的第8天
课堂内容
HDFS的基本介绍
- HDFS的生态定位:存储层
- window单机文件系统:NTFS,FAT32,exFAT
- Linux单机文件系统:BTRFS,ZFS,XFS,EXT4
- 分布式文件系统:HDFS,CEPS,CubeFE
- 大容量
- 高可靠
- 低成本
- 分布式存储系统
- HDFS功能特性
- HDFS的主要节点:zookeeper,JournalNode,NameNode,DateNode
- 与HDFS交互的方式:命令行和window界面
HDFS架构原理
- 三大件组件:client,NameNode,DateNode
- 写数据:client端向namenode申请写入,namenode根据datanode的存储情况分配区块地址,然后往datanode写三份数据块,写完反馈一个ACK,然后还会有Flush的调整数据,全部写完就client向namenode发送完成的信息。
- 读数据:client端向namenode发送请求,namenode返回地址,然后client去datanode中去读数据块。
- 元数据节点namenode的作用功能
- 数据节点datanode的作用功能
HDFS的关键设计
- 分布式存储系统基本概念
- namenode目录树维护:通过EditLog写入journalnode来维护。fsimage:目录树,同时他是内存存储,但是定期写入硬盘。
- namenode数据放置:balanner
- Datanode
- HDFS写异常处理
Lease Recovery:用户端坏了,我们去Datanode中三份中长度最短的为写入的数据,同时租约超时10分钟我们namenode会在新请求进来的时候踢掉上次访问。Pipeline Recovery:重新构建pipeline节点
- HDFS读异常处理:有三份,一份挂了,找另一份
- 所谓旁路系统:Balancer,Mover
- 控制面建设:HDFS UI
HDFS的应用场景
- 在公司方面
- 在生态方面
- 用pyspark读写HDFS文件:交互过程
- 第一行读文件
- 第二行我们要的元素
- 第三行查询我们想要的数据
- 最后一行将结果保存在本地或者HDFS
- ETL:抽取,转化,下载。这是一个系统,主要解决写的问题。
- 在OLAP方面
- 通用存储的应用