distcp 导致 HDFS 偏斜
distcp causing skewness in HDFS
我在 HDFS 中有一个文件夹(大小约为 2 TB),它是使用 Apache Spark 的 save
方法创建的。它几乎均匀分布在节点之间(我使用 hdfs fsck
检查了这一点)。
当我尝试 distcp
这个文件夹(集群内)和 运行 hdfs fsck
目标文件夹时,它被证明是高度倾斜的,也就是说,很少节点有很多块,而很少有节点上存储的块非常少。 HDFS 上的这种偏斜导致性能问题。
我们尝试使用 mv
将数据从源移动到目标(集群内),这次目标的偏度很好,也就是说,数据分布均匀。
使用distcp
时有什么方法可以减少HDFS的偏度吗?
distcp
中的映射器数量等于负载过重的节点数量。
所以我使用 -m
选项将 distcp
中的映射器数量增加到集群中存在的机器数量,并且输出的偏差要小得多。
一个额外的好处:distcp
工作完成的速度比以前快得多。
我在 HDFS 中有一个文件夹(大小约为 2 TB),它是使用 Apache Spark 的 save
方法创建的。它几乎均匀分布在节点之间(我使用 hdfs fsck
检查了这一点)。
当我尝试 distcp
这个文件夹(集群内)和 运行 hdfs fsck
目标文件夹时,它被证明是高度倾斜的,也就是说,很少节点有很多块,而很少有节点上存储的块非常少。 HDFS 上的这种偏斜导致性能问题。
我们尝试使用 mv
将数据从源移动到目标(集群内),这次目标的偏度很好,也就是说,数据分布均匀。
使用distcp
时有什么方法可以减少HDFS的偏度吗?
distcp
中的映射器数量等于负载过重的节点数量。
所以我使用 -m
选项将 distcp
中的映射器数量增加到集群中存在的机器数量,并且输出的偏差要小得多。
一个额外的好处:distcp
工作完成的速度比以前快得多。