----尚硅谷大数据学习笔记整理记录
一、HDFS小文件存档
1、弊端:大量小文件会消耗NameNode中的大部分内存,造成低效
2、解决办法
1)将小文件整合存档为:HDFS存档文件或HAR文件
用法:
# 用法
#1.创建归档文件
archive -archiveName <NAME>.har -p <parent path> [-r <replication factor>]<src>* <dest>
bin/hadoop archive -archiveName myhar.har -p /user/hadoop /user
#2.查看归档文件
hdfs dfs -lsr /user/myhar.har
hdfs dfs -lsr har:///user/myhar.har
#3.解压归档文件
hdfs dfs -mkdir -p /user/har
hdfs dfs -cp har:///user/myhar.har/* /user/har/
二、HDFS多个集群之间的数据拷贝
1、本地拷贝
cd /kkb/soft
scp -r jdk-8u141-linux-x64.tar.gz hadoop@node02:/lyc/soft
2、集群之间拷贝
cd /lyc/install/hadoop-2.6.0-cdh5.14.2/
bin/hadoop distcp hdfs://node01:8020/jdk-8u141-linux-x64.tar.gz hdfs://cluster2:8020/
三、HDFS回收站
任何一个文件系统,基本上都会有垃圾桶机制,也就是删除的文件,不会直接彻底清掉,我们一把都是将文件放置到垃圾桶当中去,过一段时间之后,自动清空垃圾桶当中的文件,这样对于文件的安全删除比较有保证,避免我们一些误操作,导致误删除文件或者数据
1、回收站配置两个参数
默认值fs.trash.interval=0,0表示禁用回收站,可以设置删除文件的存活时间。
默认值fs.trash.checkpoint.interval=0,检查回收站的间隔时间。
要求fs.trash.checkpoint.interval <= fs.trash.interval。
2、启动回收站,修改所有服务器的core-site.xml配置文件
<!-- 开启hdfs的垃圾桶机制,删除掉的数据可以从垃圾桶中回收,单位分钟 -->
<property>
<name>fs.trash.interval</name>
<value>10080</value>
</property>
3、查看回收站回收站在集群的/user/hadoop/.Trash/ 这个路径下
4、通过javaAPI删除的数据,不会进入回收站,需要调用moveToTrash()才会进入回收站
Trash trash = New Trash(conf);
trash.moveToTrash(path);
5、恢复回收站数据
hdfs dfs -mv trashFileDir hdfsdir
trashFileDir :回收站的文件路径
hdfsdir :将文件移动到hdfs的哪个路径下
6、清空回收站
hdfs dfs -expunge
四、HDFS-HA高可用
1、工作机制:通过双NameNode消除单点故障
2、工作要点
- 元数据管理方式需要改变
- 需要一个状态管理功能模块
- 必须保证两个NameNode之间能够ssh无密码登录
- 隔离,即同一时刻仅有一个NameNode对外服务
3、自动故障转移机制
依赖于Zookeeper
1)故障检测:集群中每个NameNode在Zookeeper中维护了一个持久会话,如果机器崩溃,Zookeeper的会话将终止,通知另一个NameNode触发故障转移
2)现役NameNode选择:Zookeeper提供了一个简单的机制用于唯一选择一个节点为active状态,如果现役的NameNode崩溃,另一个节点可能从Zookeeper获得特殊的排外锁以表明他成为现役的NameNode
ZKFC是自动故障转移中的另一个新组件,监视和管理NameNode的状态,进行健康监测和会话管理,以及基于Zookeeper的选择保护之前的现役NameNode,然后本地NameNode转换为active状态。