内容简介:本文主要介绍了 HDFS 的体系架构以及其执行流程,并给出了读写操作的编程实例,希望对 HDFS 有个初步的认识。HDFS (Hadoop Distributed File System) 是一个运行在商业 PC 上的分布式文件系统,其设计思想源自于 Google 2003 年发布的论文上图表明 HDFS 是一个标准的 master/slave 架构,主要由三个部分构成:
本文主要介绍了 HDFS 的体系架构以及其执行流程,并给出了读写操作的编程实例,希望对 HDFS 有个初步的认识。
简介
HDFS (Hadoop Distributed File System) 是一个运行在商业 PC 上的分布式文件系统,其设计思想源自于 Google 2003 年发布的论文 The Google File System 。HDFS的主要目的是为了解决大规模数据存储和管理的问题。
体系架构
上图表明 HDFS 是一个标准的 master/slave 架构,主要由三个部分构成:
- NameNode(master 节点)
- 元数据(MetaData)的管理,其中元数据由 文件路径名 、 数据块ID 以及 存储位置 等信息构成
- 管理 HDFS 的名字空间。
- SecondaryNameNode
- 定期合并 NameNode 的 edit logs(对文件系统的改动序列) 到 fsimage(对整个文件系统的快照),并拷贝修改后的 fsimage 到 NameNode。
- 提供一个 NameNode 的检查点(切忌认为是 NameNode 的备份),可用于 NameNode 的故障恢复。
- DataNode(slave 节点)
- 提供文件存储和进行数据块操作。
- 周期性的向 NameNode 汇报块信息。
这里对图中出现的一些概念进行说明:
-
Replication(副本)
为了保证数据的高可用,HDFS 会对写入的数据进行冗余存储,默认情况下会保存 3 份。
-
Blocks
Block 是最基本的存储和操作单位(默认情况下为 128M),这里的 Block 不是指物理 Block ,而是指文件系统的 Block,其大小一般是物理 Block 的整数倍。
执行流程
读文件
读文件的过程可以概括为:
- Client 向 NameNode 发起请求获取文件数据块位置信息
- Client 按照数据块距 Client 的远近依次进行连接然后读取数据
写文件
写文件的过程可以概括为:
- Client 向 NameNode 发起写文件的请求获得可写的 DataNode 列表等信息
- Client 根据 HDFS 设定的分块大小对文件进行分块
- Client 和 NameNode 分配的 DataNode 构成 pipeline 并进行数据写入
- 写入完成之后,NameNode 接收来自 DataNode 的消息进行元数据的更新
常用命令
文件操作
-
列出文件
hdfs dfs -ls <path> 复制代码
-
创建目录
hdfs dfs -mkdir <path> 复制代码
-
上传文件
hdfs dfs -put <localsrc> <dst> 复制代码
-
输出文件内容
hdfs dfs -cat <src> 复制代码
-
文件复制到本地
hdfs dfs -get <src> <localdst> 复制代码
-
删除文件和目录
hdfs dfs -rm <src> hdfs dfs -rmdir <dir> 复制代码
管理
-
查看统计信息
hdfs dfsadmin -report 复制代码
-
进入和退出安全模式(该模式不允许文件系统有任何修改)
hdfs dfsadmin -safemode enter hdfs dfsadmin -safemode leave 复制代码
以上所述就是小编给大家介绍的《Hadoop 基础之 HDFS 入门》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Python基础入门_5面向对象基础
- Apache Flink 零基础入门(一):基础概念解析
- Apache Flink 零基础入门(一):基础概念解析
- React 入门 (基础概念)
- OALP基础入门
- 入门:基础语法(五)函数
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。