HDFS其他功能(一)
一、集群间数据拷贝
1)scp实现两个远程主机之间的文件复制
scp -r hello.txt root@bigdata111:/user/itstar/hello.txt // 推 push
scp -r root@bigdata112:/user/itstar/hello.txt hello.txt // 拉 pull
scp -r root@bigdata112:/opt/module/hadoop-2.8.4/LICENSE.txt root@bigdata113:/opt/module/hadoop-2.8.4/LICENSE.txt
//是通过本地主机中转实现两个远程主机的文件复制;如果在两个远程主机之间ssh没有配置的情况下可以使用该方式。
(1)推命令
针对bigdata112进行操作--输入: scp -r /opt/ACA root@bigdata111:/opt/ 将本机的opt目录下的ACA文件传到主机bigdata111的/opt/目录下。
针对bigdata112进行操作--输入: scp -r /opt/ACA root@bigdata113:/opt/ACA2 将本机的opt目录下的ACA文件传到主机bigdata113的/opt/目录下并改名为ACA2。
(2)拉命令
针对bigdata112进行操作--输入: scp -r root@bigdata111:/opt/edits.xml ./ 将主机bigdata111的opt目录下的edits.xml文件拉到本机的./目录下。
2)采用discp命令实现两个hadoop集群之间的递归数据复制
注:不用设置其他,直接写IP
bin/hadoop distcp hdfs://192.168.1.51:9000/LICENSE.txt hdfs://192.168.1.111:9000/HAHA
二、Hadoop存档
1)理论概述
每个文件均按块存储,每个块的元数据存储在namenode的内存中,因此hadoop存储小文件会非常低效。因为大量的小文件会耗尽namenode中的大部分内存。但注意,存储小文件所需要的磁盘容量和存储这些文件原始内容所需要的磁盘空间相比也不会增多。例如,一个1MB的文件以大小为128MB的块存储,使用的是1MB的磁盘空间,而不是128MB。
Hadoop存档文件或HAR文件,是一个更高效的文件存档工具,它将文件存入HDFS块,在减少namenode内存使用的同时,允许对文件进行透明的访问。具体说来,Hadoop存档文件可以用作MapReduce的输入。
https://www.cnblogs.com/staryea/p/8603112.html
2)案例实操
(1)需要启动yarn进程
start-yarn.sh
(2)归档文件
归档成一个叫做xxx.har的文件夹,该文件夹下有相应的数据文件。Xx.har目录是一个整体,该目录看成是一个归档文件即可。
用法:hadoop archive -archiveName 归档名称 -p 父目录 [-r <复制因子>] 原路径(可以多个) 目的路径
bin/ hadoop archive -archiveName foo.har -p /Andy -r 3 a b c /
(3)查看归档
hadoop fs -lsr /user/my/myhar.har
hadoop fs -lsr har:///myhar.har
(4)解归档文件
取消存档:hadoop fs -cp har:/// user/my/myhar.har /* /user/itstar
并行解压缩:hadoop distcp har:/foo.har /001
***********************************************************************************
3)自己操练:
(1)在HDFS的/目录下创建文件夹:liu hadoop fs -mkdir /liu
(2)在/opt/目录下(当前目录)创建a b c三个文件: touch a b c ./
(3)再将a b c这三个文件上传到HDFS的/liu目录下。hadoop fs -put a b c /liu
(4)hadoop archive -archiveName foo.har -p /liu -r 3 a b c /
将HDFS上的/liu目录下的3个文件a b c 归档到一个文件夹foo.har中并放到 /目录下。
(5)解归档文件:
并行解压缩:hadoop distcp har:/foo.har /001
解压/目录下的foo.har文件到/目录下的001。
浙公网安备 33010602011771号