为啥HDFS写入速度如此之慢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥HDFS写入速度如此之慢相关的知识,希望对你有一定的参考价值。

参考技术A 问题太笼统,不好回答。怎么个慢法,什么系统设置,跑的什么东西?

文件以block为单位被写入hdfs,默认情况下一个block会被放在三台机器上。所以写入速度取决于内存,硬盘带宽以及网络带宽。就我的经验,这些参数都大致在100MB/s以上,就是1G文件5-10秒。所以如果你的写入速度是这样的,那就不慢。

如果速度远小于这个值,然后想找原因,那无非就是看瓶颈在哪里,这些带宽资源有没有被大家抢着用。你可以试试先跑些简单的程序,把dfs.replication设成1,这样说不定可以排除网络的因素。

为啥即使在源代码没有变化的情况下,Android Studio 重建项目的速度如此之慢?

【中文标题】为啥即使在源代码没有变化的情况下,Android Studio 重建项目的速度如此之慢?【英文标题】:Why Android Studio rebuilds project so slow even when no changes in sources?为什么即使在源代码没有变化的情况下,Android Studio 重建项目的速度如此之慢? 【发布时间】:2015-01-09 11:37:13 【问题描述】:

当我对源代码进行一些更改时,Android Studio(实际上是 gradle)需要重新构建项目。很明显。

即使我没有对项目进行任何更改,为什么第二次构建所需的时间与第一次构建几乎相同? 当我查看 GradleConsole 时,它​​会等待“assembleDubug”任务。我认为 gradle 应该知道没有任何变化,不应该在上面浪费太多时间。

【问题讨论】:

【参考方案1】:

这本身不是问题。它与Android Studio 无关,因为Gradle 只是一个帮助您构建项目的Android 插件。您需要完全了解 gradle 的作用,才能知道 Android Studio 为何在您运行应用程序时使用它。看看这个不错的 SO question on gradle 和 android developer website 的文章。最后,从我个人的经验来看,在处理 Android Studio 和 Eclipse 进行 Android 开发时,你需要有点耐心。希望这在某种程度上有所帮助。

【讨论】:

【参考方案2】:

gradle 控制台是否说 :app:assemeble UP-TO-DATE ?

如果您查看运行配置,您可能会注意到最底部的Before Launch: Gradle-aware Make

这只是告诉它在运行前重新编译(如有必要),但检测委托给 Gradle。 Gradle 只有在检测到它需要重新编译时才会真正重新编译,但 assemble 任务仍必须尝试运行以检测 UP-TO-DATEness。所以它说它正在运行它,但它实际上并没有做任何事情。当我连续运行两次时,第一次需要一段时间才能完成所有操作,但第二次它只是很快地通过任务列表(带有一堆 UP-TO-DATE)并部署到电话/模拟器。

【讨论】:

我希望 gradle 不会一直显示重复的黄色 UP-TO-DATE,因为我确实提供了 --offline【参考方案3】:

终于找到了解决办法:为gradle开启离线工作

或使用 CLI

./gradlew --offline assembleDebugOrWhatever

【讨论】:

【参考方案4】:

为了避免每次都重新构建,我将转到我的模块 项目设置 -> 依赖关系并向上或向下我的库项目之一 -> 应用 -> 确定 -> 重新生成 R.java。 您也可以尝试在编译器设置中取消选中“Use external build”:

文件 -> 设置 (Ctrl+Alt+S) -> 编译器 -> 取消选中“使用外部构建”

【讨论】:

在版本 3 上是否仍然存在? (没找到) 在版本 3 上是否仍然存在? (没找到)

以上是关于为啥HDFS写入速度如此之慢的主要内容,如果未能解决你的问题,请参考以下文章

为啥HDFS写入速度如此之慢

为啥 npm 安装速度这么慢?

为啥这两种变体之间的速度差异如此之大?

为啥带有“直接”(O_DIRECT)标志的 dd 速度如此之快?

写入 Linux 管道的速度比文件快,但在内核级别,为啥?

为啥在 C# 中的二维数组中按列写入速度很慢