HDFS基础入门1

发布于:2022-12-21 ⋅ 阅读:(166) ⋅ 点赞:(0)

Hadoop系列

注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kafka Hbase Hive Flume等等~写的都是纯干货,各种顶会的论文解读,一起进步。
今天继续和大家分享一下Hadoop系列之HDFS基础入门1
#博学谷IT学习技术支持



前言

  • 介绍

  • 1、HDFS的全称Hadoop Distributed File System,Hadoop分布式文件系统

  • 2、HDFS来自谷歌的论文GFS

  • 特点

  • 1、HDFS集群可以将很多廉价色计算机组合在一起,来存储数据,强调是整体的存储能力,而不是单机的能力

  • 2、HDFS的主机几乎是无限扩展,理论上可以存储无限多文件

  • 3、HDFS合适存储大文件,不适合存小文件,因为HDFS中不管是大文件还是小文件都会占用一份元数据,而每一条元数据是150字节,这些元数据是由NameNode内存来管理,如果小文件过多,可能会耗尽NameNode内存,就无法存储新的文件

  • 4、HDFS上的文件只支持追加写入,不支持对文件的随机修改,因为HDFS存储的一般都是已经发生过的历史数据,不需要修 改

  • 5、HDFS存储文件过程不是实时的,存储时需要消耗一定的时间,有延迟,所以一般用于离线数据存储


在这里插入图片描述

一、HDFS的架构

  • NameNode

1、NameNode管理整个HDFS集群

2、NameNode管理整个HDFS的所有元数据(/a.txt rwx 1K 3 {blk:node1,node2,node3})

3、Client要上传或者下载文件必须先找NameNode

4、一旦NameNode挂掉,整个HdFS集群将无法工作

5、各个DataNode隔一段时间向NameNode汇报自己的Block信息和磁盘信息

  • DataNode

1、DataNode是具体存数据的,HDFS所有真实数据都在DataNode存储

2、各个DataNode隔一段时间向NameNode汇报自己的Block信息和磁盘信息

3、Client在上传和下载文件时,和NameNode交流之后,真实的数据上传和下载是在Client和DataNode之间

  • SecondaryNameNode

1、辅助NameNode进行元数据管理,将NameNode内存中元数据保存到硬盘上

二、HDFS的切片机制

1、Client在向HDFS上进行存储时,Client会将文件进行切片,每一个切片最大128M,切片又被称为Block,逻辑单位

2、我们也可以自定义每一个BLock的大小,参数位于hdfs-site.xml中:dfs.blocksize。默认大小是128M(134217728字节)
举例:一个文件300M,切分成3个Block:Block1-128M Block2-128M Block3-44M

三、HDFS的副本机制

1、HDFS默认每一个Block是3个副本,我们也可以修改该值,在hdfs-site.xml中:dfs.replication参数

2、HDFS在存放每一个Block的3个副本时,有一个放置策略

3、HDFS副本的数量必须小于等于集群主机的数量:3台主机,不能设置4个副本

四、HDFS的名称空间

用来标识存放在HDFS上的每一个文件的路径,有两种写法:

写法1:/dir/a.txt #只能用于在集群内部的访问

写法2: hdfs://node1:8020/dir/a.txt #在任何地方都可以访问

五、HDFS的元数据

1、HDFS上每一个文件的信息都是元数据,这个元数据不是文件的内容,而是描述文件特征的信息
-rw-r–r-- root supergroup 39 B Sep 06 21:31 3 128 MB a.txt

六、HDFS的安全模式

1、启动HDFS时,HDFS会自动进入安全模式,在安全模式完成Block的自我自测和自我修复

2、当发现HDFS的副本率达到99.9%,HDFS会自动离开安全模式

3、HDFS进入安全模式之后,用户只能查看HDFS文件内容,不能对HDFS文件进行增删改

4、安全模式的手动操作命令

hdfs dfsadmin -safemode get #查看安全模式状态
hdfs dfsadmin -safemode enter #手动进入安全模式
hdfs dfsadmin -safemode leave #手动离开安全模式
hdfs dfsadmin -safemode forceExit #强制手动离开安全模式

七、HDFS的Shell命令

hdfs dfs … #只能用于HDFS文件系统,专门用来操作HDFS的
hadoop fs … #可以用于多种文件系统,不仅可以操作HDFS,也可以操作其他文件系统,文件系统通用的操作命令

#1、查看指定路径的当前目录结构
hadoop fs -ls /
hdfs dfs  -ls /

#2、递归查看指定路径的目录结构
hadoop fs -ls -R /  #用这个

#3、查看目录下文件的大小
hadoop fs -du -h /

#4、文件移动(HDFS之间)
hadoop fs -mv /a.txt /dir

#5、文件复制(HDFS之间)
hadoop fs -cp /dir/a.txt /dir/b.txt

#6、删除操作   !!!!!!!!!!!!!!!!!!
hadoop fs -rm /dir/b.txt  #删文件
hadoop fs -rm -r /dir     #删目录

#7、文件上传(本地文件系统到HDFS文件系统)  --- 复制操作   !!!!!!!!!!!!
hadoop fs -put a.txt /dir 

#8、文件上传(本地文件系统到HDFS文件系统)  --- 剪切操作
hadoop fs -moveFromLocal test1.txt /

#8、文件下载(HDFS文件系统到本地文件系统)   !!!!!!!!!!!
hadoop fs -get /aaa.txt  /root 

#9、文件下载(HDFS文件系统到本地文件系统)
hadoop fs -getmerge /dir/*.txt /root/123.txt 

#10、查看HDFS文件内容
hadoop fs -cat /dir/1.txt

#11、在HDFS创建文件夹     !!!!!!!!!!!!
hadoop fs -mkdir /my_dir

#12、修改HDFS文件的权限
hadoop fs -chmod -R 777 /dir

大部分基本都和LINUX操作差不错,不算特别难记。主要记住几个常用的就行了。

八、HDFS的读写流程(面试题)

1.写流程

在这里插入图片描述

1、客户端向NameNode发送上传请求
2、NameNode经过一个权限检查,如果没有问题,想客户端返回一个主机列表
3、客户端对文件进行切片,然后和这些主机建立通信,分别上传一个个的Block
4、当所有的Block的上传完毕,客户端向NameNode汇报上传情况,NameNode更新元数据

2.读流程

在这里插入图片描述

1、客户端向NameNode发起下载请求
2、NameNode经过权限检查,如果没有问题则向客户端返回文件的Block位置信息
3、客户端根据位置信息分别和对应的主机建立通信
4、客户端读取每一个Bock数据,并将这些Block数据进行拼接,形成一个完整的文件

九、HDFS的元数据辅助管理(面试题)

在这里插入图片描述

这里注意的是当Namenode宕机了以后,哪怕元数据的硬盘也挂了,依然可以从SecondaryNamenode中去复制元数据,元数据不会彻底丢失,但是可能会丢失一部分最新的、还没从硬盘拷贝到SecondaryNamenode的元数据,因为拷贝的过程是有时差。不是实时的。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了HDFS基础入门1,以后会慢慢更新这个Hadoop系列

本文含有隐藏内容,请 开通VIP 后查看