温州seo结算,东营网站关键词优化,Wordpress登录后顶部的黑,网站建设需要的服务器1 概览 DistCp#xff08;Distributed Copy#xff09;是用于大规模集群内部或者集群之间的高性能拷贝工具。 它使用Map/Reduce实现文件分发#xff0c;错误处理和恢复#xff0c;以及报告生成。 它把文件和目录的列表作为map任务的输入#xff0c;每个任务会完成源列表中…1 概览 DistCpDistributed Copy是用于大规模集群内部或者集群之间的高性能拷贝工具。 它使用Map/Reduce实现文件分发错误处理和恢复以及报告生成。 它把文件和目录的列表作为map任务的输入每个任务会完成源列表中部分文件的拷贝 备注在工作中遇到部门间数据合作夸不同集群版本或者同版本不同集群的数据copy是不同的。 2 实用 总体来说分两类 1 同版本集群间数据copy 2 夸集群版本数据copy 同版本集群间数据copy 比如拷贝A集群nn1的IP192.168.7.120的A目录到B集群nn2的IP192.168.8.120的B1目录 1 hadoop distcp hdfs://192.168.7.120:8020/cluster/A/ hdfs://192.168.8.120:8020/cluster/B1/ 小结 a) 使用hdfs协议其中192.168.7.120是A集群的namenode地址 8020是A集群的rpc端口hdfs-site.xml中可查看。192.168.8.120是B集群的namenode IP地址 b) 这条命令会将A集群中的/A文件夹以及文件夹下的文件复制到B集群中的/B1目录下即在B集群中会以/B1/A的目录结构出现。如果/B1目录不存在则系统会新建一个。需要注意的是源路径必须是绝对路径。包含前面的hdfs//ipport 添加多个数据源指定多个源目录 如 1 hadoop distcp hdfs:
2
3 //192.168.7.120:8020/cluster/A/a1 hdfs://192.168.7.120:8020/A/a2 hdfs://192.168.8.120:8020/cluster/B1/ 或者使用-f选项从文件里获得多个源 hadoop distcp -f hdfs://192.168.7.120:8020/src_A_list hdfs://192.168.8.120:8020/cluster/B1/ 其中src_A_list 的内容是 hdfs://192.168.7.120:8020/cluster/A/a1 hdfs://192.168.7.120:8020/cluster/A/a2 当从多个源拷贝时如果两个源冲突distcp会停止拷贝并提示出错信息 如果在目的位置发生冲突会根据选项设置解决。 默认情况会跳过已经存在的目标文件c处说明比如不用源文件做替换操作。每次操作结束时 都会报告跳过的文件数目但是如果某些拷贝操作失败了但在之后的尝试成功了 那么报告的信息可能不够精确。 每个JobTracker必须都能够与源端和目的端文件系统进行访问和交互。 拷贝完成后建议生成源端和目的端文件的列表并交叉检查来确认拷贝真正成功。 因为distcp使用Map/Reduce和文件系统API进行操作所以这三者或它们之间有任何问题 可能影响拷贝。 值得注意的是当另一个客户端同时在向源文件写入时拷贝很有可能会失败。 尝试覆盖HDFS上正在被写入的文件的操作也会失败。 如果一个源文件在拷贝之前被移动或删除了拷贝失败同时输出异常 FileNotFoundException。 c) 默认情况下虽然distcp会跳过在目标路径上已经存在的文件但是通过-overwirte选项可以选择对这些文件进行覆盖重写也可以使用-update选项仅对更新过的文件进行重写。 实战案例 案例要求 从/cluster/A1/ 和 /cluster/A2/ 到 /cluster/B1的拷贝,源路径包括hdfs://192.168.7.120:8020/cluster/A1hdfs://192.168.7.120:8020/cluster/A1/a1hdfs://192.168.7.120:8020/cluster/A1/a2hdfs://192.168.7.120:8020/cluster/A2hdfs://192.168.7.120:8020/cluster/A2/a3hdfs://192.168.7.120:8020/cluster/A2/a1 如果没设置-update或 -overwrite选项 那么两个源都会映射到目标端的 /cluster/B1/A1A2。 如果设置了这两个选项每个源目录的内容都会和目标目录的 内容 做比较。distcp碰到这类冲突的情况会终止操作并退出。默认情况下/cluster/B1/A1 和 /cluster/B1/A2 目录都会被创建所以并不会有冲突。现在讲-update用法:
distcp -update hdfs://192.168.7.120:8020/cluster/A1 \ hdfs://192.168.7.120:8020/cluster/A2 \ hdfs://192.168.8.120:8020/cluster/B1其中源路径/大小:hdfs://192.168.7.120:8020/cluster/A1 hdfs://192.168.7.120:8020/cluster/A1/a1 32 hdfs://192.168.7.120:8020/cluster/A1/a2 64 hdfs://192.168.7.120:8020/cluster/A2 hdfs://192.168.7.120:8020/cluster/A2/a3 64 hdfs://192.168.7.120:8020/cluster/A2/a4 32和目的路径/大小:hdfs://192.168.8.120:8020/cluster/B1 hdfs://192.168.8.120:8020/cluster/B1/a1 32 hdfs://192.168.8.120:8020/cluster/B1/a2 32 hdfs://192.168.8.120:8020/cluster/B1/a3 128会产生:hdfs://192.168.8.120:8020/cluster/B1 hdfs://192.168.8.120:8020/cluster/B1/a1 32 hdfs://192.168.8.120:8020/cluster/B1/a2 32 hdfs://192.168.8.120:8020/cluster/B1/a3 64hdfs://192.168.8.120:8020/cluster/A2/a4 32发现部分192.168.8.120的a2文件没有被覆盖(a3却覆盖)。如果指定了 -overwrite选项所有文件都会被覆盖。 d) distcp操作有很多选项可以设置比如忽略失败、限制文件或者复制的数据量等。直接输入指令或者不附加选项则可以查看此操作的使用说明。 附件distcp可以选配的参数 夸集群版本数据copy hadoop distcp hftp://192.168.7.120:50070/cluster/A/ hdfs://192.168.8.120:8020/cluster/B1需要注意的是要定义访问源的URI中NameNode的网络接口这个接口会通过dfs.namenode.http-address的属性值设定默认值为50070 参考hdfs-site.xml: 3 实战出现的问题总结 aipc.StandbyException : //s.apache.org/sbnn-error 解决 Dfs所链接的namenode的状态不是active的 处于standby状态不予链接所以方法换一个namenode, 保证新的namenode是active b) java.io.IOException:Check-sum mismatch 分析该问题很常见能在网上查到是因为不同版本hadoop 的checksum版本不同老版本用crc32,新版本用crc32c 解决只要在distcp时增加两个参数-skipcrccheck -update忽略crc检查即可。注意-skipcrccheck参数要与-update同时使用才生效。 c) java.net.UnknowHostException 原因分析图中可以看到distcp job已经启动了map 0%, 但是报了UnknowHostException:pslaves55可能的原因是在从datanode取数据时用的是host pslave55, 而这个host是数据源集群特有的目标集群不识别所以报UnknowHostException. 解决办法在目标集群中配置hosts文件将数据源集群中所有的host和ip的对应关系追加到目标集群中的hosts文件中使得目标集群在访问host名时如pslave55能成功映射到ip 4 总结 要实现跨集群拷贝如拷贝A集群的数据到B集群需要确认以下事情 1确认B集群机器都能ping通A集群所有ip。 2 用的port 响应在各自节点上放开 iptables 不要“拦住” 3如果部门间的端口防火墙已经开通但还是telnet不同请确认A集群的iptables已经加入了B集群ip。 4如果在B集群有UnknowHostException则需要将A集群的host与ip映射关系追加到B集群的hosts文件中。 附上常用端口port 对照 其他配置参考官方 http://hadoop.apache.org/docs/r2.7.6/hadoop-distcp/DistCp.html 转载于:https://www.cnblogs.com/jagel-95/p/10945317.html