HDFS概述,读写原理及shell命令
一.HDSF概述
1.产生背景
当今世界正处在大数据的时代,随着数据量越来越大,使用单个操作系统的存储方式显然不能满足大数据存储的需求,因此,需要一种系统来存储大数据时代产生的海量数据,于是分布式文件系统(Distributed File System ,DFS)就诞生了。
分布式文件系统是指文件系统管理的物理资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。它允许将一个文件通过网络在多台主机上以多副本的方式进行存储,实际上是通过网络来访问文件,,而用户和程序员好像是访问本地的文件系统一样。
HDFS(Hadoop Distributed File Syste)即是hadoop中的分布式文件系统,用于大数据领域的数据存储。
2.HDFS的优缺点
(1)HDSF的优点
1)支持处理超大文件
- 数据规模:能够处理数据规模达到 GB、TB、甚至PB级别的数据。
- 文件规模:能够处理百万规模以上的文件数量,数量相当之大。
2)运行在廉价的机器上
- 由于副本机制,可以在廉价机器上使用
3)高容错性
- 数据自动保存多个副本,通过增加副本的形式,提高容错性,一个副本丢失后,它可以自动恢复
4)流式文件写入
- HDFS提供一次写入,多次提取的服务。文件一旦写入,就不能修改,只能增加,可以提高I/O性能,保证数据的一致性。
(2)HDFS的缺点
1)不适合低延迟数据访问的场景。
- 比如毫秒级的存储数据,是做不到的。
2)不适合大量小文件的存储。
- HDFS中的元数据(如目录结构,文件目录属性,文件Block的节点列表等)存储在NameNode中,整个文件系统的文件数量会受限于NameNode的内存大小。一旦集群中的小文件过多,会导致NameNode的压力倍增,进而影响集群的性能。一般采用SequenceFile等方式对小文件进行合并,或者是使用NameNode Federation 的方式来改善
3)不适合并发写入,文件随机修改场景
- HDFS采用追加(append-only)的方式写入数据,不支持在文件的任意位置修改。
3.HDFS设计目标
(1)硬件故障
故障检测和自动快速恢复是HDFS最核心的架构设计目标
(2)大规模数据集
HDFS文件大小一般在GB至TB量级,HDFS应该提供很高的聚合数据带宽,能在一个集群里扩展到数百个节点
(3)移动计算比移动数据更经济
在靠近计算的数据存储的位置进行计算是最理想状态,可以消除网络拥堵,提高系统的整体的吞吐量。HDFS为应用提供了将计算移动到数据附近的接口
二.HDFS架构
采用的是master/slave架构设计
注:
- metadata:元数据—描述数据的数据,对数据及信息资源的描述性信息
- ops:操作
- rack:机架,多台机器会放在一个机架上
HDFS组成角色及其功能:
1.Client:客户端
(1)文件切分。文件在上传HDFS的时候,Client将文件分成一个一个的Block,然后进行存储。
(2)与NameNode交互,获取文件的位置信息
(3)与DataNode交互,读取或者写入数据
(4)Client提供一些命名来管理HDFS,比如启动或者关闭HDFS
(5)Client可以通过一些命令来访问HDFS。
2.NameNode:元数据节点
master,是管理者
(1)管理HDF