Hadoop之HDFS相关内容

一、 HDFS的一些操作命令

HDFS的上传命令

hdfs dfs -put linux文件路径 HDFS路径

HDFS的下载命令

hdfs dfs -get HDFS文件路径 linux路径

HDFS的删除命令

hdfs dfs -rm -r HDFS文件路径

HDFS的创建文件夹命令

hdfs dfs -mkdir -p HDFS路径

HDFS的查看文件夹命令

hdfs dfs -cat HDFS路径

HDFS的修改文件权限命令

hdfs dfs -chmod [-R] 权限数字 HDFS文件路径
hdfs dfs -chown 用户名 HDFS文件路径
hdfs dfs -chgrp 组名 HDFS文件路径

HDFS的文件重命名

hdfs dfs -mv HDFS文件路径 重命名的HDFS文件路径

HDFS的复制命令

hdfs dfs -cp HDFS路径 HDFS移动后的路径

HDFS查看某个路径下有哪些文件或文件夹

hdfs dfs -ls HDFS路径

二、 HDFS上传流程

在这里插入图片描述

1、 客户端找到NameNode,告诉NameNode我要上传一个200M的文件
2NameNode收到后,先在元数据中查看该文件是否存在以及存储空间是否充足,如果条件都满足就告诉客户端可以上传
3、 客户端先按照blocksize的大小对文件进行分割
4、 客户端向NameNode请求上传第一个block块,请求返回DataNode信息
5NameNode先将块信息存储到元数据中
6、 之后NameNode返回给客户端DataNode1DataNode2DataNode3的地址信息,表示用这三个DataNode来存储数据并备份
7、 客户端收到后,将block1上传到对应的DataNode8、 上传完成后,DataNode向客户端回应上传成功
9、 客户端再向NameNode请求上传第二个block块,请求返回DataNode信息,重复4-8步即可

三、 HDFS的下载流程

在这里插入图片描述

1、 客户端向NameNode请求下载xxx文件
2NameNode在元数据中查看该文件是否存在以及文件信息
3、 如果存在,向客户端返回该文件信息的一个列表,列表中包括文件的块信息以及块的存储位置
4、 客户端根据就近原则,去最近的DataNode上下载块数据
5、 然后DataNode将块数据返回给客户端
6、 客户端将这些块数据合并成xxx文件

四、HDFS的文件块大小

Hadoop1.x中为64M
在Hadoop2.x中为128M
原因: 文件块大小由  (传输时间 * 磁盘的传输速率)  来决定,但是磁盘的传输速率由硬件决定,无法改变,
	 所以只能改变传输时间,而传输时间只有达到寻址时间的100倍时为最佳状态,而寻址时间一般约为10ms,
	 及寻址时间 * 100 = 传输时间,此时的传输时间为1s

思考:为什么块不能设置太大,也不能设置太小
回答:设置太小的话,会增加寻址时间,程序会花费大量时间来找这个块的位置
	 设置太大的话,会增加传输时间,程序会花费大量时间来对这个数据块进行传输,会非常的慢
总结:HDFS的块大小设置主要取决于磁盘的传输速率

五、 NameNode和SecondaryNameNode的工作流程

在这里插入图片描述
NameNode在格式化成功后会在hadoop.tmp.dir配置目录下的dfs/name/current路径下存放一些文件

1、 edits文件: 用来记录客户端每次增加,创建,删除等操作
2、 fsimage文件: 存放的目录信息以及文件的元数据信息等
3、 seen-txid: 文件存放的是最后一个编辑日志文件编号
4、 VERSION: 存放的NameNode的版本信息

NameNode的工作机制

1、 程序启动后,NameNode会将最新的镜像文件fsimage以及seen-txid记录的编辑日志号之前的所有编辑日志文件edits
	加载到内存中,然后根据编辑日志文件对fsimage目录信息进行增删改,形成元数据,在这个过程中,
	客户端是无法对HDFS进行操作的,这个过程我们称之为集群的安全模式
