我们有许多distcp作业将数据从主群集复制到备份群集。这些作业全天运行,并复制几乎所有关键数据库表。我们在这里使用webhdfs。
其中一些作业需要运行数小时(对于表(ORC格式的表)而言)非常大。有什么方法可以优化两个集群之间的distcp操作。 欢迎任何建议。
我们尝试使用带宽来加快速度。下面是我们脚本的摘录。
PROP =“-Dmapreduce.task.timeout = 300000 -Dmapred.job.queue.name = $ YARN_QUEUE -Dmapred.job.name =” cpy-$ {jobName}“-带宽800”
hadoop distcp $ {PROP} $ 1 WEBHDFS:// $ DESTNAMENODE $ 2 >> $ 3 2>&1
答案 0 :(得分:0)
调整distcp性能时通常要看的三件事;
'-m'选项将允许您指定使用的映射任务的数量,可以说是同时复制的最大数量。尝试运行几次副本,然后逐渐增加该数量,以查看最适合您的方案的副本。
您可以使用“策略动态”标志运行DistCp作业,该标志将“动态”显示大小映射,从而使速度更快或响应速度更快的节点可以复制速度较慢或繁忙的节点更多的数据。您可以在DistCp手册中阅读有关此内容的更多信息。
看起来您已经尝试过“ -bandwidth”选项,但是我想在这里提及它,因为它绝对是一个重要因素。如果您的网络允许,请尝试进一步增加此设置。