【问题标题】:hadoop fs -du / gsutil du is running slow on GCPhadoop fs -du / gsutil du 在 GCP 上运行缓慢
【发布时间】:2018-02-19 04:46:16
【问题描述】:

我正在尝试获取 Google 存储桶中导向器的大小,但命令运行了很长时间。

我尝试过使用具有 24k 子目录和文件的 8TB 数据,大约需要 20~25 分钟,相反,HDFS 上的相同数据只需不到一分钟即可获得大小。

我用来获取大小的命令

  1. hadoop fs -du gs://mybucket

  2. gsutil du gs://mybucket

请建议我怎样才能更快地做到这一点。

【问题讨论】:

  • @tix 好像是重复的,除了我的问题是与 HDFS 的比较。我很想知道为什么存储桶的性能与 Dataproc 上的 HDFS 相比非常低。
  • HDFS 是一个真正的文件系统。 GCS 不是。它必须遍历存储桶中的每个对象并对其进行统计以计算存储桶大小。链接的答案建议启用访问日志作为提高性能的一种方式。
  • @KaustubhDeshpande 1) 您应该告诉我们您想要做什么,以便我们提供更好的解决方案。您需要实际数据集大小是否有原因?,2)gsutil -m du gs://mybucket 更快吗? -m 表示多线程,3)您是否尝试过使用 spark/hadoop 作业来更快地找到它?我敢打赌像sc.wholeTextFiles("gs://mybucket").keys.map(filename => fs.get(filename).size).collect().foldLeft(0)(_ + _) 这样的东西会起作用。另外:GCS 的延迟比集群上的 HDFS 高得多——比如 100 毫秒 vs

标签: google-cloud-platform google-cloud-storage google-cloud-dataproc


【解决方案1】:

12 几乎相同,因为 1 使用 GCS 连接器。

GCS 通过发出列表请求来计算使用量,如果您有大量对象,这可能需要很长时间。

本文建议设置Access Logs 来替代gsutil duhttps://cloud.google.com/storage/docs/working-with-big-data#data

但是,如果您打算对数据进行任何分析,您可能仍会产生相同的 20-25 分钟成本。来自 GCS Best Practices 指南:

对象中的正斜杠对 Cloud Storage 没有特殊意义, 因为没有本机目录支持。正因为如此,深深 使用斜线分隔符的嵌套目录式结构是可能的, 但不会有本机文件系统列表的性能深入 嵌套子目录。

假设您打算分析这些数据;您可能需要考虑使用 time hadoop distcp 对不同文件大小和 glob 表达式的提取性能进行基准测试。

【讨论】:

    猜你喜欢
    • 2022-10-02
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多