- Namenode与Datanode的多目录配置
- 服务器间的数据拷贝
- 集群间的数据拷贝
- 小文件归档
解决办法
案例 - HDFS回收站机制
- 快照管理
- HDFS的写过程
- 网络拓扑与节点距离的计算
- HDFS读过程
- 总结
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的内存
- 时间案例演示:
案例链接
开启回收站功能,可以讲删除的文件在不超时的情况下,回复原文件
防止误删,关闭等
默认关闭
api语言不会直接进入回收站,只有shell脚本可以;
例:java需要调用moveToTrash()才会进入回收站
设置文件:core-site.xml
1.默认值fs.trash.interval=02.默认值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
HDFS读过程3.同一数据中心不同机架上的节点
Distance(d1/r2/n0,d1/r3/n2)=4
不同数据中心的节点
Distance(d1/r2/n1,d2/r4/n1)=6
网络拓扑
第二章总结 期末考试 题型分布1.客户端向namenode请求读数据,并且说明指定位置
2.namenode返回元数据信息(从哪开始分了多少块)
3.客户端根据namenode返回的元数据信息从datanode进行读取
4.客户端把块拼接,进行文件复原
简答5个:第二章第三章对半 第二章:6-9小节一个简答; 2.10至少2个简答题或1个简答1个综合 综合2个:第二章第三章各1个 第一章无大题期末考试大题占一半
maven会考概念,不会考配置文件
JavaApi基本没有考点
NN和2NN非常重要
版本特性考点不多,至多一道简答题
HDFS读写过程,一道大题起,可能两道
第三章数据压缩 一个填空



