大数据技术学习——HDFS
【摘要】 HDFS是只读分布式文件系统,不支持文件修改。
1 一句话介绍
HDFS是只读分布式文件系统,不支持文件修改。
2 基本概念
- 文件系统:管理持久化数据的系统。HDFS文件系统同单机系统类似,目录也是按照树状结构维护的。
- Namespace:命名空间是维护目录结构、文件与数据块映射的一层逻辑空间。
- BlockStorage:维护文件数据块与实际存储位置的映射关系(BlocksMap)。与Namespace组成一套独立的文件系统的全部元数据。
- NameNode:存储HDFS文件系统的元数据的节点(角色),即Namespace、BlockStorage逻辑空间的数据。另外还会存储DataNode、集群拓扑等信息,不过相对较小。
- HA:High Availability,高可用指NameNode通常主备节点部署,主NameNode故障可快速自动切换至备NameNode。
- ZKFC:与NameNode一一对应部署在同一节点(对应DFSZKFailoverController进程),负责监控NameNode进程的状态,并写入ZooKeeper。
- NameService:一对NameNode及相应ZKFC的统称。一套文件系统的物理实现,可通过其管理Namespace中的元数据。
- JournalNode:主备NameNode之间的共享存储系统,同步主备NameNode存储的元数据。通常是奇数个轻量级守护进程(至少3个,至多9个),部署于控制节点。
- DataNode:存放具体的数据块,周期性向NameNode汇报数据块存放情况。
3 HDFS元数据
Namespace中的元数据常驻于内存,另外会周期性flush到fsimage文件中;BlockStorage元数据仅存在于内存,因此当系统故障或重启,需要根据DataNode上报信息重构BlocksMap数据。这两部分元数据占据了绝大部分堆内存,因此一个NameService支持的文件数存在上限,推荐1.2亿内,文件数据过多可新建NameService(即联邦,Federation)。
4 HDFS架构
- 读流程:HDFS客户端从NameNode上获得文件数据块的位置,再从DataNode上读取该文件。
- 写流程:HDFS客户端向NameNode发送创建文件的请求并申请存储块,NameNode检查权限创建文件记录并返回块信息(包含DataNode信息)。客户端连接到第一个DataNode并传送数据流,第一个DataNode再将数据复制到第二个DataNode,直至完成(复制的份数根据replication参数而定)。
- HDFS保证同一时刻只有一个写操作,但可以有多个读操作。
5 HDFS Federation
存在多个NameService的情况下,提供ViewFS和Router-based两种Federation方案进行管理。(当然可以不部署Federation,针对具体应用直接修改HDFS访问URL即可)
5.1 ViewFS
- 客户端core-site.xml文件中配置全局挂载表mount table,将各NameService挂载到mount table的不同目录下即可。
5.2 Router-based
- State Store存储所有NameNode的位置、容量等信息,以及类似于viewFS的mount-table
- Router是请求路由模块。第一,任意一个Router都可接收来自客户端的请求并转发到State Store;第二,收集NameNode信息并向State Store报告;第三,接收来自State Store返回的NameService以及NameNode信息,并将客户端请求再次转发到NameNode
- 路由请求流程:
- 客户端调用Router提供的客户端接口请求服务。
- Router向State Store查询该请求对应的NameServic以及该NameService的主NameNode。
- Router得到主NameNode地址后,将请求转发到主NameNode。
- NameNode返回给Router该请求的回复结果。
- Router将主NameNode返回的结果返回给客户端。
- 客户端拿到数据所在的DataNode地址后,与DataNode进行通信(读/写数据)。
6 HDFS实操
6.1 URL
HDFS中每个文件都有URL,其格式如下:
scheme://authority/path
- scheme:协议名。HDFS文件系统即hdfs,本地文件系统即file,viewFS文件系统即viewfs
- authority:针对HDFS文件系统即NameService或NameNode+Port
- path: 目录或文件所在路径
- 举例:hdfs://hacluster/parent/child;viewfs ://ClusterX/parent/child
6.2 操作文件
从界面看,HDFS文件系统中的文件如同本地OS文件系统一样,树状目录组织管理起来。区别在于每个文件被分成固定大小的文件块分布式存储在集群DataNode中,并保留多副本。
- Hue见面操作
- Shell命令:hdfs dfs -ls/-cat/ <url>
7 注意事项
- NameService默认名称为hacluster,建议新增NameService时更改该名称,以免后续冲突。
8 参考
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)