为什么 Spark 在字数统计时速度很快? [复制]

2024-04-15

测试用例:Spark 在 20 秒以上对 6G 数据进行字数统计。

我明白映射减少, FP and stream编程模型,但无法弄清楚字数统计的速度如此惊人。

我认为这种情况下是I/O密集型计算,不可能在20秒以上扫描6G文件。我猜想在字数统计之前会执行索引,就像 Lucene 那样。魔法应该在RDD(弹性分布式数据集)我不太理解的设计。

如果有人能解释我很感激RDD对于字数统计的情况。谢谢!


首先是启动时间。 Hadoop MapReduce 作业启动需要启动多个单独的 JVM,速度并不快。 Spark 作业启动(在现有 Spark 集群上)会导致现有 JVM 分叉新任务线程,这比启动 JVM 快数倍

接下来,没有索引,也没有魔法。 6GB 文件存储在 47 个块中,每个块 128MB。想象一下,您有一个足够大的 Hadoop 集群,所有这 47 个 HDFS 块都驻留在不同的 JBOD HDD 上。它们中的每一个都将为您提供 70 MB/秒的扫描速率,这意味着您可以在大约 2 秒内读取此数据。通过集群中的 10GbE 网络,您只需 7 秒即可将所有这些数据从一台计算机传输到另一台计算机。

最后,Hadoop 多次将中间数据放入磁盘。它把map至少一次输出到磁盘(如果地图输出很大并且发生磁盘合并,则输出更多次)。下次将数据写入磁盘reduce之前的一侧reduce本身被执行。 Spark 在运行期间仅将数据写入 HDD 一次shuffle阶段,参考 Spark 实现建议增加文件系统写入缓存,以免此“随机”数据命中磁盘

与 Hadoop 相比,所有这些都为 Spark 带来了巨大的性能提升。 Spark RDD 中没有与此问题相关的魔法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Spark 在字数统计时速度很快? [复制] 的相关文章

