1.集群间数据拷贝
1.1 scp实现两个远程主机之间的文件复制
scp -r hello.txt root@hadoop103:/user/luomk/hello.txt // 推 push
scp -r root@hadoop103:/user/luomk/hello.txt hello.txt // 拉 pull
scp -r root@hadoop103:/user/luomk/hello.txt root@hadoop104:/user/luomk //是通过本地主机中转实现两个远程主机的文件复制;如果在两个远程主机之间ssh没有配置的情况下可以使用该方式。
1.2 采用discp命令实现两个hadoop集群之间的递归数据复制
bin/hadoop distcp hdfs://haoop102:9000/user/luomk/hello.txthdfs://hadoop103:9000/user/luomk/hello.txt
2.小文件存档
2.1 hdfs存储小文件弊端
每个文件均按块存储,每个块的元数据存储在NameNode的内存中,因此hadoop存储小文件会非常低效。因为大量的小文件会耗尽NameNode中的大部分内存。但注意,存储文件所需要的磁盘容量和存储这些原始内容所需要的磁盘空间相比也不会增多;
2.2 解决存储小文件的办法之一
hadoop存档文件或har文件,是一个更高效的文件存档工具,它将文件存入HDFS块,在减少NameNode内存使用的同时,允许对问价进行透明的访问;具体说,hadoop存档文件对内还是一个一个独立文件,对NameNode而言却是一个整体,减少了NameNode的内存;
2.3 实例
//需要启动yarn进程
[luomk@hadoop102 hadoop-2.7.2]$ start-yarn.sh
//归档文件
把/user/luomk目录里面的所有文件归档成一个叫myhar.har的归档文件,并把归档后文件存储到/user/my路径下。
[luomk@hadoop102 hadoop-2.7.2]$ bin/hadoop archive -archiveName myhar.har -p /user/luomk /user/my
//查看归档
[luomk@hadoop102 hadoop-2.7.2]$ hadoop fs -lsr /user/my/myhar.har
[luomk@hadoop102 hadoop-2.7.2]$ hadoop fs -lsr har:///myhar.har
//解归档文件
[luomk@hadoop102 hadoop-2.7.2]$ hadoop fs -cp har:/// user/my/myhar.har /* /user/luomk