hdfs学习记录

一.几种常见的hdfs命令

1.dfsadmin run a DFS admin client

其中最常用的一个参数是safemode 安全模式

hdfs dfsadmin -safemode <enter | leave | get | wait> 安全模式 这个命令当中,我们常用的是enter和leave。首先什么是安全模式,就是只读模式。所以我们一般在生产中什么场景下使用呢?

如果我们是手工进入到这个安全模式的话,其他用户只能读取里面的数据,而不能添加写入或者修改。这个时候我们一般是生产维护的过程,比如进行数据迁移,备份等。等完事后再解除安全模式

如果是系统自动进入到安全模式的话就说明我们的hdfs可能出现问题了,这个时候我们也分为两种操作:a,手动的输入命令hdfs dfsadmin -safemode leave这个命令,如果能正常退回普通模式的话就没有问题了。b,如果手工输入命令后还是不能返回普通模式的话,说明NN节点受损了,这个时候我们要仔细第阅读NN节点的log日志来排查可能的问题。

当进入到safemode模式后,系统提示Safe mode is ON这个提示,然后我就不能put文件上去了,当我退出以后就可以了。另外在safe模式下是可以从hadoop上面get文件下来的,但不能moveToLocal这个中命令,你只能copy下来本地。

所以一般情况下安全模式是关闭的 Safe mode is off

2.fsck run a DFS filesystem checking utility

fsck命令,用于检查HDFS上文件和目录的健康状态、获取文件的block信息和位置信息等。

3.dfs run a filesystem command on the file system

常见的dfs命令见笔记三

4.namenode run the DFS namenode

hdfs namenode -format 格式化namenode

二.设置回收站功能

在/home/wolf/app/hadoop/etc/hadoop/core-site.xml 文件最后增加

 <property>
       <name>fs.trash.interval</name>    --这句话意识添加文件清除间隔
       <value>10080</value>              --这里设置间隔时间 单位是分钟(10080就是7天)
   </property>

接着我们试验一下

首先在hdfs上创建两个文件夹test1 test2

bin/hdfs dfs -mkdir -p delete/test1
bin/hdfs dfs -mkdir -p delete/test2

我们可以看到hdfs上已经有了
在这里插入图片描述

然后删除test1

[wolf@wolf hadoop]$ bin/hdfs dfs -rm -r delete/test1
2022-03-20 16:29:26,026 INFO fs.TrashPolicyDefault: Moved: 'hdfs://wolf:9000/user/wolf/delete/test1' to trash at: hdfs://wolf:9000/user/wolf/.Trash/Current/user/wolf/delete/test1

弹出info 信息 它提示我test1文件被移动到了.Trash 文件夹下

然后我们看一下是否移动到了.Trash 文件夹下

[wolf@wolf hadoop]$ bin/hdfs dfs -ls /user/wolf/.Trash/Current/user/wolf/delete
Found 1 items
drwxr-xr-x   - wolf supergroup          0 2022-03-20 16:22 /user/wolf/.Trash/Current/user/wolf/delete/test1

确实已经是移动到了.Trash 文件夹

所以回收站功能就是把一个文件移动到另一个.Trash文件里,然后每隔一段时间自动删除

当然,hdfs也提供了另一种删除方式,即跳过回收站直接删除,我们以test2文件夹为例

[wolf@wolf hadoop]$ bin/hdfs dfs -rm -r -skipTrash delete/test2
Deleted delete/test2

然后我们再去.Trash 文件夹下看看

[wolf@wolf hadoop]$ bin/hdfs dfs -ls /user/wolf/.Trash/Current/user/wolf/delete
Found 1 items
drwxr-xr-x   - wolf supergroup          0 2022-03-20 16:22 /user/wolf/.Trash/Current/user/wolf/delete/test1

仍然只有test1,所以加上-skipTrash 就会直接删除,严禁在生产上使用!!!

三.hdfs参数学习路径

打开Hadoop官网

https://hadoop.apache.org/docs/stable/

左边一栏 Configuration 下都是参数文件,里面有很多详细的介绍

四.hdfs主从架构

1.hdfs进程介绍

(1)NameNode 名称节点 (主)

