大数据HDFS相关知识点

HDFS相关知识点

  1. Namenode与Datanode的多目录配置
  2. 服务器间的数据拷贝
  3. 集群间的数据拷贝
  4. 小文件归档
    解决办法
    案例
  5. HDFS回收站机制
  6. 快照管理
  7. HDFS的写过程
  8. 网络拓扑与节点距离的计算
  9. HDFS读过程
  10. 总结

Namenode与Datanode的多目录配置

Namenode相同
Datanode不同

服务器间的数据拷贝

#1.推  将文件推到指定主机
scp -r hello.txt root@hadoop2:/tmp

#2.拉 远程主机拷贝到本机
scp -r root@hadoop2:/tmp/hello.txt ./hello.txt

#3.通过本地主机中转实现两个远程主机的文件复制

scp -r root@hadoop2:/tmp/hello.txt root@hadoop3:/tmp/hello.txt

集群间的数据拷贝

采用distcp命令实现两个hadoop集群之间的递归数据复制

#工作端口默认9000   50070为外部接口

bin/hadoop distcp hdfs://hadoop1:9000/user/root/hello.txt  hdfs://hadoop2:9000/user.root.hello.txt

小文件归档

hdfs不适合存储大量的小文件
因为在namenode在存储过程中会开辟大量的小空间,分块存储,每个块的元数据存储在namenode的内存中,因此hdfs存储小文件会变得非常低效

大量的小文件会耗尽namenode中的大部分内存

存储小文件所需要的磁盘容量和数据块的大小无关

误区需注意: datanode实际上是逻辑上的划分,并非实际的划分;但是namanode确实实际的; 例如:1MB的文件设置为128MB的块存储,时间使用的是1MB的磁盘空间,而不是128M;

解决办法

1.hdfs存档文件或hdr文件,是一个更高效的文件存档工具;
2.它将文件存入hdfs块,在减少namenode的内存使用的同时,允许对文件进行透明的访问;
3.具体来说,hdfs存档文件对内还是一个一个的独立存储,对namenode而言是一个整体,减少了namenode的内存
namenode小文件存储演示图

案例

HDFS回收站机制

开启回收站功能,可以讲删除的文件在不超时的情况下,回复原文件
防止误删,关闭等
默认关闭
api语言不会直接进入回收站,只有shell脚本可以;
例:java需要调用moveToTrash()才会进入回收站

设置文件:core-site.xml
1.默认值fs.trash.interval=0

2.默认值fs.trash.checkpoint.interval=0

3.要求fs.trash.checkpoint.interval=fs.trash.interval
回收站机制

#恢复回收站
hadoop fs -mv /user/root/.Trash/Current/user/root/input  /user/root/input
#清空回收站
hadoop fs -expunge

快照管理

默认关闭
1.快照管理相当于对目录做一个备份
2.不会立即复制所有文件,而是指向同一个文件
3.当写入发生时,才会产生新文件

#1.开启快照
hdfs dfsadmin -allowSnapshot 路径

#2.禁止指定目录的快照,默认是禁用
hdfs dfsadmin -disallowSnapshot 路径

#3.对目录创建快照(当前时间)
hdfs dfs -createSnapshot 路径

#4.以指定名称创建快照
hdfs dfs -createSnapshot 路径 名称

#5.重命名快照
hdfs dfs -renameSnapshot 路径 旧名称  新名称

#6.列出当前用户所有可快照目录
hdfs lsSnapshotableDir

#7.比较两个快照目录
hdfs snapShotDiff 路径1 路径2

#8.删除快照
hdfs dfs -deleteSnapshot 路径 名称

HDFS的写过程

这里是引用

首先客户端对big.dat根据blocksize进行切分
1.向namenode请求上传文件到指定位置;
2.namenode查询没有问题后,向客户端回应,客户端开始传送;
3.客户端请求上传和传输block,返回datanode;
4.namenode给客户端反馈指定传输位置,namenode给客户端传送了三个节点
5.客户端根据namenode返回节点进行传输,选择和客户端距离最近的节点建立传输通道;
6.节点进行应答;
7.客户端开始传输数据;
datanode之间的通道和客户端无关,客户端只给一个距离最近datanode进行传输,其余datanode的文件传输是datanode自行建立的,走的是集线器的背板带宽;
第一个块传输完毕,给客户端反馈,开始第二个块的传输

网络拓扑与节点距离的计算

HDFS写数据的过程中,NameNode会选择距离待上传数据距离近的DataNode接收数据;
实际应用:异地容灾问题
节点距离:两个节点到达最近共同祖先的距离总和
网络上的距离不是物理的距离;
节点到一个网关可以理解为共用一个路由器
在这里插入图片描述

计算方式

1.同一节点:Distance(d1/r1/n0,d1/r1n0)=0
自己与自己通信,走回环网卡
在这里插入图片描述
2.同一机架上的不同节点
Distance(d1/r1/n1,d1/r1/n2)=2
在这里插入图片描述

3.同一数据中心不同机架上的节点
Distance(d1/r2/n0,d1/r3/n2)=4
在这里插入图片描述
不同数据中心的节点
Distance(d1/r2/n1,d2/r4/n1)=6
在这里插入图片描述
网络拓扑

在这里插入图片描述

HDFS读过程

在这里插入图片描述

1.客户端向namenode请求读数据,并且说明指定位置
2.namenode返回元数据信息(从哪开始分了多少块)
3.客户端根据namenode返回的元数据信息从datanode进行读取
4.客户端把块拼接,进行文件复原

第二章总结

期末考试

题型分布
简答5个:第二章第三章对半
第二章:6-9小节一个简答;
2.10至少2个简答题或1个简答1个综合
综合2个:第二章第三章各1个
第一章无大题
期末考试大题占一半

maven会考概念,不会考配置文件
JavaApi基本没有考点
NN和2NN非常重要
版本特性考点不多,至多一道简答题
HDFS读写过程,一道大题起,可能两道
第三章数据压缩 一个填空

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值