[hadoop]数据迁移|判断文件|修改副本数|清理垃圾

  • Post author:
  • Post category:其他


1.数据迁移

hadoop distcp -Dmapreduce.job.queuename=hive2 
hdfs://ip1:8020/user/hive/warehouse/test.db/t1 
hdfs://ip2:8020/user/hive/warehouse/test.db/

ip1表示从哪里导入,ip2表示导入到哪里。

如果这条命令在ip1所在的节点运行则为ip1向ip2推送数据,此时用的是ip1的资源.

如果这条命令运行在ip2所在节点则为ip2从ip1拉取数据,此时用的是ip2的资源.

注意:ip为NameNode的内网ip.

增量同步用到的参数

-i 忽略错误

-update -append(已存在文件增量同步):如果同名文件的大小/block块大小/校验和相同则跳过.否则目标文件大小小于源文件,则说明对源文件进行了新的写操作,则计算源文件对应目标文件大小的校验和,如果源文件对应长度的校验和与目标文件的校验和完全一致,则表明源文件多出的数据是新写入的,前面的数据没有变动,支持append追加写.如果校验和发生了变化,则说明源文件前面部分的数据发生了变动,则会进行overwrite覆盖写.

设置队列

-Dmapreduce.job.queuename=hive2 设置yarn队列为hive2

注:

如何分辨多个distcp进程,ps -aux 查看脚本名

当你用脚本跑distcp的过程中,你用ctrl+c杀死了这个脚本,但是当前进行的表还是在跑,因为它已经被发布到yarn上了,你能做的只是等着这张表结束。

2.判断文件类型(不可用)

-test -[defsz] <path> :
-d return 0 if <path> is a directory
-f return 0 if <path> is a file
-e return 0 if <path> exsits
-s return 0 if file <path> is greater than zero bytes in size.
-r return 0 if file <path> is zero bytes in size,else return 1.

3.修改副本数

假如原来的副本数为3,后来修改成了2.则新的副本数设置对已经写到hdfs的文件没有影响,只对新写的有影响.如果需要将原来的副本数修改为2,则可以手动设置.-R表示递归.

[root@cdh1 java]# hdfs dfs -du -h /user/hive/warehouse/
386.3 G  1.1 T    /user/hive/warehouse/xx.db
59.4 M   118.8 M  /user/hive/warehouse/xxx.db

su hdfs--要切换到hdfs用户
hdfs dfs -setrep -R 2 /user/hive/warehouse

结果
hdfs  dfs -du -h /user/hive/warehouse/
386.3 G  772.7 G  /user/hive/warehouse/xx.db
59.4 M   118.8 M  /user/hive/warehouse/xxx.db

4.清理hdfs垃圾

[root@hadoop1 ~]# hdfs dfs -du -h /user/root/.Trash/Current/
8.1 T  16.2 T  /user/root/.Trash/Current/user
hdfs dfs  -rm -r .Trash



版权声明:本文为qq_35896718原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。