当前位置: 首页 > 知识库问答 >
问题:

spark 是否优化了广播变量的网络流量?

艾宏远
2023-03-14

知道Spark每个工作节点使用多个执行器,并且每个执行器都在自己的JVM中运行,我想知道Spark /if如何优化广播变量的流量。希望它为每个工作节点进行一次下载,然后将已经序列化的数据发送到该特定节点上的执行器。另一种选择是每次执行器需要时下载广播数据(因此必须在特定节点上多次下载相同的数据)。

共有1个答案

金英华
2023-03-14

是的,Spark确实使用种子广播优化了广播。引用消息来源

* A BitTorrent-like implementation of [[org.apache.spark.broadcast.Broadcast]].
*
* The mechanism is as follows:
*
* The driver divides the serialized object into small chunks and
* stores those chunks in the BlockManager of the driver.
*
* On each executor, the executor first attempts to fetch the object from its BlockManager. If
* it does not exist, it then uses remote fetches to fetch the small chunks from the driver and/or
* other executors if available. Once it gets the chunks, it puts the chunks in its own
* BlockManager, ready for other executors to fetch from.
*
* This prevents the driver from being the bottleneck in sending out multiple copies of the
* broadcast data (one per executor).

过去有另一种广播实现(HTTP广播),但在2.0中完全删除了。

 类似资料:
  • 当我这样做时,我得到了一个java.lang.ClassCastException:不能将Scala.some实例分配给org.apache.spark.accumulator实例中scala.option类型的字段org.apache.spark.accumulable.name与硬编码ArrayBuffer相同的代码工作得很好,所以我假设它与静态文件资源有关...有人知道我可能做错了什么吗?任

  • 一、简介 在 Spark 中,提供了两种类型的共享变量:累加器 (accumulator) 与广播变量 (broadcast variable): 累加器:用来对信息进行聚合,主要用于累计计数等场景; 广播变量:主要用于在节点间高效分发大对象。 二、累加器 这里先看一个具体的场景,对于正常的累计求和,如果在集群模式中使用下面的代码进行计算,会发现执行结果并非预期: var counter = 0

  • 我目前正在使用自定义JWT身份验证进行SpringCloudGateway。身份验证后,我希望使用GlobalFilter将标头中的JWT令牌字符串传递到下游服务: JWT令牌字符串可以通过调用主体来获得。getName(); 我的问题是:我如何实现

  • 在使用KafkaSpout和几个Bolt开发并执行了我的Storm(1.0.1)拓扑之后,我注意到即使拓扑处于空闲状态,也会出现巨大的网络流量(Kafka上没有消息,Bolt中没有处理)。因此,我开始逐一评论我的拓扑结构,以便找到原因,现在我的主要内容中只有Kafka普特: 当这个(无用的)拓扑执行时,即使是在本地模式下,即使是第一次,流量总是会增长很多:我看到了(在我的活动监视器中) 平均每秒接

  • 问题内容: 这是我要尝试的操作-服务器向网络上的所有PC和已启动并正在运行的PC发送“活动消息”,并通过发送其IP来响应呼叫。 我正在看一段轻量级的代码,因为这将构成我的应用程序的一小部分。 我查看了Jini和其他服务,但发现我可能甚至不需要一半的功能(网络发现除外) 是否可以:1.在服务器打开套接字的地方使用for循环,通过发送“活动”消息检查(使用for循环)是否所有IP xxxx均可访问。2

  • 问题内容: 我可以在Java监视程序上创建网络流量吗?该程序必须控制从计算机程序(包括OS模块)到网络驱动程序再返回的所有网络流量。如果是,如何? 注意: 我不仅要监视流量,还要对其进行控制。我想在Windows NT上实现这样的系统。仅靠Java无法实现它。如何在JNI的帮助下执行它? 也许是另一个变体。我不熟悉Windows服务,但仍然如此。我将在C 上编写一个程序并将其注册为Windows服