随机推荐

  • 打造 ecto 独一无二的领域

    如何制作一个字段unique在体外 我以为它和Ruby中的活动记录一样 但似乎不是 你想使用唯一约束 3 http hexdocs pm ecto Ecto Changeset html unique constraint 3 这与 Act
  • 如果 MySQL 中的行不存在,则添加到该行

    当向表中添加一行时 但首先检查它是否存在哪种处理方法最有效 是否是查询是否存在的情况 如果不存在则插入 或者重复使用 或者简单地替换 如果该行不存在 这会起作用 吗 Thanks 我认为这是 MySQL 中最快的方法 REPLACE int
  • 不可变类型:公共最终字段与 getter

    我需要一个小的容器类来存储一些应该不可变的字符串 由于 String 本身是不可变类型 所以我想到了类似的东西 public final class Immu public final String foo public final Str
  • 从 airodump-ng 读取实时输出

    当我执行命令 airodump ng mon0 gt gt output txt 时 output txt 为空 我需要能够运行 airodump ng mon0 并在大约 5 秒后停止该命令 然后才能访问其输出 有什么想法我应该从哪里开始
  • 如何以良好的格式结果格式化 python 列表

    我有很多列表 如下所示 通过打印data并将其与字符串连接起来check str如下最后一条语句所示 需要帮助以在字符串连接后更好地格式化列表值 如预期所示 print data printing lists in this variabl
  • 图像上的文本没有绝对位置

    我正在尝试在页面中间的图像上放置一些文本 我看到一个这样的例子 img src image png p p p p
  • 在 docker 容器上保存配置

    我创建了 2 个 docker 容器 并尝试在 ubuntu debian 上安装一些应用程序和一些软件包 如 mc ping traceroute 但每当我退出容器时 我都会丢失其中的所有内容 是否有任何 docker 命令可以保存我的配
  • 从具有特定模式的 txt 文件创建 Pandas DataFrame

    我需要基于以下结构的文本文件创建一个 Pandas DataFrame Alabama edit Auburn Auburn University 1 Florence University of North Alabama Jackson
  • .NET Framework 全局程序集缓存在哪里?

    我安装了 VS2010 和 NET 4 0 然后编译了一个程序集并使用可用的 exe 运行 gacutil ProgramFiles Microsoft SDKs Windows v7 0A Bin NETFX 4 0 Tools 可执行文
  • 如何在 R 中重新格式化表格?

    我加载了一个这样的表 V1 V2 V3 pat1 1 2 pat1 3 1 pat1 4 2 pat2 3 3 pat3 1 4 pat3 2 3 我需要将其格式化为如下所示 其中 V1 表示行 V2 表示列 V3 中的值 1 2 3 4
  • Android 中未接来电的广播接收器

    有谁知道未接来电的意图是什么 实际上 我想在我的应用程序中发送有关未接来电和来电的短信 您需要使用 ContentObserver public class MissedCallsContentObserver extends Conten
  • fork 后调试子进程(配置了 follow-fork-mode 子进程)

    我正在开发一个应用程序 父级分叉子级来处理某些任务 我遇到一个问题 我已将 gdb 配置为 follow fork mode 子级 但在 fork 后 到达断点后 它发送 SIGTRAP 但子级以某种方式终止并向父级发送 SIGCHLD 我
  • 数据表行切换选项

    我的问题 我正在开发一个与 DataTableJS 相关的项目 我需要一个行分组功能 它与分组行分开 只是我想在下面的切换中显示相关的表行内容城市名 我到底在寻找什么 我的演示代码 document ready function var t
  • Swagger 无法生成 HTTP“PATCH”的文档

    我已遵循以下内容博客条目 http kingsfleet blogspot co uk 2014 02 transparent patch support in jax rs 20 html http Transparent 20PATCH
  • 在 htaccess 文件中使用公用文件夹时的多种语言

    我有这个 htacces文件我很喜欢它 但是如何向它添加多语言 所以它明白localhost en 不是文件或文件夹 现在它使用公共文件夹作为 根 所以localhost public 如果我想这样做 那太好了 我仍然使用公共文件夹作为根目
  • JetBrains(IntelliJ、PhpStorm、WebStorm ...)带有 SSH 密钥的私有 git 存储库

    我的新 Web 服务器需要使用 RSA 2048 密钥进行身份验证 因此我生成了一个密钥 我将ir rsa and id rsa pub我的主文件夹中的文件 ssh Windows 10 但是当我使用 cvs 注释 用于拉或推 时 我收到错
  • 通过查找按组快速 data.table 分配多列

    我一直在寻找规范的方法来完成我正在尝试的事情 但我似乎不太幸运地获得快速而优雅的工作 简而言之 我有一个包含多个值列的大表 并且希望将每个值乘以查找表中的相应因子 我不知道如何动态传递我想要乘以查找值的列 或者如何在基本表达式之外引用查找值
  • C语言中如何清空数组?

    char x 1000 x hello 我会用什么来清除内容x 我无法重新初始化它 请使用strcpy x 0 or free 您不能将任何内容分配给您的变量数组x是 因此 任何以x 是错的 第二 hello 不是字符串 它是一个多字符文字
  • Google Analytics 3.0 身份验证流程

    EDIT 最初这个问题问我如何仅使用我的 API 密钥通过 Google Analytics API 进行身份验证 作为弗拉特科指出 https stackoverflow com a 13834210 697449 这是不可能的 现在我只
  • 为什么 Spark 在字数统计时速度很快? [复制]

    这个问题在这里已经有答案了 测试用例 Spark 在 20 秒以上对 6G 数据进行字数统计 我明白映射减少 FP and stream编程模型 但无法弄清楚字数统计的速度如此惊人 我认为这种情况下是I O密集型计算 不可能在20秒以上扫描