大数据技术学习——HDFS

举报
slx_share 发表于 2023/02/02 11:25:34 2023/02/02
【摘要】 HDFS是只读分布式文件系统,不支持文件修改。

1       一句话介绍

HDFS是只读分布式文件系统,不支持文件修改。

2       基本概念

  • 文件系统:管理持久化数据的系统。HDFS文件系统同单机系统类似,目录也是按照树状结构维护的。
  • Namespace:命名空间是维护目录结构、文件与数据块映射的一层逻辑空间
  • BlockStorage:维护文件数据块与实际存储位置的映射关系(BlocksMap)。与Namespace组成一套独立的文件系统的全部元数据。
  • NameNode:存储HDFS文件系统的元数据的节点(角色),即NamespaceBlockStorage逻辑空间的数据。另外还会存储DataNode、集群拓扑等信息,不过相对较小。
  • HAHigh Availability,高可用指NameNode通常主备节点部署,主NameNode故障可快速自动切换至备NameNode
  • ZKFC:与NameNode一一对应部署在同一节点(对应DFSZKFailoverController进程),负责监控NameNode进程的状态,并写入ZooKeeper
  • NameService:一对NameNode及相应ZKFC的统称。一套文件系统的物理实现,可通过其管理Namespace中的元数据。
  • JournalNode:主备NameNode之间的共享存储系统,同步主备NameNode存储的元数据。通常是奇数个轻量级守护进程(至少3个,至多9),部署于控制节点。
  • DataNode:存放具体的数据块,周期性向NameNode汇报数据块存放情况。

3       HDFS元数据


Namespace中的元数据常驻于内存,另外会周期性flushfsimage文件中;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的情况下,提供ViewFSRouter-based两种Federation方案进行管理。(当然可以不部署Federation,针对具体应用直接修改HDFS访问URL即可)

5.1       ViewFS


  • 客户端core-site.xml文件中配置全局挂载表mount table,将各NameService挂载到mount table的不同目录下即可。

5.2       Router-based


  • State Store存储所有NameNode的位置、容量等信息,以及类似于viewFSmount-table
  • Router是请求路由模块。第一,任意一个Router都可接收来自客户端的请求并转发到State Store;第二,收集NameNode信息并向State Store报告;第三,接收来自State Store返回的NameService以及NameNode信息,并将客户端请求再次转发到NameNode
  • 路由请求流程:
    • 客户端调用Router提供的客户端接口请求服务。
    • RouterState 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,本地文件系统即fileviewFS文件系统即viewfs
  • authority:针对HDFS文件系统即NameServiceNameNode+Port
  • path: 目录或文件所在路径
  • 举例:hdfs://hacluster/parent/childviewfs ://ClusterX/parent/child

6.2       操作文件

从界面看,HDFS文件系统中的文件如同本地OS文件系统一样,树状目录组织管理起来。区别在于每个文件被分成固定大小的文件块分布式存储在集群DataNode中,并保留多副本。

  • Hue见面操作
  • Shell命令:hdfs dfs -ls/-cat/ <url>

7       注意事项

  • NameService默认名称为hacluster,建议新增NameService时更改该名称,以免后续冲突。

8       参考

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。