(2)DataNode 数据节点 (从)

(3) SecondaryNameNode第二名称节点

1.NameNode

主要存储的内容是:

1、文件名称

2、文件目录结构

3、文件属性 (权限, 副本数,创建时间)
4、文件对应数据块,数据块对应分布在哪些DN节点上列表

管理文件系统的命名空间,其实就是维护文件系统树的文件和文件夹

我们进入到/home/wolf/tmp/dfs/name/current 下 会看到两种文件

fsimage:镜像文件

edits:编辑日志文件
在这里插入图片描述

他们的作用方式如下图
在这里插入图片描述

2.SecondaryNameNode

1.存储:命名空间镜像fsimage + 编辑日志editlog

2.作用:定期合并fsimage+editlog 为新的fsimage推送给NN

我们进入到/home/wolf/tmp/dfs/namesecondary/current 也会看到两种文件
在这里插入图片描述

他们的作用方式如下图
在这里插入图片描述

例如:edits_0000000000000000355-0000000000000000356和fsimage_0000000000000000356

通过检查节点(checkpoint)合并fsimage_0000000000000000368 并推给NN

正在记录的edits_inprogress_0000000000000000357

写满或者到一定时间会放入edits_0000000000000000355-0000000000000000356

再新建edits_0000000000000000357-0000000000000000368

循环往复

写满或者一定时间会放入

dfs.namenode.checkpoint.period 3600 秒 1小时

dfs.namenode.checkpoint.txns 1000000 100万

正因为secondarynamenode 是每隔一小时才备份一下 所以一旦NN发生故障,其实是有一部分数据是没法恢复的(比如9点 NN和SN是一样的 但是9点30发生故障 SN也只有9点的数据)所以SN有一定局限性,为此我们采用

HA方案

HA是Highly Available缩写,是双机集群系统简称,提高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。即一个是active NN 一个是backup NN。同时往两个NN节点写,但是只用一个。

3.DataNode

1、读写文件的数据块,存储数据块和数据块的元数据 一个块默认128M
2、与NameNode通信

每隔一段时间会发送blockreport(块报告)给到NN

dfs.blockreport.intervalMsec 21600=6h

在给NN发送blockreport(块报告)要检查自己

dfs.datanode.directoryscan.interval 21600=6h

这两个参数一般设置为一样的

五.HDFS优缺点

1、HDFS 优点:

(1) 高容错性

  1. 数据自动保存多个副本。它通过增加副本的形式,提高容错性。

  2. 某一个副本丢失以后,它可以自动恢复,这是由 HDFS 内部机制实现的,我们不必关心。

(2) 适合批处理

  1. 它是通过移动计算而不是移动数据。

  2. 它会把数据位置暴露给计算框架。

(3) 适合大数据处理

  1. 数据规模:能够处理数据规模达到 GB、TB、甚至PB级别的数据。

  2. 文件规模:能够处理百万规模以上的文件数量,数量相当之大。

  3. 节点规模:能够处理10K节点的规模。

(4) 流式数据访问

  1. 一次写入,多次读取,不能修改,只能追加。

  2. 它能保证数据的一致性。

(5) 可构建在廉价机器上

  1. 它通过多副本机制,提高可靠性。

  2. 它提供了容错和恢复机制。比如某一个副本丢失,可以通过其它副本来恢复。

2、 HDFS 缺点:

(1) 不适合低延时数据访问;

  1. 比如毫秒级的来存储数据,这是不行的,它做不到。

  2. 它适合高吞吐率的场景,就是在某一时间内写入大量的数据。但是它在低延时的情况 下是不行的,比如毫秒级以内读取数据,这样它是很难做到的。

改进策略

(2) 无法高效的对大量小文件进行存储

  1. 存储大量小文件的话,它会占用 NameNode大量的内存来存储文件、目录和块信息。这样是不可取的,因为NameNode的内存总是有限的。

  2. 小文件存储的寻道时间会超过读取时间,它违反了HDFS的设计目标。 改进策略

(3) 并发写入、文件随机修改

  1. 一个文件只能有一个写,不允许多个线程同时写。

  2. 仅支持数据 append(追加),不支持文件的随机修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值