目录
5、 NameNode与NameSecondary 工作机制 1.x
一、创建回收站
1、编辑配置文件 core-site.xml
添加内容如下
<property>
<name>fs.trash.interval</name>
<value>10080</value>
</property>
10080 代表 10080分钟 即7天 也就是回收站保存7天,7天后删除
2、重新启动集群进行测试
在hdfs上新建test1、test2文件夹
对test 进行删除操作,操作与显示如下:
[peizk@hadoop sbin]$ hdfs dfs -rm -r /test
2022-03-20 12:15:49,546 INFO fs.TrashPolicyDefault: Moved: 'hdfs://hadoop:9000/test' to trash at: hdfs://hadoop:9000/user/peizk/.Trash/Current/test
查看 回收站
[peizk@hadoop sbin]$ hdfs dfs -ls /user/peizk/.Trash/Current/
Found 1 items
drwxr-xr-x - peizk supergroup 0 2022-03-20 12:13 /user/peizk/.Trash/Current/test
配置成功
3、不经过回收站直接删除办法
语句如下:
[peizk@hadoop sbin]$ hdfs dfs -rm -r -skipTrash /test3
Deleted /test3
此语句在生产中一般不允许使用
二、HDFS一些其他命令
1、 hdfs --help
查看hdfs 下命令
2、 hdfs dfsadmin
查看安全模式是否开启
[peizk@hadoop sbin]$ hdfs dfsadmin -safemode get
Safe mode is OFF
[peizk@hadoop sbin]$
当安全模式关闭时,读和写都是可以的
当安全模式开启时,读可以,写不可以
一般进入安全模式有两种情况
第一是:被动进入,说明HDFS集群有问题,一般是 集群磁盘空间不够了,此时进入相当于保护模式
第二是:主动进入,一般是用于维护,保证这段时间HDFS不会有新数据/新文件写入。
3、hdfs fsck
用来查看数据块是否健康,获取文件的block信息和位置信息等
如下查看HDFS根目录
[peizk@hadoop sbin]$ hdfs fsck /
Connecting to namenode via http://hadoop:9870/fsck?ugi=peizk&path=%2F
FSCK started by peizk (auth:SIMPLE) from /10.0.12.8 for path / at Sun Mar 20 12:44:23 CST 2022
Status: HEALTHY
Number of data-nodes: 1
Number of racks: 1
Total dirs: 9
Total symlinks: 0
Replicated Blocks:
Total size: 140 B
Total files: 3
Total blocks (validated): 2 (avg. block size 70 B)
Minimally replicated blocks: 2 (100.0 %)
Over-replicated blocks: 0 (0.0 %)
Under-replicated blocks: 0 (0.0 %)
Mis-replicated blocks: 0 (0.0 %)
Default replication factor: 1
Average block replication: 1.0
Missing blocks: 0
Corrupt blocks: 0
Missing replicas: 0 (0.0 %)
Erasure Coded Block Groups:
Total size: 0 B
Total files: 0
Total block groups (validated): 0
Minimally erasure-coded block groups: 0
Over-erasure-coded block groups: 0
Under-erasure-coded block groups: 0
Unsatisfactory placement block groups: 0
Average block group size: 0.0
Missing block groups: 0
Corrupt block groups: 0
Missing internal blocks: 0
FSCK ended at Sun Mar 20 12:44:23 CST 2022 in 7 milliseconds
The filesystem under path '/' is HEALTHY
4、hdfs namenode
格式化namenode命令如下
hdfs namenode -format
三、HDFS主从架构
1、一个名词:元数据 -- MetaData
(1)定义
是由NameNode来维护的包含文件的路径、副本数量、block块所在的服务器位置等信息
例如下
(2) 元数据存储的三种方式
内存元数据:元数据放在内存中,方便快速读取
fsimage :元数据镜像文件,内存中的元数据,序列化到磁盘中。存储某一时间段NameNode内存元数据信息。
edits :记录用户的一些操作日志、删除请求、上传请求等,可通过日志运算出元数据。
2、NameNode(NN)名称节点
存储的内容包括:
1、文件的名称
2、文件的目录结构
3、文件的属性(权限、副本数、创建时间等)
***4、一个文件被对应切割的哪些数据块(包括副本的数据块)》》对应分布在哪些DataNode,管理文件系统的命名空间,本质就是维护文件系统树的文件和文件夹。
NameNode 文件存放路径
[peizk@hadoop current]$ pwd
/home/peizk/tmp/dfs/name/current
存放的文件主要为:
镜像文件:fsimage
编辑日志文件:edits
3、NameSecondary(2NN) 第二节点
NameSecondary 文件存放位置
[peizk@hadoop current]$ pwd
/home/peizk/tmp/dfs/namesecondary/current
4、 DataNode (DN)数据节点
DataNode 文件存放位置
/home/peizk/tmp/dfs/data/current/BP-2057196106-10.0.12.8-1647183603680/current/finalized/subdir0/subdir0
(1)存储数据块和数据块的元数据
主要文件:块 一个块的 默认最大为128M
块的元数据
(2)每隔一段时间会发送blockreport(块报告)给NN
dfs.blockreport.intervalMsec 21600000 =6H
在给NN发送 blockreport(块报告)要检查自己
dfs.datanode.directoryscan.interval 21600000 = 6H
注意:这两个参数值一定要一样
5、 NameNode与NameSecondary 工作机制 1.x
(1)为什么要引进2NN
如下图
(2)NN工作机制
1、client 向NN提出上传请求,NN的Edits对上传请求进行记录并返回相对应的元数据信息给Client
2、client 根据返回的相应元数据,去对应的DN上传数据,当数据上传完成后,DN向client返回相应的结果
3、 client再将DN返回的结果,再返回给NN,然后NN在MD进行相应记录,并让2NN对fsimage进行相应的更新(合并edits和fsimage)
(3) 2NN工作机制(合并更新的流程)
(4)关于 CheckPoint
什么是checkpoint,就是2NN合并更新文件的触发时间
主要有两个
1、是时间指定两次checkpoint的最大时间间隔
fs.checkpoint.period 默认是3600S
2、是针对edits文件的操作次数,比如每1000次上传请求触发一次
6、 NameNode高可靠 2.x~
为了解决脑裂引入Zookeeper
四、HDFS优缺点
1、优点
(1)处理海量数据
GB TB PB
(2)适合批处理
移动计算而不是移动数据,会把数据位置暴露给计算框架
(3)高容错
数据自动保存N个副本,增加副本数,提高容错
某一个副本丢失,HDFS内部机制是可以自动恢复的
(4)可以构建在廉价机器上
2、 缺点
(1)小文件问题
需要工程师去合并小文件
(2)不适合毫秒级(实时)
3、补充:关于小文件问题
a:数据传输到HDFS之前,提前合并
b:数据已经到HDFS,在业务低谷期,去合并,至于如何合并,HAR,CombineFileInputFormat
五、思考题
1、了解机架
机架感知 以副本=3为例
首先在客户端所在机架挑出一台主机(有时也会根据容量等)进行副本存储,接着在同一机架,挑选另一台主机进行存储,最后再挑选不同机架的一个主机进行存储