2、 不断接收客户端的写操作,每记录一次写操作,就会往编辑日志中记录一下,并且更改内存中元数据,
	编辑日志每隔一段时间或者当编辑日志记录的操作次数达到一定容量时就会自动滚动成一个不可更改的编辑日志文件edits-xxx,
	我们也可以手动通过命令(hdfs dfsadmin-rollEdits)来将其滚动成一个编辑日志文件

NameNode的作用

1、 存储和管理整个HDFS集群的元数据
2、用于管理整个集群的状态以及维护数据的一致性

SecondaryNameNode的工作机制

1、 询问NameNode是否需要进行checkpoint操作
	条件: 当检查点时间到了(默认为一个小时)
		  edits记录的次数到达一定次数(默认为100万次)
2SecondaryNameNode强制将正在记录写操作的编辑日志滚动成一个新的编辑日志文件
3、 然后将从上一次检查点操作之后的记录的新的编辑日志文件以及fsimage镜像文件复制到SecondaryNameeNode所在的节点
4、 将这些文件加载到内存区域,然后根据编辑日志文件对fsimage镜像文件进行更改
5、 更改完成后生成一个检查点镜像文件fsimage.checkpoint
6、 将该镜像文件复制到NameNode中,然后将其重命名为fsimage

SecondaryNameNode的作用

帮助NameNode完成相关元数据的操作

注意

1NameNode是集群的管理者,SecondaryNameNode相当于一个秘书,因此SecondaryNameNode是无法取代
	NameNode的地位的
2、 当NameNode发生故障时,可以通过SecondaryNameNode来恢复部分数据

六、 NameNode和DataNode的工作流程

在这里插入图片描述

1NameNode启动后,等待DataNode注册
2DataNode启动后向NameNode注册,注册成功后会给DataNode回应一个注册成功的消息
3DataNode会每隔三秒和NameNode进行一次心跳,心跳的目的是看一看DataNode是否还活着,同时会携带
	NameNodeDataNode的一些命令
4DataNode会每隔一个小时会向NameNode汇报一下存储的块信息

注意

DataNodeNameNode在心跳三秒时间中没有心跳成功,此时NameNode并不会认为DataNode死亡,而是等待一段时间,
这段时间我们称之为掉线时限,默认为10分钟加30秒,这个时限我们可以自己手动修改
掉线时限=2 * dfs.namenode.heartbeat.recheck-interval + 10 * dfs.heartbeat.interval。
dfs.namenode.heartbeat.recheck-interval     心跳重新检测时间 
dfs.heartbeat.interval                      心跳时间

七、 节点的服役和退役

1、服役新节点

特点:保证在HDFS不关闭的情况下可以动态的增加新的数据节点

1、 先准备好一台新的虚拟机,配置好相应的网络、主机名映射和SSH免密登录以及Hadoop相关内容
2、 在新的虚拟机下的/etc/hosts下增加NameNode所在主机的ip以及主机名,NameNode所在主机同样如此
3、 通过SSH免密登录将新虚拟机和NameNode所在虚拟机建立连接
4、 将虚拟机安装目录下的metaData元数据文件目录清空
5、 在HDFS的NameNode所在节点的hadoop安装目录下的/etc/hadoop目录下创建一个dfs.hosts文件
	文件中填写HDFS需要服役的主机名
6、 在NameNode所在节点的hdfs-site.xml文件中,增加一个配置项dfs.hosts以及dfs.hosts所在路径
7、 在NameNode所在节点执行hdfs dfsadmin -refreshNodes刷新数据节点状态信息
8、 在新的节点通过hadoop-daemon.sh start datanode来单独启动DataNode

2、 退役旧节点

特点:如果是第一次退役,则需要重启HDFS集群

1、 在NameNode所在节点的hadoop配置文件下的/etc/hadoop下创建一个退役节点文件dfs.hosts.exclude
	增加我们需要退役的节点主机名
2、 同时将dfs.hosts文件中所需要退役的节点主机名删除
3、 在NameNode所在节点的hdfs-site.xml文件中增加一个配置项dfs.hosts.exclude以及路径
4、 在NameNode所在节点重新刷新一下节点信息hdfs dfsadmin -refreshNodes 退役节点即可退役
5、 如果	HDFS设置的备份数量大于退役后的节点数量,则无法退役成功
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值