CDH-distcp

一、OVERVIEW

就是让在集群1中认证的主体可以访问集群2中的服务
trips:

1. 2个集群的realm的名字必须不同,realm名要唯一

https://superuser.com/questions/1465073/how-to-enable-trust-between-two-kdcs-with-same-kerberos-realm-and-same-domain-n

2. distcpConf目录下必须含有yarn-site.xml和mapred-site.xml,否则会报cant get master kerberos principal,生产中的z4节点没有yarn的gateway,所以z4的/etc/hadoop/conf中也没有yarn-site.xml和mapred-site.xml。解决方法有2个,从别的节点复制这些配文或者给z4加个yarn的gateway。

3. distcp会自动创建目的地不存在的目录,但会把最后一级目录当成文件名。如果加-overwrite参数,则最后一级会当做目录,文件名从源集群取。

hadoop distcp /distcp-test/* hdfs://192.168.233.106/distp-test2/dist-cp-test3/
#	目标目录distp-test2/会自动创建,而下一级的dist-cp-test3/会当成文件名

在这里插入图片描述

hadoop distcp -overwrite  /distcp-test/* hdfs://192.168.233.106/distp-test2/dist-cp-test4/

在这里插入图片描述

4. 传闻2个CDH版本差距过大就不能同时用hdfs协议,一个用hdfs一个用webhdfs

在这里插入图片描述

二、配置kerberos互信

1.在2个集群中分别创建2个krbtgt的主体

kadmin.local
addprinc -e "des3-hmac-sha1:normal des-cbc-crc:normal" krbtgt/XYYH.COM@XYYH2.COM
addprinc -e "des3-hmac-sha1:normal des-cbc-crc:normal" krbtgt/XYYH2.COM@XYYH.COM

2. 在源、目标2个集群分别配置krb5.conf

[realm]添加realm

在这里插入图片描述

[domain_realm]中添加自己和要互信的集群的所有主机名和realm的映射。同时配置为任务域名都能映射(添加一条前面带点的条目)

在这里插入图片描述

[capaths]中添加

在这里插入图片描述

分发到所有节点

3. 在/etc/hosts中添加自己和对方的 ip -> 主机名 -> 别名 映射

在这里插入图片描述
分发到所有节点
如果只配了NN上的hosts,则有可能会报错:对方的主机名找不到

4.CM配置

添加收信人的kerberos realm
添加kv对

在这里插入图片描述
在这里插入图片描述

5.创建接受数据的目录,在hdfs上

6.创建HA配置文件

用应用用户登陆源集群的工具节点(有hdfs、hive、yarn的gateway)

mkdir /cib/distcpConf
cd /cib/distcpConf
cp /etc/hadoop/conf/* ./

用应用用户登陆目标集群的工具节点(有hdfs、hive、yarn的gateway),

vim /etc/hadoop/conf/hdfs-site.xml

复制如下属性粘贴在源集群的distcpConf目录下的hdfs-ste.xml中
在这里插入图片描述

7.验证

hadoop --config /distcpConf distcp
-Dmapreduce.job.hdfs-servers.token-renewal.exclude=nameservice2
-overwrite -delete
源目录(可设多个)
hdfs://nameservice2:8020/目标目录

此时,在源集群认证的用户,在目标集群也可以得到认证的Ticket cache

三、distcp的语法

自动创建目录
可以多源对一目,如果源不存在,则会报错终止执行

1. args

distcp [OPTIONS] <srcurl> * <desturl>

选项:
-p [rbugp]             状态

                       r:复制数

                       b:块大小

                       u:用户

                       g:组

                       p:权限

                       t:修改和访问时间

                       -p单独相当于-prbugpt

-i                     忽略失败

-basedir <basedir><srcurl>复制文件时,使用<basedir>作为基本目录

-log <logdir>          将日志写入<logdir>

-m <num_maps>          最大并发副本数

-overwrite             覆盖目的地

-update                如果src大小与dst大小不同,则覆盖

-skipcrccheck          不要使用CRC检查来确定src是否是 不同于dest。

-copybychunk           剁碎和复制的文件

-f <urilist_uri><urilist_uri>中的列表用作src列表

-filelimit <n>         将文件的总数限制为<= n

-filelimitpermap <n>   每个地图要复制的最大文件数

-sizelimit <n>         将总大小限制为<= n个字节

-sizelimitpermap <n>   每个映射要复制的最大字节数

-delete                删除dst中存在的文件,但不在src中
					   注:很有用的参数,可以保证dst目录和src目录一致,比如传输hive的数据文件时,
					   有的文件名中有随机数字导致每次的结果文件都不一样,此时用这个参数,可以避免每次都追加

-mapredSslConf <f>     映射器任务的SSL配置文件名

-usefastcopy           使用FastCopy(仅适用于DFS)



注1:如果设置了-overwrite或-update,则每个源URI和目标URI保持同级一致。

例如:

hadoop distcp -p -update hdfs://A:9000//home/aa  hdfs://B:9000//home/bb



支持的通用选项是

-conf <configuration file>指定应用程序配置文件

-D <property = value>给定属性的使用值

-fs <local | namenode:port>指定一个namenode

-jt <local | jobtracker:port>指定jobtracker在corona上

-jtold <local | jobtracker:port>指定jobtracker在mapreduce上

-files <逗号分隔的文件列表>指定要复制到map reduce cluster的逗号分隔文件

-libjars <逗号分隔的jars列表> 指定要包含在类路径中的逗号分隔的jar文件。

-archives <逗号分隔的归档列表> 指定要在计算机上取消归档的逗号分隔的归档。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值