Hadoop分布式文件系统
简介
HDFS(Hadoop distribute file system) 是Hadoop核心组成,是分布式存储服务
分布式文件系统能够横跨多态计算机。在大数据时代有着广泛的应用前景,它们为存储和处理超大规模数据提供所需的扩展能力。
HDFS是分布式文件系统的一种
概念
HDFS通过统一的命名空间目录树 来定位文件
通过多态服务器联合实现其功能,集群中的服务器有各自的角色(分布式的本质是拆分,各司其职)
-
典型的 Master/Slave 【主从】架构
HDFS 集群往往是一个NameNode + 多个 DataNode 组成
NameNode是集群的主节点,DataNode是集群的从节点
HA架构有两个NameNode,联邦机制
-
分快存储(block机制)
HDFS中的文件在物理上是分块存储的,块的大小可以通过配置参数来确定
Hadoop 2.X 版本中默认的 block 是:128M
-
命名空间
HDFS支持传统的层次型文件组织结构。用户或者应用程序可以创建目录,将文件保存在这些目录中。
文件系统名字空间的层次结构和大多数文件系统类似:可以创建、删除、移动、重命名文件等
NameNode负责维护文件系统的名字空间,任何对文件系统名字空间或属性的修改都将被NameNode记录
HDFS提供一个抽象目录树 ,访问形式
hdfs://namenode主机名:port文件路径
如:
hdfs://linux121:9000/test/inpu
-
NameNode 元数据管理
将目录结构及文件分块位置信息称为元数据
NameNode的元数据记录每一个文件所对应的block信息(block id、所在DataNode节点的信息)
-
DataNode 数据存储
文件的各个block的具体存储管理由DataNode节点承担;一个block会有多个DataNode来存储
DataNode会定时向NameNode来汇报自己持有的block信息
-
副本机制
出于容错考虑,文件的所有block均会有副本。每个文件的block大小和副本系数都是可配置的。应用程序可以指定某个文件的副本数量。
副本数可以在文件创建的时候指定,也可以在之后改变。
副本数默认为:3
副本的数量超过 DataNode 节点数量时,以 DataNode 数量为上限
-
一次写入,多次读出
HDFS 设计时按照 一次写入,多次读出的场景 进行设计的。
不支持文件的随机修改(更新),支持追加写入
HDFS适合用来做大数据分析的底层存储服务,但不适合用做网盘等应用。主要原因有:修改不方便、延迟大、网络开销大、成本高
架构
- NameNode(nn):HDFS集群的管理者,Master
- 维护并且管理HDFS的名称空间
- 维护副本策略
- 记录文件块信息的映射信息
- 负责客户端读写请求
- DataNode(dn):执行实际操作,Slave
- 保存实际的数据块
- 负责数据的读写
- Client:客户端
- 上传文件时负责进行文件的切分(block),然后进行上传
- 与 NameNode 交互,获取文件的位置信息
- 读取或者写入的时候,与DataNode交互进行读写
- 使用一些命令来管理、访问HDFS
shell命令操作HDFS
-
基本语法
方式一:
bin/hadoop fs 具体命令
方式二:
bin/hadoop dfs 具体命令
-
查看全部命令
bin/hdfs dfs
HDFS的操作命令大多数等同于Linux下的操作,只不过需要在命令前添加 -
查看命令参数
-
-help
:输出这个命令的参数hadoop fs -help 命令
如:
hadoop fs -help rm