自说
HDFS在Hadoop起到重要作用,解决了大规模的数据存储及管理问题,呢么有如此庞大的数据,hdfs是如何准确的做到数据的保存与不流失性,又是通过什么方式去存储管理的,在整个集群中扮演了呢种角色,它又用之何处,往下看,这些问题都将会有一个你心里的答案。
学习路径
BIG DATA 神奇的大数据 - Hadoop(Linux)环境搭建与部署
基本概念
HDFS是分布式文件系统的简称,它提供一个可扩展、高吞吐量的大规模数据分布式存储,为集群中其他应用程序提供了存储功能。HDFS采用主/从(master/slave)架构,通过数据块及节点来存储管理。当现有的存储无法存放庞大的数据量时,我们则要采用hdfs,将庞大的数据集进行分区并存储到多台独立的计算机上,从而对多台计算机的数据进行集中管理,因而形成了分布式文件存储系统。
块
计算机中用磁盘存储数据,每个磁盘都有着默认的数据块的大小,一般为512字节,文件系统块的大小更大,能达到上千字节。在hdfs中块的大小默认为128MB,这个大小也可以在hdfs-site.xml配置文件中去修改大小。在datanode的出处数据块中,为了确保数据的可靠性、读写性能,会均匀的确保每个数据块充分的存储在datanode中去。
例下图所示,有三个块,每个块大小为128mb,现在要存储一个300mb的数据,存储情况如下
编辑
在hdfs中,数据当小于块本身时,不会占用整个空间大小,所以在图中可以看到,当多余数据小于块本身大小时,第三块的大小为44MB而不是128MB,它会根据所剩余数据大小来分配而不是单独占用128MB。
使用块的好处:
容错性高:通常每个块中的数据有着备份,当某个块中数据损坏时,会从其他副本中复制调用,确保正常使用。
简化存储系统:以块为单元,可分别控制各个不同数据
可分不在集群的各个节点中去,跨越了磁盘机器的限制。
优劣
优点:
HDFS适合用于存储大文件,例如GB-TB甚至更大级别。
运行于廉价的硬件设备上
采用流式数据访问
缺点
延迟高,实时访问数据弱
大量小文件存储
结构
HDFS的结构采用主从架构,且由多个不同类型的进程组成,而每个进程又多个不同类型的节点,如Scondary Namenode、Namenode、Datanode等相互配合、协作,从而形成了整个结构。
编辑
读写流程
如图所示,当客户端要去读取源数据首先向namenode发送请求,当写入数据时会将当下客户端中操作的数据进行保存并复制到框架中去,每个框架并有着多个块组成,块中存放这相应数据。当要读取数据时,同样发送请求读取框架中相应的数据。
Scondary Namenode 第二节点
用于定期合并命名空间镜像和编辑日志的辅助进程,当namenode崩溃时,数据会丢失,Scondary Namenode可以恢复数据,在合并操作过程中需要消耗cpu及内存资源,通常Scondary Namenode都是单独运行在另一台机器或服务器上的。
Namenode 名字节点 用于存放并维护文件系统的目录树
Nodename是HDFS上的主角,它相当大脑,维护着整个文件系统。通常吧Nodename作为架构中的主存储节点,控制管理者nodename。作为进程,开启关闭集群也都是它是工作。
Datanode 数据节点
在主从架构中担任从角色,所有的块都存放于datanode节点中,在运行的过程中datanode会不间断的向namenode报告,并提取和存储block中的数据。
使用(命令行接口)
格式
hadoop fs 或者 hadoop dfs
其中hadoop fs使用面积较广,可用任何文件系统, hadoop dfs只能操作HDFS相关的文件系统
hadoop dfs -touchz path 在hdfs上创建文件
hadoop dfs -mkdir path 在hdfs上创建目录
hadoop dfs -ls path 在hdsf上列出内容
hadoop dfs -ls -R path 在hdfs上递归查看(path为路径)
hadoop dfs -cat src 在hdfs上查看文件(src为文件路径)
hadoop dfs -mv 源文件 目标文件 在hdfs上移动文件
hadoop dfs -rm path 在hdfs上删除文件
其实很多操作与linux上的命令类似,只不过要在前加上hadoop dfs,因为它有着固定的命令行接口。
以上文章中如发现有问题或者建议,欢迎留言评论!感谢支持!