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 版权协议,转载请附上原文出处链接和本声明。